]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/msw/window.h
signned/unsigned fix
[wxWidgets.git] / include / wx / msw / window.h
index feccccf607618e70d3ed80bca35e6685c614cf20..28045117b73efebb22dce95d3fbe821cb250f68b 100644 (file)
@@ -86,6 +86,7 @@ public:
     virtual bool Enable( bool enable = TRUE );
 
     virtual void SetFocus();
     virtual bool Enable( bool enable = TRUE );
 
     virtual void SetFocus();
+    virtual void SetFocusFromKbd();
 
     virtual bool Reparent(wxWindowBase *newParent);
 
 
     virtual bool Reparent(wxWindowBase *newParent);
 
@@ -98,6 +99,7 @@ public:
     virtual void Freeze();
     virtual void Thaw();
 
     virtual void Freeze();
     virtual void Thaw();
 
+    virtual void SetWindowStyleFlag( long style );
     virtual bool SetCursor( const wxCursor &cursor );
     virtual bool SetFont( const wxFont &font );
 
     virtual bool SetCursor( const wxCursor &cursor );
     virtual bool SetFont( const wxFont &font );
 
@@ -169,13 +171,6 @@ public:
     wxWindow* GetWindowChild(wxWindowID id);
 #endif // __WXUNIVERSAL__
 
     wxWindow* GetWindowChild(wxWindowID id);
 #endif // __WXUNIVERSAL__
 
-    // a MSW only function which sends a size event to the window using its
-    // current size - this has an effect of refreshing the window layout
-/*
-FUNCTION IS NOW A MEMBER OF wxFrame - gt
-    void SendSizeEvent();
-*/
-
     // implementation from now on
     // --------------------------
 
     // implementation from now on
     // --------------------------
 
@@ -209,18 +204,38 @@ public:
     WXFARPROC MSWGetOldWndProc() const { return m_oldWndProc; }
     void MSWSetOldWndProc(WXFARPROC proc) { m_oldWndProc = proc; }
 
     WXFARPROC MSWGetOldWndProc() const { return m_oldWndProc; }
     void MSWSetOldWndProc(WXFARPROC proc) { m_oldWndProc = proc; }
 
+    // return TRUE if the window is of a standard (i.e. not wxWindows') class
+    //
+    // to understand why does it work, look at SubclassWin() code and comments
+    bool IsOfStandardClass() const { return m_oldWndProc != NULL; }
+
     wxWindow *FindItem(long id) const;
     wxWindow *FindItemByHWND(WXHWND hWnd, bool controlOnly = FALSE) const;
 
     // Make a Windows extended style from the given wxWindows window style
     static WXDWORD MakeExtendedStyle(long style,
                                      bool eliminateBorders = FALSE);
     wxWindow *FindItem(long id) const;
     wxWindow *FindItemByHWND(WXHWND hWnd, bool controlOnly = FALSE) const;
 
     // Make a Windows extended style from the given wxWindows window style
     static WXDWORD MakeExtendedStyle(long style,
                                      bool eliminateBorders = FALSE);
+
     // Determine whether 3D effects are wanted
     WXDWORD Determine3DEffects(WXDWORD defaultBorderStyle, bool *want3D) const;
 
     // MSW only: TRUE if this control is part of the main control
     virtual bool ContainsHWND(WXHWND WXUNUSED(hWnd)) const { return FALSE; };
 
     // Determine whether 3D effects are wanted
     WXDWORD Determine3DEffects(WXDWORD defaultBorderStyle, bool *want3D) const;
 
     // MSW only: TRUE if this control is part of the main control
     virtual bool ContainsHWND(WXHWND WXUNUSED(hWnd)) const { return FALSE; };
 
+    // translate wxWindows style flags for this control into the Windows style
+    // and optional extended style for the corresponding native control
+    //
+    // this is the function that should be overridden in the derived classes,
+    // but you will mostly use MSWGetCreateWindowFlags() below
+    virtual WXDWORD MSWGetStyle(long flags, WXDWORD *exstyle = NULL) const;
+
+    // get the MSW window flags corresponding to wxWindows ones
+    //
+    // the functions returns the flags (WS_XXX) directly and puts the ext
+    // (WS_EX_XXX) flags into the provided pointer if not NULL
+    WXDWORD MSWGetCreateWindowFlags(WXDWORD *exflags = NULL) const
+        { return MSWGetStyle(GetWindowStyle(), exflags); }
+
     // translate wxWindows coords into Windows ones suitable to be passed to
     // ::CreateWindow()
     //
     // translate wxWindows coords into Windows ones suitable to be passed to
     // ::CreateWindow()
     //
@@ -230,6 +245,9 @@ public:
                                   int& x, int& y,
                                   int& w, int& h) const;
 
                                   int& x, int& y,
                                   int& w, int& h) const;
 
+    // get the HWND to be used as parent of this window with CreateWindow()
+    virtual WXHWND MSWGetParent() const;
+
     // creates the window of specified Windows class with given style, extended
     // style, title and geometry (default values
     //
     // creates the window of specified Windows class with given style, extended
     // style, title and geometry (default values
     //
@@ -332,7 +350,7 @@ public:
     bool HandleQueryNewPalette();
     bool HandleSysColorChange();
     bool HandleDisplayChange();
     bool HandleQueryNewPalette();
     bool HandleSysColorChange();
     bool HandleDisplayChange();
-
+    bool HandleCaptureChanged(WXHWND gainedCapture);
 
     bool HandleQueryEndSession(long logOff, bool *mayEnd);
     bool HandleEndSession(bool endSession, long logOff);
 
     bool HandleQueryEndSession(long logOff, bool *mayEnd);
     bool HandleEndSession(bool endSession, long logOff);
@@ -409,7 +427,7 @@ protected:
     bool                  m_useCtl3D:1; // Using CTL3D for this control
     bool                  m_backgroundTransparent:1;
     bool                  m_mouseInWindow:1;
     bool                  m_useCtl3D:1; // Using CTL3D for this control
     bool                  m_backgroundTransparent:1;
     bool                  m_mouseInWindow:1;
-    bool                  m_doubleClickAllowed:1;
+    bool                  m_lastKeydownProcessed:1;
 
     // the size of one page for scrolling
     int                   m_xThumbSize;
 
     // the size of one page for scrolling
     int                   m_xThumbSize;
@@ -437,7 +455,7 @@ protected:
 
     virtual void DoCaptureMouse();
     virtual void DoReleaseMouse();
 
     virtual void DoCaptureMouse();
     virtual void DoReleaseMouse();
-    
+
     // 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
     // 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
@@ -446,10 +464,17 @@ protected:
 
 #if wxUSE_TOOLTIPS
     virtual void DoSetToolTip( wxToolTip *tip );
 
 #if wxUSE_TOOLTIPS
     virtual void DoSetToolTip( wxToolTip *tip );
+
+    // process TTN_NEEDTEXT message properly (i.e. fixing the bugs in
+    // comctl32.dll in our code -- see the function body for more info)
+    bool HandleTooltipNotify(WXUINT code,
+                             WXLPARAM lParam,
+                             const wxString& ttip);
 #endif // wxUSE_TOOLTIPS
 
     // the helper functions used by HandleChar/KeyXXX methods
 #endif // wxUSE_TOOLTIPS
 
     // the helper functions used by HandleChar/KeyXXX methods
-    wxKeyEvent CreateKeyEvent(wxEventType evType, int id, WXLPARAM lp) const;
+    wxKeyEvent CreateKeyEvent(wxEventType evType, int id,
+                              WXLPARAM lParam = 0, WXWPARAM wParam = 0) const;
 
 private:
     // common part of all ctors
 
 private:
     // common part of all ctors