X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/debe6624c1e9d4bf3243381153d1e173c849bcd8..66de8e7a1be8a943d82838094acec88a34534566:/include/wx/msw/window.h diff --git a/include/wx/msw/window.h b/include/wx/msw/window.h index 47ef66082e..7573e0b6e2 100644 --- a/include/wx/msw/window.h +++ b/include/wx/msw/window.h @@ -9,8 +9,8 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifndef __WINDOWH__ -#define __WINDOWH__ +#ifndef _WX_WINDOW_H_ +#define _WX_WINDOW_H_ #ifdef __GNUG__ #pragma interface "window.h" @@ -25,6 +25,8 @@ #include "wx/event.h" #include "wx/string.h" #include "wx/list.h" +#include "wx/region.h" +#include "wx/msw/accel.h" #define wxKEY_SHIFT 1 #define wxKEY_CTRL 2 @@ -51,7 +53,7 @@ class WXDLLEXPORT wxCursor; class WXDLLEXPORT wxColourMap; class WXDLLEXPORT wxFont; class WXDLLEXPORT wxMenu; -class WXDLLEXPORT wxRectangle; +class WXDLLEXPORT wxRect; class WXDLLEXPORT wxBitmap; class WXDLLEXPORT wxSizer; class WXDLLEXPORT wxList; @@ -65,11 +67,11 @@ class WXDLLEXPORT wxIcon; class WXDLLEXPORT wxDC; class WXDLLEXPORT wxValidator; -#if USE_DRAG_AND_DROP -class wxDropTarget; +#if wxUSE_DRAG_AND_DROP +class WXDLLEXPORT wxDropTarget; #endif -#if USE_WX_RESOURCES +#if wxUSE_WX_RESOURCES class WXDLLEXPORT wxResourceTable; class WXDLLEXPORT wxItemResource; #endif @@ -83,7 +85,6 @@ class WXDLLEXPORT wxWindow: public wxEvtHandler { DECLARE_ABSTRACT_CLASS(wxWindow) - friend class wxUpdateIterator; friend class wxDC; friend class wxPaintDC; @@ -192,7 +193,7 @@ public: // Enable or disable the window virtual void Enable(bool enable); -#if USE_DRAG_AND_DROP +#if wxUSE_DRAG_AND_DROP // Associate a drop target with this window (if the window already had a drop // target, it's deleted!) and return the current drop target (may be NULL). void SetDropTarget(wxDropTarget *pDropTarget); @@ -202,6 +203,12 @@ public: // Accept files for dragging virtual void DragAcceptFiles(bool accept); + // Update region access + virtual wxRegion GetUpdateRegion() const; + virtual bool IsExposed(int x, int y, int w, int h) const; + virtual bool IsExposed(const wxPoint& pt) const; + virtual bool IsExposed(const wxRect& rect) const; + // Set/get the window title virtual inline void SetTitle(const wxString& WXUNUSED(title)) {}; inline virtual wxString GetTitle(void) const { return wxString(""); }; @@ -221,7 +228,7 @@ public: virtual bool PopupMenu(wxMenu *menu, int x, int y); // Send the window a refresh event - virtual void Refresh(bool eraseBack = TRUE, const wxRectangle *rect = NULL); + virtual void Refresh(bool eraseBack = TRUE, const wxRect *rect = NULL); #if WXWIN_COMPATIBILITY // Set/get scroll attributes @@ -240,7 +247,7 @@ public: virtual int GetScrollRange(int orient) const; virtual int GetScrollThumb(int orient) const; - virtual void ScrollWindow(int dx, int dy, const wxRectangle *rect = NULL); + virtual void ScrollWindow(int dx, int dy, const wxRect *rect = NULL); // Caret manipulation virtual void CreateCaret(int w, int h); @@ -288,7 +295,7 @@ public: inline bool GetDoubleClick(void) const; inline void AllowDoubleClick(bool value) { SetDoubleClick(value); } - // Old way to handle a control command + // Handle a control command virtual void OnCommand(wxWindow& win, wxCommandEvent& event); // Set/get event handler @@ -323,15 +330,6 @@ public: inline virtual void SetForegroundColour(const wxColour& col); inline virtual wxColour GetForegroundColour(void) const; - // TODO: are these really necessary??? - // Set/get window default background colour (for children to inherit) - inline virtual void SetDefaultBackgroundColour(const wxColour& col); - inline virtual wxColour GetDefaultBackgroundColour(void) const; - - // Set/get window default foreground colour (for children to inherit) - inline virtual void SetDefaultForegroundColour(const wxColour& col); - inline virtual wxColour GetDefaultForegroundColour(void) const; - // For backward compatibility inline virtual void SetButtonFont(const wxFont& font) { SetFont(font); } inline virtual void SetLabelFont(const wxFont& font) { SetFont(font); } @@ -342,14 +340,17 @@ public: inline virtual wxButton *GetDefaultItem(void) const; inline virtual void SetDefaultItem(wxButton *but); + virtual void SetAcceleratorTable(const wxAcceleratorTable& accel); + inline virtual wxAcceleratorTable& GetAcceleratorTable() const { return (wxAcceleratorTable&) m_acceleratorTable; } + // Override to define new behaviour for default action (e.g. double clicking // on a listbox) virtual void OnDefaultAction(wxControl *initiatingItem); // Resource loading -#if USE_WX_RESOURCES +#if wxUSE_WX_RESOURCES virtual bool LoadFromResource(wxWindow *parent, const wxString& resourceName, const wxResourceTable *table = NULL); - virtual wxControl *CreateItem(const wxItemResource *childResource, const wxResourceTable *table = NULL); + virtual wxControl *CreateItem(const wxItemResource* childResource, const wxItemResource* parentResource, const wxResourceTable *table = NULL); #endif // Native resource loading @@ -386,36 +387,27 @@ public: // Do Update UI processing for controls void UpdateWindowUI(void); - void OnSize(wxSizeEvent& event); void OnEraseBackground(wxEraseEvent& event); void OnChar(wxKeyEvent& event); void OnPaint(wxPaintEvent& event); void OnIdle(wxIdleEvent& event); -// virtual void OnChangeFocus(wxControl *from, wxControl *to); -// virtual bool OnFunctionKey(wxKeyEvent &event); - -/* -#if WXWIN_COMPATIBILITY - virtual void OldOnMenuSelect(int WXUNUSED(cmd)); - virtual void OldOnInitMenuPopup(int WXUNUSED(pos)); - virtual void OldOnScroll(wxCommandEvent& WXUNUSED(event)); - virtual void OldOnPaint(void); // Called when needs painting - virtual void OldOnSize(int width, int height); // Called on resize - virtual void OldOnMouseEvent(wxMouseEvent& event); // Called on mouse event - virtual void OldOnChar(wxKeyEvent& event); // Called on character event - virtual void OldOnMenuCommand(int cmd); // Dealt with properly in wxFrame - inline virtual void OldOnMove(int WXUNUSED(x), int WXUNUSED(y)); // Called on move - inline virtual void OldOnActivate(bool WXUNUSED(active)); // Called on window activation (MSW) - virtual void OldOnSetFocus(void); // Called on setting focus - virtual void OldOnKillFocus(void); // Called on killing focus -#endif -*/ + // Does this window want to accept keyboard focus? + virtual bool AcceptsFocus() const; + virtual void PrepareDC( wxDC &dc ) {}; public: //////////////////////////////////////////////////////////////////////// //// IMPLEMENTATION + // For implementation purposes - sometimes decorations make the client area + // smaller + virtual wxPoint GetClientAreaOrigin() const; + + // Makes an adjustment to the window position (for example, a frame that has + // a toolbar that it manages itself). + virtual void AdjustForParentClientOrigin(int& x, int& y, int sizeFlags); + // Windows subclassing void SubclassWin(WXHWND hWnd); void UnsubclassWin(void); @@ -473,6 +465,14 @@ public: virtual void GetClientSizeConstraint(int *w, int *h) const ; virtual void GetPositionConstraint(int *x, int *y) const ; + // Dialog units translations. Implemented in wincmn.cpp. + wxPoint ConvertPixelsToDialog(const wxPoint& pt) ; + wxPoint ConvertDialogToPixels(const wxPoint& pt) ; + inline wxSize ConvertPixelsToDialog(const wxSize& sz) + { wxPoint pt(ConvertPixelsToDialog(wxPoint(sz.x, sz.y))); return wxSize(pt.x, pt.y); } + inline wxSize ConvertDialogToPixels(const wxSize& sz) + { wxPoint pt(ConvertDialogToPixels(wxPoint(sz.x, sz.y))); return wxSize(pt.x, pt.y); } + wxObject *GetChild(int number) const ; void MSWCreate(int id, wxWindow *parent, const char *wclass, wxWindow *wx_win, const char *title, @@ -492,6 +492,9 @@ public: // Setup background and foreground colours correctly virtual void SetupColours(void); + // Saves the last message information before calling base version + virtual bool ProcessEvent(wxEvent& event); + // Handlers virtual void MSWOnCreate(WXLPCREATESTRUCT cs); virtual bool MSWOnPaint(void); @@ -506,6 +509,8 @@ public: virtual WXHBRUSH MSWOnCtlColor(WXHDC dc, WXHWND pWnd, WXUINT nCtlColor, WXUINT message, WXWPARAM wParam, WXLPARAM lParam); virtual bool MSWOnColorChange(WXHWND hWnd, WXUINT message, WXWPARAM wParam, WXLPARAM lParam); + virtual long MSWOnPaletteChanged(WXHWND hWndPalChange); + virtual long MSWOnQueryNewPalette(); virtual bool MSWOnEraseBkgnd(WXHDC pDC); virtual void MSWOnMenuHighlight(WXWORD item, WXWORD flags, WXHMENU sysmenu); virtual void MSWOnInitMenuPopup(WXHMENU menu, int pos, bool isSystem); @@ -548,12 +553,15 @@ public: virtual void MSWOnJoyMove(int joystick, int x, int y, WXUINT flags); virtual void MSWOnJoyZMove(int joystick, int z, WXUINT flags); + virtual long MSWGetDlgCode(); + // Window procedure virtual long MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam); // Calls an appropriate default window procedure virtual long MSWDefWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam); virtual bool MSWProcessMessage(WXMSG* pMsg); + virtual bool MSWTranslateMessage(WXMSG* pMsg); virtual void MSWDestroyWindow(void); // Detach "Window" menu from menu bar so it doesn't get deleted @@ -584,6 +592,7 @@ public: //////////////////////////////////////////////////////////////////////// //// PROTECTED DATA protected: + wxAcceleratorTable m_acceleratorTable; int m_windowId; long m_windowStyle; // Store the window's style wxEvtHandler * m_windowEventHandler; // Usually is 'this' @@ -599,7 +608,7 @@ protected: bool m_useCtl3D; // Using CTL3D for this control bool m_inOnSize; // Protection against OnSize reentry -#ifndef __WIN32__ +#ifndef _WX_WIN32__ // Pointer to global memory, for EDIT controls that need // special treatment to reduce USER area consumption. WXHGLOBAL m_globalHandle; @@ -616,11 +625,6 @@ protected: int m_caretHeight; bool m_caretEnabled; bool m_caretShown; - - // Device context being stored whilst drawing is done -// WXHDC m_tempHDC; - // Temporary device context stored during an OnPaint -// WXHDC m_paintHDC; wxFont m_windowFont; // Window's font bool m_isShown; bool m_doubleClickAllowed ; @@ -628,22 +632,15 @@ protected: bool m_winCaptured; wxString m_windowName; // Window name -#if USE_EXTENDED_STATICS +#if wxUSE_EXTENDED_STATICS wxList m_staticItems; #endif wxButton * m_defaultItem; - wxColour m_backgroundColour ; - wxColour m_defaultBackgroundColour; - wxColour m_foregroundColour ; - wxColour m_defaultForegroundColour; - bool m_backgroundTransparent; -// wxDC * m_windowDC; // The canvas's device context - int m_xThumbSize; int m_yThumbSize; @@ -653,7 +650,7 @@ protected: bool m_mouseInWindow; -#if USE_DRAG_AND_DROP +#if wxUSE_DRAG_AND_DROP wxDropTarget *m_pDropTarget; // the current drop target or NULL #endif //USE_DRAG_AND_DROP @@ -662,11 +659,16 @@ public: WXUINT m_lastMsg; WXWPARAM m_lastWParam; WXLPARAM m_lastLParam; - wxRectangle m_updateRect; // Bounding box for screen damage area + + wxRegion m_updateRegion; +/* + wxRect m_updateRect; // Bounding box for screen damage area #ifdef __WIN32__ WXHRGN m_updateRgn; // NT allows access to the rectangle list #endif - WXHANDLE m_acceleratorTable; +*/ + +// WXHANDLE m_acceleratorTable; WXHMENU m_hMenu; // Menu, if any wxList * m_children; // Window's children int m_returnCode; @@ -702,27 +704,11 @@ inline void wxWindow::SetBackgroundColour(const wxColour& col) { m_backgroundCol inline wxColour wxWindow::GetBackgroundColour(void) const { return m_backgroundColour; }; inline void wxWindow::SetForegroundColour(const wxColour& col) { m_foregroundColour = col; }; inline wxColour wxWindow::GetForegroundColour(void) const { return m_foregroundColour; }; -inline void wxWindow::SetDefaultForegroundColour(const wxColour& col) { m_defaultForegroundColour = col; }; -inline wxColour wxWindow::GetDefaultForegroundColour(void) const { return m_defaultForegroundColour; }; -inline void wxWindow::SetDefaultBackgroundColour(const wxColour& col) { m_defaultBackgroundColour = col; }; -inline wxColour wxWindow::GetDefaultBackgroundColour(void) const { return m_defaultBackgroundColour; }; inline wxButton *wxWindow::GetDefaultItem(void) const { return m_defaultItem; } inline void wxWindow::SetDefaultItem(wxButton *but) { m_defaultItem = but; } -// inline wxDC *wxWindow::GetDC(void) const { return m_windowDC; } inline bool wxWindow::IsRetained(void) const { return ((m_windowStyle & wxRETAINED) == wxRETAINED); } -/* -#if WXWIN_COMPATIBILITY -inline void wxWindow::OldOnMenuSelect(int WXUNUSED(cmd)) { Default(); }; -inline void wxWindow::OldOnInitMenuPopup(int WXUNUSED(pos)) { Default(); }; -inline void wxWindow::OldOnScroll(wxCommandEvent& WXUNUSED(event)) { Default(); }; -inline void wxWindow::OldOnMenuCommand(int WXUNUSED(cmd)) { Default(); } // Dealt with properly in wxFrame -inline void wxWindow::OldOnMove(int WXUNUSED(x), int WXUNUSED(y)) { Default(); }; // Called on move -inline void wxWindow::OldOnActivate(bool WXUNUSED(active)) { Default(); }; // Called on window activation (MSW) -#endif -*/ - inline void wxWindow::SetShowing(bool show) { m_isShown = show; } inline wxList *wxWindow::GetConstraintsInvolvedIn(void) const { return m_constraintsInvolvedIn; } inline wxSizer *wxWindow::GetSizer(void) const { return m_windowSizer; } @@ -741,29 +727,6 @@ inline bool wxWindow::IsBeingDeleted(void) { return m_isBeingDeleted; } // Window specific (so far) wxWindow* WXDLLEXPORT wxGetActiveWindow(void); -// Allows iteration through damaged rectangles in OnPaint -class WXDLLEXPORT wxUpdateIterator -{ - int rects; // How many rects in Update region - int current; // Current rectangle index - void *rp; // current rectangle -#ifdef __WIN32__ - WXRGNDATA *rlist; // Storage for regiondata -#endif - - public: - wxUpdateIterator(wxWindow* wnd); - ~wxUpdateIterator(void); - - operator int (void); - wxUpdateIterator* operator ++(int); - void GetRect(wxRectangle *rect); - int GetX(); - int GetY(); - int GetW(); - int GetH(); -}; - WXDLLEXPORT_DATA(extern wxList) wxTopLevelWindows; int WXDLLEXPORT wxCharCodeMSWToWX(int keySym); @@ -773,4 +736,4 @@ int WXDLLEXPORT wxCharCodeWXToMSW(int id, bool *IsVirtual); int WXDLLEXPORT NewControlId(void); #endif - // __WINDOWH__ + // _WX_WINDOW_H_