// 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_