X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c455ab932f89cc166fc38d3f2c2f942f6a130649..72594e90b2da8c167ba63b89b2c168c57a19cab4:/include/wx/msw/winundef.h?ds=sidebyside

diff --git a/include/wx/msw/winundef.h b/include/wx/msw/winundef.h
index 4a56ddeb49..3e6653c834 100644
--- a/include/wx/msw/winundef.h
+++ b/include/wx/msw/winundef.h
@@ -9,10 +9,21 @@
 // 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
 
@@ -117,19 +128,19 @@
 
 #ifdef StartDoc
    #undef StartDoc
-   #ifdef __MINGW32__
+   #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
@@ -148,6 +159,7 @@
    }
 #endif
 
+// GetMessage
 
 #ifdef GetMessage
    #undef GetMessage
@@ -161,6 +173,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__)
@@ -196,4 +281,5 @@
 //    #undef GetNextChild
 //endif
 
-#endif // _WX_WINUNDEF_H_
+// #endif // _WX_WINUNDEF_H_
+