Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

154 lines
3.7 KiB

// stdafx.cpp : source file that includes just the standard includes
// stdafx.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"
#ifdef _ATL_STATIC_REGISTRY
#include <statreg.h>
#include <statreg.cpp>
#endif
#include <atlimpl.cpp>
HRESULT LoadImages(IImageList* pImageList)
{
HRESULT hr = E_FAIL;
HBITMAP hBitmap16 = LoadBitmap( _Module.GetResourceInstance(), MAKEINTRESOURCE(IDB_Small) );
if (hBitmap16 != NULL)
{
HBITMAP hBitmap32 = LoadBitmap( _Module.GetResourceInstance(), MAKEINTRESOURCE(IDB_Large) );
if (hBitmap32 != NULL)
{
hr = pImageList->ImageListSetStrip( reinterpret_cast<LONG_PTR*>( hBitmap16 ), reinterpret_cast<LONG_PTR*>( hBitmap32 ), 0, RGB(255, 0, 255));
}
}
return hr;
}
tstring StrLoadString(UINT uID)
{
tstring strRet = _T("");
HINSTANCE hInst = _Module.GetResourceInstance();
INT iSize = MAX_PATH;
TCHAR* psz = new TCHAR[iSize];
if( !psz ) return strRet;
while( LoadString(hInst, uID, psz, iSize) == (iSize - 1) )
{
iSize += MAX_PATH;
delete[] psz;
psz = NULL;
psz = new TCHAR[iSize];
if( !psz ) return strRet;
}
strRet = psz;
delete[] psz;
return strRet;
}
void StrGetEditText( HWND hWndParent, UINT uID, tstring& strRet )
{
if( !hWndParent ||
!IsWindow(hWndParent) )
{
strRet = _T("");
return;
}
INT iLen = SendDlgItemMessage( hWndParent, uID, WM_GETTEXTLENGTH, 0, 0 );
TCHAR* pszText = new TCHAR[ iLen + 1 ];
if( !pszText )
{
strRet = _T("");
return;
}
GetDlgItemText( hWndParent, uID, pszText, iLen + 1 );
strRet = pszText;
SecureZeroMemory( pszText, sizeof(TCHAR)*(iLen + 1) );
delete[] pszText;
}
void DisplayError(HWND hWnd, LPCTSTR pszMessage, LPCTSTR pszTitle, HRESULT hrErr )
{
LPVOID lpMsgBuf = NULL;
tstring strMessage = pszMessage;
if ( ::FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
hrErr,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR)&lpMsgBuf,
0,
NULL ))
{
strMessage += (LPTSTR)lpMsgBuf;
LocalFree( lpMsgBuf );
}
else
{
tstring strTemp = StrLoadString( IDS_ERROR_UNSPECIFIED );
strMessage += strTemp;
}
// Output the Messagebox
::MessageBox( hWnd, strMessage.c_str(), pszTitle, MB_OK | MB_ICONWARNING );
}
BOOL Prefix_EnableWindow( HWND hDlg, UINT uCtrlID, BOOL bEnable )
{
if ((NULL == hDlg) || !IsWindow( hDlg ))
return FALSE;
HWND h = 0;
if (uCtrlID)
{
h = GetDlgItem( hDlg, uCtrlID );
if( !h || !::IsWindow(h) )
return FALSE;
}
else
h = hDlg;
return ::EnableWindow( h, bEnable );
}
BOOL IsAdmin()
{
// Verify Permissions
PSID psid = NULL;
SID_IDENTIFIER_AUTHORITY sia = SECURITY_NT_AUTHORITY;
BOOL bRet = AllocateAndInitializeSid( &sia,
2,
SECURITY_BUILTIN_DOMAIN_RID,
DOMAIN_ALIAS_RID_ADMINS,
0, 0, 0, 0, 0, 0,
&psid);
if( !bRet )
{
return FALSE;
}
else if( !psid )
{
return FALSE;
}
if( !CheckTokenMembership(NULL, psid, &bRet) )
{
return FALSE;
}
FreeSid( psid );
return bRet;
}