]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/utils.cpp
wxWindow::Fit() infinite loop bug fixed
[wxWidgets.git] / src / msw / utils.cpp
index 3dc34fdc7e5556f4549575c754c3b6d2dbc6817b..c9c1d5b68a25991c22dbae05d7d7735386f18994 100644 (file)
@@ -35,7 +35,7 @@
 
 #include <ctype.h>
 
-#if !defined(__GNUWIN32__) && !defined(__SALFORDC__)
+#if !defined(__GNUWIN32__) && !defined(__WXWINE__) && !defined(__SALFORDC__)
 #include <direct.h>
 
 #ifndef __MWERKS__
@@ -56,7 +56,7 @@
 #include <dir.h>
 #endif
 
-#ifdef __WIN32__
+#if defined(__WIN32__) && !defined(__WXWINE__)
 #include <io.h>
 
 #ifndef __GNUWIN32__
@@ -534,11 +534,11 @@ bool wxGetResource(const wxString& section, const wxString& entry, int *value, c
 #endif // wxUSE_RESOURCES
 
 // ---------------------------------------------------------------------------
-// helper functiosn for showing a "busy" cursor
+// helper functions for showing a "busy" cursor
 // ---------------------------------------------------------------------------
 
-extern HCURSOR gs_wxBusyCursor = 0;     // new, busy cursor
-static HCURSOR gs_wxBusyCursorOld = 0;  // old cursor
+HCURSOR gs_wxBusyCursor = 0;     // new, busy cursor
+HCURSOR gs_wxBusyCursorOld = 0;  // old cursor
 static int gs_wxBusyCursorCount = 0;
 
 // Set the cursor to the busy cursor for all windows
@@ -645,7 +645,7 @@ char *wxGetUserHome (const wxString& user)
         if ((home = getenv("TMP")) != NULL ||
             (home = getenv("TMPDIR")) != NULL ||
             (home = getenv("TEMP")) != NULL)
-            return *home ? home : "\\";
+            return *home ? home : (char*)"\\";
       }
       if (Stricmp(tmp, WXSTRINGCAST user1) == 0)
         user1 = "";
@@ -796,6 +796,10 @@ bool wxDirExists(const wxString& dir)
 #endif
 }
 
+// ---------------------------------------------------------------------------
+// window information functions
+// ---------------------------------------------------------------------------
+
 wxString WXDLLEXPORT wxGetWindowText(WXHWND hWnd)
 {
     wxString str;
@@ -806,6 +810,58 @@ wxString WXDLLEXPORT wxGetWindowText(WXHWND hWnd)
     return str;
 }
 
+wxString WXDLLEXPORT wxGetWindowClass(WXHWND hWnd)
+{
+    wxString str;
+
+    int len = 256; // some starting value
+
+    for ( ;; )
+    {
+        // as we've #undefined GetClassName we must now manually choose the
+        // right function to call
+        int count =
+
+        #ifndef __WIN32__
+            GetClassName
+        #else // Win32
+            #ifdef UNICODE
+                GetClassNameW
+            #else // !Unicode
+                #ifdef __TWIN32__
+                    GetClassName
+                #else // !Twin32
+                    GetClassNameA
+                #endif // Twin32/!Twin32
+            #endif // Unicode/ANSI
+        #endif // Win16/32
+                                    ((HWND)hWnd, str.GetWriteBuf(len), len);
+
+        str.UngetWriteBuf();
+        if ( count == len )
+        {
+            // the class name might have been truncated, retry with larger
+            // buffer
+            len *= 2;
+        }
+        else
+        {
+            break;
+        }
+    }
+
+    return str;
+}
+
+WXWORD WXDLLEXPORT wxGetWindowId(WXHWND hWnd)
+{
+#ifndef __WIN32__
+    return GetWindowWord((HWND)hWnd, GWW_ID);
+#else // Win32
+    return GetWindowLong((HWND)hWnd, GWL_ID);
+#endif // Win16/32
+}
+
 #if 0
 //------------------------------------------------------------------------
 // wild character routines