]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/msw/window.h
Link with bufferoverflowu.lib for VC++ 8 and later
[wxWidgets.git] / include / wx / msw / window.h
index 39ba4694f7dc873430b6fa0931e669a53588edfb..bfd3cc190f8a6dcdcd505d1ed2c9d349a3128885 100644 (file)
 #ifndef _WX_WINDOW_H_
 #define _WX_WINDOW_H_
 
-// ---------------------------------------------------------------------------
-// headers
-// ---------------------------------------------------------------------------
-
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-    #pragma interface "window.h"
-#endif
-
-// [at least] some version of Windows send extra mouse move messages after
-// a mouse click or a key press - to temporarily fix this problem, set the
-// define below to 1
-//
-// a better solution should be found later...
-#define wxUSE_MOUSEEVENT_HACK 0
-
 // ---------------------------------------------------------------------------
 // constants
 // ---------------------------------------------------------------------------
@@ -166,6 +151,9 @@ public:
     void AssociateHandle(WXWidget handle);
     void DissociateHandle();
 
+    // does this window have deferred position and/or size?
+    bool IsSizeDeferred() const;
+
 
     // implementation from now on
     // ==========================
@@ -431,13 +419,6 @@ protected:
     int                   m_xThumbSize;
     int                   m_yThumbSize;
 
-#if wxUSE_MOUSEEVENT_HACK
-    // the coordinates of the last mouse event and the type of it
-    long                  m_lastMouseX,
-                          m_lastMouseY;
-    int                   m_lastMouseEvent;
-#endif // wxUSE_MOUSEEVENT_HACK
-
     // implement the base class pure virtuals
     virtual void DoClientToScreen( int *x, int *y ) const;
     virtual void DoScreenToClient( int *x, int *y ) const;
@@ -455,6 +436,14 @@ protected:
     // has the window been frozen by Freeze()?
     bool IsFrozen() const { return m_frozenness > 0; }
 
+    // this simply moves/resizes the given HWND which is supposed to be our
+    // sibling (this is useful for controls which are composite at MSW level
+    // and for which DoMoveWindow() is not enough)
+    //
+    // returns true if the window move was deferred, false if it was moved
+    // immediately (no error return)
+    bool DoMoveSibling(WXHWND hwnd, int x, int y, int width, int height);
+
     // move the window to the specified location and resize it: this is called
     // from both DoSetSize() and DoSetClientSize() and would usually just call
     // ::MoveWindow() except for composite controls which will want to arrange
@@ -480,6 +469,11 @@ protected:
     // the background, false otherwise (i.e. the system should erase it)
     bool DoEraseBackground(WXHDC hDC);
 
+    // generate WM_UPDATEUISTATE if it's needed for the OS we're running under
+    //
+    // the parameter should be one of UIS_XXX constants
+    void MSWUpdateUIState(int action);
+
 private:
     // common part of all ctors
     void Init();