X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6bbd334480935bcb47955797fa1f18cd8d9b21a8..f536e0f24b3bf8358a5e1cb960267d5a3abe5071:/include/wx/msw/winundef.h diff --git a/include/wx/msw/winundef.h b/include/wx/msw/winundef.h index 59d8d7a35a..356bb06ab1 100644 --- a/include/wx/msw/winundef.h +++ b/include/wx/msw/winundef.h @@ -9,167 +9,258 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// +/* THIS SHOULD NOT BE USED since you might include it once e.g. in window.h, + * then again _AFTER_ you've included windows.h, in which case it won't work + * a 2nd time -- JACS #ifndef _WX_WINUNDEF_H_ #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. +// ---------------------------------------------------------------------------- // GetCharWidth #ifdef GetCharWidth - #undef GetCharWidth + #undef GetCharWidth + inline BOOL GetCharWidth(HDC dc, UINT first, UINT last, LPINT buffer) + { + #ifdef _UNICODE + return GetCharWidthW(dc, first, last, buffer); + #else + return GetCharWidthA(dc, first, last, buffer); + #endif + } #endif -inline BOOL GetCharWidth(HDC dc, UINT first, UINT last, LPINT buffer) -{ -#ifdef _UNICODE - return GetCharWidthW(dc, first, last, buffer); -#else - return GetCharWidthA(dc, first, last, buffer); -#endif -} - // FindWindow #ifdef FindWindow - #undef FindWindow -#endif - -#ifdef _UNICODE -inline HWND FindWindow(LPCWSTR classname, LPCWSTR windowname) -{ - return FindWindowW(classname, windowname); -} -#else -inline HWND FindWindow(LPCSTR classname, LPCSTR windowname) -{ - return FindWindowA(classname, windowname); -} + #undef FindWindow + #ifdef _UNICODE + inline HWND FindWindow(LPCWSTR classname, LPCWSTR windowname) + { + return FindWindowW(classname, windowname); + } + #else + inline HWND FindWindow(LPCSTR classname, LPCSTR windowname) + { + return FindWindowA(classname, windowname); + } + #endif #endif // GetClassName #ifdef GetClassName - #undef GetClassName -#endif - -#ifdef _UNICODE -inline int GetClassName(HWND h, LPWSTR classname, int maxcount) -{ - return GetClassNameW(h, classname, maxcount); -} -#else -inline int GetClassName(HWND h, LPSTR classname, int maxcount) -{ - return GetClassNameA(h, classname, maxcount); -} + #undef GetClassName + #ifdef _UNICODE + inline int GetClassName(HWND h, LPWSTR classname, int maxcount) + { + return GetClassNameW(h, classname, maxcount); + } + #else + inline int GetClassName(HWND h, LPSTR classname, int maxcount) + { + return GetClassNameA(h, classname, maxcount); + } + #endif #endif // GetClassInfo #ifdef GetClassInfo - #undef GetClassInfo -#endif - -#ifdef _UNICODE -inline BOOL GetClassInfo(HINSTANCE h, LPCWSTR name, LPWNDCLASSW winclass) -{ - return GetClassInfoW(h, name, winclass); -} -#else -inline BOOL GetClassInfo(HINSTANCE h, LPCSTR name, LPWNDCLASSA winclass) -{ - return GetClassInfoA(h, name, winclass); -} + #undef GetClassInfo + #ifdef _UNICODE + inline BOOL GetClassInfo(HINSTANCE h, LPCWSTR name, LPWNDCLASSW winclass) + { + return GetClassInfoW(h, name, winclass); + } + #else + inline BOOL GetClassInfo(HINSTANCE h, LPCSTR name, LPWNDCLASSA winclass) + { + return GetClassInfoA(h, name, winclass); + } + #endif #endif // LoadAccelerators #ifdef LoadAccelerators - #undef LoadAccelerators + #undef LoadAccelerators + #ifdef _UNICODE + inline HACCEL LoadAccelerators(HINSTANCE h, LPCWSTR name) + { + return LoadAcceleratorsW(h, name); + } + #else + inline HACCEL LoadAccelerators(HINSTANCE h, LPCSTR name) + { + return LoadAcceleratorsA(h, name); + } + #endif #endif -#ifdef _UNICODE -inline HACCEL LoadAccelerators(HINSTANCE h, LPCWSTR name) -{ - return LoadAcceleratorsW(h, name); -} -#else -inline HACCEL LoadAccelerators(HINSTANCE h, LPCSTR name) -{ - return LoadAcceleratorsA(h, name); -} +// DrawText + +#ifdef DrawText + #undef DrawText + #ifdef _UNICODE + inline int DrawText(HDC h, LPCWSTR str, int count, LPRECT rect, UINT format) + { + return DrawTextW(h, str, count, rect, format); + } + #else + inline int DrawText(HDC h, LPCSTR str, int count, LPRECT rect, UINT format) + { + return DrawTextA(h, str, count, rect, format); + } + #endif #endif +// StartDoc -// GetWindowProc... this isn't a Windows API function?!?! -//ifdef GetWindowProc -// #undef GetWindowProc -//endif +#ifdef StartDoc + #undef StartDoc + #ifdef __GNUWIN32__ + #define DOCINFOW DOCINFO + #define DOCINFOA DOCINFO + #endif + #ifdef _UNICODE + inline int StartDoc(HDC h, CONST DOCINFOW* info) + { + return StartDocW(h, info); + } + #else + inline int StartDoc(HDC h, CONST DOCINFOA* info) + { + return StartDocA(h, info); + } + #endif +#endif +// GetObject -// DrawText +#ifdef GetObject + #undef GetObject + inline int GetObject(HGDIOBJ h, int i, LPVOID buffer) + { + #ifdef _UNICODE + return GetObjectW(h, i, buffer); + #else + return GetObjectA(h, i, buffer); + #endif + } +#endif -#ifdef DrawText - #undef DrawText +// GetMessage + +#ifdef GetMessage + #undef GetMessage + inline int GetMessage(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax) + { + #ifdef _UNICODE + return GetMessageW(lpMsg, hWnd, wMsgFilterMin, wMsgFilterMax); + #else + return GetMessageA(lpMsg, hWnd, wMsgFilterMin, wMsgFilterMax); + #endif + } #endif -#ifdef _UNICODE -inline int DrawText(HDC h, LPCWSTR str, int count, LPRECT rect, UINT format) -{ - return DrawTextW(h, str, count, rect, format); -} -#else -inline int DrawText(HDC h, LPCSTR str, int count, LPRECT rect, UINT format) -{ - return DrawTextA(h, str, count, rect, format); -} +// LoadLibrary + +#ifdef LoadLibrary + #undef LoadLibrary + inline HINSTANCE LoadLibrary(LPCTSTR lpLibFileName) + { + #ifdef _UNICODE + return LoadLibraryW(lpLibFileName); + #else + return LoadLibraryA(lpLibFileName); + #endif + } #endif -// StartDoc +// IsMaximized -#ifdef StartDoc - #undef StartDoc +#ifdef IsMaximized + #undef IsMaximized + inline BOOL IsMaximized(HWND hwnd) + { + return IsZoomed(hwnd); + } #endif -#ifdef _UNICODE -inline int StartDoc(HDC h, CONST DOCINFOW* info) -{ - return StartDocW(h, info); -} -#else -inline int StartDoc(HDC h, CONST DOCINFOA* info) -{ - return StartDocA(h, info); -} +// GetFirstChild + +#ifdef GetFirstChild + #undef GetFirstChild + inline HWND GetFirstChild(HWND hwnd) + { + return GetTopWindow(hwnd); + } #endif -// GetFirstChild... not a Windows API Function!?!?! -//ifdef GetFirstChild -// #undef GetFirstChild -//endif +// GetPrevSibling -//ifdef GetNextChild -// #undef GetNextChild -//endif +#ifdef GetPrevSibling + #undef GetPrevSibling + inline HWND GetPrevSibling(HWND hwnd) + { + return GetWindow(hwnd,GW_HWNDPREV); + } +#endif -//ifdef GetNextSibling -// #undef GetNextSibling -//endif +// GetNextSibling -// GetObject +#ifdef GetNextSibling + #undef GetNextSibling + inline HWND GetNextSibling(HWND hwnd) + { + return GetWindow(hwnd,GW_HWNDNEXT); + } +#endif -#ifdef GetObject - #undef GetObject +// For WINE + +#if defined(GetWindowStyle) || defined(__WXWINE__) + #undef GetWindowStyle +#endif + +// For ming and cygwin + +// GetFirstChild +#ifdef GetFirstChild + #undef GetFirstChild + inline HWND GetFirstChild(HWND h) + { + return GetTopWindow(h); + } +#endif + + +// GetNextSibling +#ifdef GetNextSibling + #undef GetNextSibling + inline HWND GetNextSibling(HWND h) + { + return GetWindow(h, GW_HWNDNEXT); + } #endif -inline int GetObject(HGDIOBJ h, int i, LPVOID buffer) -{ -#ifdef _UNICODE - return GetObjectW(h, i, buffer); -#else - return GetObjectA(h, i, buffer); -#endif -} +// GetWindowProc +//ifdef GetWindowProc +// #undef GetWindowProc +//endif +//ifdef GetNextChild +// #undef GetNextChild +//endif + +// #endif // _WX_WINUNDEF_H_ -#endif // _WX_WINUNDEF_H_