]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/utilsgui.cpp
use a linked list instead of array for saved messages to fix problems when Dispatch...
[wxWidgets.git] / src / msw / utilsgui.cpp
index c009e4eebdb282a830366016cffc3d929e70233f..c49738c79656c1f3c0f16cefcf4397ca10166862 100644 (file)
@@ -6,7 +6,7 @@
 // Created:     21.06.2003 (extracted from msw/utils.cpp)
 // RCS-ID:      $Id$
 // Copyright:   (c) Julian Smart
-// License:     wxWindows license
+// License:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 // ============================================================================
@@ -26,6 +26,7 @@
 
 #ifndef WX_PRECOMP
     #include "wx/cursor.h"
+    #include "wx/window.h"
     #include "wx/utils.h"
 #endif //WX_PRECOMP
 
@@ -43,7 +44,7 @@
 #if wxUSE_RESOURCES
 bool wxWriteResource(const wxString& section, const wxString& entry, const wxString& value, const wxString& file)
 {
-  if (file != wxT(""))
+  if (file != wxEmptyString)
 // Don't know what the correct cast should be, but it doesn't
 // compile in BC++/16-bit without this cast.
 #if !defined(__WIN32__)
@@ -82,23 +83,24 @@ bool wxWriteResource(const wxString& section, const wxString& entry, int value,
 bool wxGetResource(const wxString& section, const wxString& entry, wxChar **value, const wxString& file)
 {
     static const wxChar defunkt[] = wxT("$$default");
-    if (file != wxT(""))
+
+    wxChar buf[1024];
+    if (file != wxEmptyString)
     {
-        int n = GetPrivateProfileString((LPCTSTR)WXSTRINGCAST section, (LPCTSTR)WXSTRINGCAST entry, (LPCTSTR)defunkt,
-                (LPTSTR)wxBuffer, 1000, (LPCTSTR)WXSTRINGCAST file);
-        if (n == 0 || wxStrcmp(wxBuffer, defunkt) == 0)
-            return FALSE;
+        int n = GetPrivateProfileString(section, entry, defunkt,
+                                        buf, WXSIZEOF(buf), file);
+        if (n == 0 || wxStrcmp(buf, defunkt) == 0)
+            return false;
     }
     else
     {
-        int n = GetProfileString((LPCTSTR)WXSTRINGCAST section, (LPCTSTR)WXSTRINGCAST entry, (LPCTSTR)defunkt,
-                (LPTSTR)wxBuffer, 1000);
-        if (n == 0 || wxStrcmp(wxBuffer, defunkt) == 0)
-            return FALSE;
+        int n = GetProfileString(section, entry, defunkt, buf, WXSIZEOF(buf));
+        if (n == 0 || wxStrcmp(buf, defunkt) == 0)
+            return false;
     }
     if (*value) delete[] (*value);
-    *value = copystring(wxBuffer);
-    return TRUE;
+    *value = wxStrcpy(new wxChar[wxStrlen(buf) + 1], buf);
+    return true;
 }
 
 bool wxGetResource(const wxString& section, const wxString& entry, float *value, const wxString& file)
@@ -109,9 +111,9 @@ bool wxGetResource(const wxString& section, const wxString& entry, float *value,
     {
         *value = (float)wxStrtod(s, NULL);
         delete[] s;
-        return TRUE;
+        return true;
     }
-    else return FALSE;
+    else return false;
 }
 
 bool wxGetResource(const wxString& section, const wxString& entry, long *value, const wxString& file)
@@ -122,9 +124,9 @@ bool wxGetResource(const wxString& section, const wxString& entry, long *value,
     {
         *value = wxStrtol(s, NULL, 10);
         delete[] s;
-        return TRUE;
+        return true;
     }
-    else return FALSE;
+    else return false;
 }
 
 bool wxGetResource(const wxString& section, const wxString& entry, int *value, const wxString& file)
@@ -135,9 +137,9 @@ bool wxGetResource(const wxString& section, const wxString& entry, int *value, c
     {
         *value = (int)wxStrtol(s, NULL, 10);
         delete[] s;
-        return TRUE;
+        return true;
     }
-    else return FALSE;
+    else return false;
 }
 #endif // wxUSE_RESOURCES
 
@@ -182,7 +184,7 @@ void wxEndBusyCursor()
     }
 }
 
-// TRUE if we're between the above two calls
+// true if we're between the above two calls
 bool wxIsBusy()
 {
   return gs_wxBusyCursorCount > 0;
@@ -192,7 +194,7 @@ bool wxIsBusy()
 // in long calculations.
 bool wxCheckForInterrupt(wxWindow *wnd)
 {
-    wxCHECK( wnd, FALSE );
+    wxCHECK( wnd, false );
 
     MSG msg;
     while ( ::PeekMessage(&msg, GetHwndOf(wnd), 0, 0, PM_REMOVE) )
@@ -201,7 +203,7 @@ bool wxCheckForInterrupt(wxWindow *wnd)
         ::DispatchMessage(&msg);
     }
 
-    return TRUE;
+    return true;
 }
 
 // MSW only: get user-defined resource from the .res file.
@@ -257,12 +259,12 @@ void wxGetMousePosition( int* x, int* y )
     if ( y ) *y = pt.y;
 };
 
-// Return TRUE if we have a colour display
+// Return true if we have a colour display
 bool wxColourDisplay()
 {
 #ifdef __WXMICROWIN__
     // MICROWIN_TODO
-    return TRUE;
+    return true;
 #else
     // this function is called from wxDC ctor so it is called a *lot* of times
     // hence we optimize it a bit but doign the check only once
@@ -332,7 +334,7 @@ void wxDisplaySizeMM(int *width, int *height)
 
 void wxClientDisplayRect(int *x, int *y, int *width, int *height)
 {
-#if defined(__WIN16__) || defined(__WXMICROWIN__)
+#if defined(__WXMICROWIN__)
     *x = 0; *y = 0;
     wxDisplaySize(width, height);
 #else
@@ -359,8 +361,7 @@ wxString WXDLLEXPORT wxGetWindowText(WXHWND hWnd)
     if ( hWnd )
     {
         int len = GetWindowTextLength((HWND)hWnd) + 1;
-        ::GetWindowText((HWND)hWnd, str.GetWriteBuf(len), len);
-        str.UngetWriteBuf();
+        ::GetWindowText((HWND)hWnd, wxStringBuffer(str, len), len);
     }
 
     return str;
@@ -378,9 +379,8 @@ wxString WXDLLEXPORT wxGetWindowClass(WXHWND hWnd)
 
         for ( ;; )
         {
-            int count = ::GetClassName((HWND)hWnd, str.GetWriteBuf(len), len);
+            int count = ::GetClassName((HWND)hWnd, wxStringBuffer(str, len), len);
 
-            str.UngetWriteBuf();
             if ( count == len )
             {
                 // the class name might have been truncated, retry with larger
@@ -400,11 +400,7 @@ wxString WXDLLEXPORT wxGetWindowClass(WXHWND hWnd)
 
 WXWORD WXDLLEXPORT wxGetWindowId(WXHWND hWnd)
 {
-#ifndef __WIN32__
-    return (WXWORD)GetWindowWord((HWND)hWnd, GWW_ID);
-#else // Win32
     return (WXWORD)GetWindowLong((HWND)hWnd, GWL_ID);
-#endif // Win16/32
 }
 
 // ----------------------------------------------------------------------------
@@ -441,4 +437,18 @@ extern void HIMETRICToPixel(LONG *x, LONG *y)
     *y /= (iHeightMM * 100);
 }
 
+void wxDrawLine(HDC hdc, int x1, int y1, int x2, int y2)
+{
+#ifdef __WXWINCE__
+    POINT points[2];
+    points[0].x = x1;
+    points[0].y = y1;
+    points[1].x = x2;
+    points[1].y = y2;
+    Polyline(hdc, points, 2);
+#else
+    MoveToEx(hdc, x1, y1, NULL); LineTo((HDC) hdc, x2, y2);
+#endif
+}
+