X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/25889d3c43f537fea00a2b7d6df7bd7e63e113f8..c2bbeff0048b6f02bf1ef41edc6c7a3ce148f907:/include/wx/msw/winundef.h diff --git a/include/wx/msw/winundef.h b/include/wx/msw/winundef.h index ac2fa36577..af1cc51108 100644 --- a/include/wx/msw/winundef.h +++ b/include/wx/msw/winundef.h @@ -16,7 +16,47 @@ #define _WX_WINUNDEF_H_ */ -// windows.h #defines the following identifiers which are also used in wxWin +// ---------------------------------------------------------------------------- +// windows.h #defines the following identifiers which are also used in wxWin so +// we replace these symbols with the corresponding inline functions and +// undefine the macro. +// +// This looks quite ugly here but allows us to write clear (and correct!) code +// elsewhere because the functions, unlike the macros, respect the scope. +// ---------------------------------------------------------------------------- + +// CreateDialog + +#ifdef CreateDialog + #undef CreateDialog + + inline HWND CreateDialog(HINSTANCE hInstance, + LPCTSTR pTemplate, + HWND hwndParent, + DLGPROC pDlgProc) + { + #ifdef _UNICODE + return CreateDialogW(hInstance, pTemplate, hwndParent, pDlgProc); + #else + return CreateDialogA(hInstance, pTemplate, hwndParent, pDlgProc); + #endif + } +#endif + +// LoadMenu + +#ifdef LoadMenu + #undef LoadMenu + + inline HMENU LoadMenu(HINSTANCE instance, LPCTSTR name) + { + #ifdef _UNICODE + return LoadMenuW(instance, name); + #else + return LoadMenuA(instance, name); + #endif + } +#endif // GetCharWidth @@ -49,6 +89,23 @@ #endif #endif +// PlaySound + +#ifdef PlaySound + #undef PlaySound + #ifdef _UNICODE + inline BOOL PlaySound(LPCWSTR pszSound, HMODULE hMod, DWORD fdwSound) + { + return PlaySoundW(pszSound, hMod, fdwSound); + } + #else + inline BOOL PlaySound(LPCSTR pszSound, HMODULE hMod, DWORD fdwSound) + { + return PlaySoundA(pszSound, hMod, fdwSound); + } + #endif +#endif + // GetClassName #ifdef GetClassName @@ -117,23 +174,36 @@ #endif #endif + +/* + When this file is included, sometimes the wxCHECK_W32API_VERSION macro + is undefined. With for example CodeWarrior this gives problems with + the following code: + #if 0 && wxCHECK_W32API_VERSION( 0, 5 ) + Because CodeWarrior does macro expansion before test evaluation. + We define wxCHECK_W32API_VERSION here if it's undefined. +*/ +#if !defined(__GNUG__) && !defined(wxCHECK_W32API_VERSION) + #define wxCHECK_W32API_VERSION(maj, min) (0) +#endif + // StartDoc #ifdef StartDoc #undef StartDoc - #ifdef __GNUWIN32__ + #if defined( __GNUG__ ) && !wxCHECK_W32API_VERSION( 0, 5 ) #define DOCINFOW DOCINFO #define DOCINFOA DOCINFO #endif #ifdef _UNICODE inline int StartDoc(HDC h, CONST DOCINFOW* info) { - return StartDocW(h, info); + return StartDocW(h, (DOCINFOW*) info); } #else inline int StartDoc(HDC h, CONST DOCINFOA* info) { - return StartDocA(h, info); + return StartDocA(h, (DOCINFOA*) info); } #endif #endif @@ -152,6 +222,7 @@ } #endif +// GetMessage #ifdef GetMessage #undef GetMessage @@ -165,6 +236,79 @@ } #endif +// LoadLibrary + +#ifdef LoadLibrary + #undef LoadLibrary + #ifdef _UNICODE + inline HINSTANCE LoadLibrary(LPCWSTR lpLibFileName) + { + return LoadLibraryW(lpLibFileName); + } + #else + inline HINSTANCE LoadLibrary(LPCSTR lpLibFileName) + { + return LoadLibraryA(lpLibFileName); + } + #endif +#endif + +// FindResource +#ifdef FindResource + #undef FindResource + #ifdef _UNICODE + inline HRSRC FindResource(HMODULE hModule, LPCWSTR lpName, LPCWSTR lpType) + { + return FindResourceW(hModule, lpName, lpType); + } + #else + inline HRSRC FindResource(HMODULE hModule, LPCSTR lpName, LPCSTR lpType) + { + return FindResourceA(hModule, lpName, lpType); + } + #endif +#endif + +// IsMaximized + +#ifdef IsMaximized + #undef IsMaximized + inline BOOL IsMaximized(HWND hwnd) + { + return IsZoomed(hwnd); + } +#endif + +// GetFirstChild + +#ifdef GetFirstChild + #undef GetFirstChild + inline HWND GetFirstChild(HWND hwnd) + { + return GetTopWindow(hwnd); + } +#endif + +// GetPrevSibling + +#ifdef GetPrevSibling + #undef GetPrevSibling + inline HWND GetPrevSibling(HWND hwnd) + { + return GetWindow(hwnd,GW_HWNDPREV); + } +#endif + +// GetNextSibling + +#ifdef GetNextSibling + #undef GetNextSibling + inline HWND GetNextSibling(HWND hwnd) + { + return GetWindow(hwnd,GW_HWNDNEXT); + } +#endif + // For WINE #if defined(GetWindowStyle) || defined(__WXWINE__) @@ -192,6 +336,11 @@ } #endif + +#ifdef Yield + #undef Yield +#endif + // GetWindowProc //ifdef GetWindowProc // #undef GetWindowProc