X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/81d66cf39f810503baed79213bc3122fda0ccc7b..17b74d79adcc7bbd5cff4ed500e267289c0083a7:/include/wx/msw/window.h diff --git a/include/wx/msw/window.h b/include/wx/msw/window.h index c1cb243339..9124feda18 100644 --- a/include/wx/msw/window.h +++ b/include/wx/msw/window.h @@ -6,11 +6,11 @@ // Created: 01/02/97 // RCS-ID: $Id$ // Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifndef __WINDOWH__ -#define __WINDOWH__ +#ifndef _WX_WINDOW_H_ +#define _WX_WINDOW_H_ #ifdef __GNUG__ #pragma interface "window.h" @@ -26,6 +26,7 @@ #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 @@ -52,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,12 +66,13 @@ class WXDLLEXPORT wxPen; class WXDLLEXPORT wxIcon; class WXDLLEXPORT wxDC; class WXDLLEXPORT wxValidator; +class WXDLLEXPORT wxToolTip; -#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 @@ -80,27 +82,62 @@ WXDLLEXPORT_DATA(extern const char*) wxPanelNameStr; WXDLLEXPORT_DATA(extern const wxSize) wxDefaultSize; WXDLLEXPORT_DATA(extern const wxPoint) wxDefaultPosition; -class WXDLLEXPORT wxWindow: public wxEvtHandler +//----------------------------------------------------------------------------- +// wxClientData +//----------------------------------------------------------------------------- + +class wxClientData +{ +public: + wxClientData() { } + virtual ~wxClientData() { } +}; + +//----------------------------------------------------------------------------- +// wxStringClientData +//----------------------------------------------------------------------------- + +class wxStringClientData: public wxClientData +{ +public: + wxStringClientData() { } + wxStringClientData( wxString &data ) { m_data = data; } + void SetData( wxString &data ) { m_data = data; } + wxString GetData() const { return m_data; } + +private: + wxString m_data; +}; + +// Clash with Windows headers +#ifdef GetCharWidth +#undef GetCharWidth +#endif + +#ifdef FindWindow +#undef FindWindow +#endif + +class WXDLLEXPORT wxWindow : public wxEvtHandler { DECLARE_ABSTRACT_CLASS(wxWindow) - friend class wxUpdateIterator; friend class wxDC; friend class wxPaintDC; public: - wxWindow(void); - inline wxWindow(wxWindow *parent, wxWindowID id, + wxWindow(); + wxWindow(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxString& name = wxPanelNameStr) { - m_children = new wxList; + Init(); Create(parent, id, pos, size, style, name); } - virtual ~wxWindow(void); + virtual ~wxWindow(); bool Create(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, @@ -109,25 +146,25 @@ public: const wxString& name = wxPanelNameStr); // Fit the window around the items - virtual void Fit(void); + virtual void Fit(); // Show or hide the window virtual bool Show(bool show); // Is the window shown? - virtual bool IsShown(void) const; + virtual bool IsShown() const; // Raise the window to the top of the Z order - virtual void Raise(void); + virtual void Raise(); // Lower the window to the bottom of the Z order - virtual void Lower(void); + virtual void Lower(); // Is the window enabled? - virtual bool IsEnabled(void) const; + virtual bool IsEnabled() const; // For compatibility - inline bool Enabled(void) const { return IsEnabled(); } + inline bool Enabled() const { return IsEnabled(); } // Dialog support: override these and call // base class members to add functionality @@ -135,71 +172,104 @@ public: // Transfer values to controls. If returns FALSE, // it's an application error (pops up a dialog) - virtual bool TransferDataToWindow(void); + virtual bool TransferDataToWindow(); // Transfer values from controls. If returns FALSE, // transfer failed: don't quit - virtual bool TransferDataFromWindow(void); + virtual bool TransferDataFromWindow(); // Validate controls. If returns FALSE, // validation failed: don't quit - virtual bool Validate(void); + virtual bool Validate(); // Return code for dialogs inline void SetReturnCode(int retCode); - inline int GetReturnCode(void); + inline int GetReturnCode(); // Set the cursor virtual void SetCursor(const wxCursor& cursor); - inline virtual wxCursor *GetCursor(void) const { return (wxCursor *)& m_windowCursor; }; + inline virtual wxCursor& GetCursor() const { return (wxCursor& ) m_windowCursor; }; // Get the window with the focus - static wxWindow *FindFocus(void); + static wxWindow *FindFocus(); // Get character size - virtual int GetCharHeight(void) const; - virtual int GetCharWidth(void) const; + virtual int GetCharHeight() const; + virtual int GetCharWidth() const; // Get overall window size virtual void GetSize(int *width, int *height) const; + wxSize GetSize() const { int w, h; GetSize(& w, & h); return wxSize(w, h); } // Get window position, relative to parent (or screen if no parent) virtual void GetPosition(int *x, int *y) const; + wxPoint GetPosition() const + { int x, y; GetPosition(&x, &y); return wxPoint(x, y); } + + // Get size and position + wxRect GetRect() const + { int x, y, w, h; GetPosition(& x, & y); GetSize(& w, & h); return wxRect(x, y, w, h); } // Get client (application-useable) size virtual void GetClientSize(int *width, int *height) const; + wxSize GetClientSize() const { int w, h; GetClientSize(& w, & h); return wxSize(w, h); } // Set overall size and position + // generic function, may be overriden in derived classes virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - inline virtual void SetSize(int width, int height) { SetSize(-1, -1, width, height, wxSIZE_USE_EXISTING); } - inline virtual void Move(int x, int y) { SetSize(x, y, -1, -1, wxSIZE_USE_EXISTING); } + + void SetSize(const wxRect& rect, int sizeFlags = wxSIZE_AUTO) + { SetSize(rect.x, rect.y, rect.width, rect.height, sizeFlags); } + + // set size only + void SetSize(int width, int height) + { SetSize(-1, -1, width, height, wxSIZE_USE_EXISTING); } + void SetSize(const wxSize& size) + { SetSize(-1, -1, size.x, size.y, wxSIZE_USE_EXISTING); } + + // set position only + virtual void Move(int x, int y) { SetSize(x, y, -1, -1, wxSIZE_USE_EXISTING); } + void Move(const wxPoint& pt) { SetSize(pt.x, pt.y, -1, -1, wxSIZE_USE_EXISTING); } // Set client size - virtual void SetClientSize(int width, int size); + virtual void SetClientSize(int width, int height); + void SetClientSize(const wxSize& sz) { SetClientSize(sz.x, sz.y); } // Convert client to screen coordinates virtual void ClientToScreen(int *x, int *y) const; + wxPoint ClientToScreen(const wxPoint& pt) const + { int x = pt.x; int y = pt.y; ClientToScreen(& x, & y); return wxPoint(x, y); } // Convert screen to client coordinates virtual void ScreenToClient(int *x, int *y) const; + wxPoint ScreenToClient(const wxPoint& pt) const + { int x = pt.x; int y = pt.y; ScreenToClient(& x, & y); return wxPoint(x, y); } // Set the focus to this window - virtual void SetFocus(void); + virtual void SetFocus(); // Capture/release mouse - virtual void CaptureMouse(void); - virtual void ReleaseMouse(void); + virtual void CaptureMouse(); + virtual void ReleaseMouse(); // 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); wxDropTarget *GetDropTarget() const { return m_pDropTarget; } #endif + // tooltips + // create a tooltip with this text + void SetToolTip(const wxString &tip); + // pointer may be NULL to remove the tooltip + void SetToolTip(wxToolTip *tooltip); + // get the current tooltip (may return NULL if none) + wxToolTip* GetToolTip() const { return m_tooltip; } + // Accept files for dragging virtual void DragAcceptFiles(bool accept); @@ -211,13 +281,13 @@ public: // Set/get the window title virtual inline void SetTitle(const wxString& WXUNUSED(title)) {}; - inline virtual wxString GetTitle(void) const { return wxString(""); }; + inline virtual wxString GetTitle() const { return wxString(""); }; // Most windows have the concept of a label; for frames, this is the // title; for items, this is the label or button text. - inline virtual wxString GetLabel(void) const { return GetTitle(); } + inline virtual wxString GetLabel() const { return GetTitle(); } // Set/get the window name (used for resource setting in X) - inline virtual wxString GetName(void) const; + inline virtual wxString GetName() const; inline virtual void SetName(const wxString& name); // Centre the window @@ -228,7 +298,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 @@ -247,12 +317,12 @@ 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); virtual void CreateCaret(const wxBitmap *bitmap); - virtual void DestroyCaret(void); + virtual void DestroyCaret(); virtual void ShowCaret(bool show); virtual void SetCaretPos(int x, int y); virtual void GetCaretPos(int *x, int *y) const; @@ -268,95 +338,93 @@ public: virtual void MakeModal(bool modal); // Get the private handle (platform-dependent) - inline void *GetHandle(void) const; + inline void *GetHandle() const; // Set/get the window's relatives - inline wxWindow *GetParent(void) const; + inline wxWindow *GetParent() const; inline void SetParent(wxWindow *p) ; - inline wxWindow *GetGrandParent(void) const; - inline wxList *GetChildren() const; + inline wxWindow *GetGrandParent() const; + inline wxList& GetChildren() const; + // Set this window to be the child of 'parent'. + // Returns FALSE it's not possible (some systems + // won't allow it) + virtual bool Reparent(wxWindow *parent); // Set/get the window's font virtual void SetFont(const wxFont& f); - inline virtual wxFont *GetFont(void) const; + inline virtual wxFont& GetFont() const; // Set/get the window's validator void SetValidator(const wxValidator& validator); - inline wxValidator *GetValidator(void) const; + inline wxValidator *GetValidator() const; // Set/get the window's style inline void SetWindowStyleFlag(long flag); - inline long GetWindowStyleFlag(void) const; + inline long GetWindowStyleFlag() const; // Set/get double-clickability // TODO: we probably wish to get rid of this, and // always allow double clicks. inline void SetDoubleClick(bool flag); - inline bool GetDoubleClick(void) const; + inline bool GetDoubleClick() 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 inline void SetEventHandler(wxEvtHandler *handler); - inline wxEvtHandler *GetEventHandler(void) const; + inline wxEvtHandler *GetEventHandler() const; // Push/pop event handler (i.e. allow a chain of event handlers // be searched) void PushEventHandler(wxEvtHandler *handler) ; wxEvtHandler *PopEventHandler(bool deleteHandler = FALSE) ; - + // Close the window by calling OnClose, posting a deletion virtual bool Close(bool force = FALSE); // Destroy the window (delayed, if a managed window) - virtual bool Destroy(void) ; + virtual bool Destroy() ; // Mode for telling default OnSize members to // call Layout(), if not using Sizers, just top-down constraints inline void SetAutoLayout(bool a); - inline bool GetAutoLayout(void) const; + inline bool GetAutoLayout() const; // Set/get constraints - inline wxLayoutConstraints *GetConstraints(void) const; + inline wxLayoutConstraints *GetConstraints() const; void SetConstraints(wxLayoutConstraints *c); // Set/get window background colour inline virtual void SetBackgroundColour(const wxColour& col); - inline virtual wxColour GetBackgroundColour(void) const; + inline virtual wxColour GetBackgroundColour() const; // Set/get window foreground colour 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; + inline virtual wxColour GetForegroundColour() const; // For backward compatibility inline virtual void SetButtonFont(const wxFont& font) { SetFont(font); } inline virtual void SetLabelFont(const wxFont& font) { SetFont(font); } - inline virtual wxFont *GetLabelFont(void) const { return GetFont(); }; - inline virtual wxFont *GetButtonFont(void) const { return GetFont(); }; + inline virtual wxFont& GetLabelFont() const { return GetFont(); }; + inline virtual wxFont& GetButtonFont() const { return GetFont(); }; // Get the default button, if there is one - inline virtual wxButton *GetDefaultItem(void) const; + inline virtual wxButton *GetDefaultItem() 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 @@ -371,40 +439,40 @@ public: const wxFont *theFont = NULL, bool use16 = FALSE) const; // Is the window retained? - inline bool IsRetained(void) const; + inline bool IsRetained() const; // Warp the pointer the given position virtual void WarpPointer(int x_pos, int y_pos) ; // Clear the window - virtual void Clear(void); + virtual void Clear(); // Find a window by id or name virtual wxWindow *FindWindow(long id); virtual wxWindow *FindWindow(const wxString& name); // Constraint operations - bool Layout(void); + bool Layout(); void SetSizer(wxSizer *sizer); // Adds sizer child to this window - inline wxSizer *GetSizer(void) const ; - inline wxWindow *GetSizerParent(void) const ; + inline wxSizer *GetSizer() const ; + inline wxWindow *GetSizerParent() const ; inline void SetSizerParent(wxWindow *win); // Do Update UI processing for controls - void UpdateWindowUI(void); + void UpdateWindowUI(); void OnEraseBackground(wxEraseEvent& event); void OnChar(wxKeyEvent& event); - void OnPaint(wxPaintEvent& event); void OnIdle(wxIdleEvent& event); // Does this window want to accept keyboard focus? virtual bool AcceptsFocus() const; + virtual void PrepareDC( wxDC& WXUNUSED(dc) ) {}; public: //////////////////////////////////////////////////////////////////////// //// IMPLEMENTATION - + // For implementation purposes - sometimes decorations make the client area // smaller virtual wxPoint GetClientAreaOrigin() const; @@ -415,15 +483,18 @@ public: // Windows subclassing void SubclassWin(WXHWND hWnd); - void UnsubclassWin(void); - virtual long Default(void); + void UnsubclassWin(); + virtual long Default(); virtual bool MSWCommand(WXUINT param, WXWORD id); - virtual bool MSWNotify(WXWPARAM wParam, WXLPARAM lParam); + + // returns TRUE if the event was processed + virtual bool MSWNotify(WXWPARAM wParam, WXLPARAM lParam, WXLPARAM *result); + virtual wxWindow *FindItem(int id) const; virtual wxWindow *FindItemByHWND(WXHWND hWnd, bool controlOnly = FALSE) const ; virtual void PreDelete(WXHDC dc); // Allows system cleanup // TO DO: how many of these need to be virtual? - virtual WXHWND GetHWND(void) const ; + virtual WXHWND GetHWND() const ; virtual void SetHWND(WXHWND hWnd); // Make a Windows extended style from the given wxWindows window style @@ -434,23 +505,23 @@ public: virtual void AddChild(wxWindow *child); // Adds reference to the child object virtual void RemoveChild(wxWindow *child); // Removes reference to child // (but doesn't delete the child object) - virtual void DestroyChildren(void); // Removes and destroys all children + virtual void DestroyChildren(); // Removes and destroys all children - inline bool IsBeingDeleted(void); + inline bool IsBeingDeleted(); // MSW only: TRUE if this control is part of the main control virtual bool ContainsHWND(WXHWND WXUNUSED(hWnd)) const { return FALSE; }; // Constraint implementation void UnsetConstraints(wxLayoutConstraints *c); - inline wxList *GetConstraintsInvolvedIn(void) const ; + inline wxList *GetConstraintsInvolvedIn() const ; // Back-pointer to other windows we're involved with, so if we delete // this window, we must delete any constraints we're involved with. void AddConstraintReference(wxWindow *otherWin); void RemoveConstraintReference(wxWindow *otherWin); - void DeleteRelatedConstraints(void); + void DeleteRelatedConstraints(); - virtual void ResetConstraints(void); + virtual void ResetConstraints(); virtual void SetConstraintSizes(bool recurse = TRUE); virtual bool LayoutPhase1(int *noChanges); virtual bool LayoutPhase2(int *noChanges); @@ -470,6 +541,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, @@ -484,30 +563,38 @@ public: virtual wxWindow* CreateWindowFromHWND(wxWindow* parent, WXHWND hWnd); // Make sure the window style reflects the HWND style (roughly) - virtual void AdoptAttributesFromHWND(void); + virtual void AdoptAttributesFromHWND(); // Setup background and foreground colours correctly - virtual void SetupColours(void); + virtual void SetupColours(); + + // Saves the last message information before calling base version + virtual bool ProcessEvent(wxEvent& event); // Handlers virtual void MSWOnCreate(WXLPCREATESTRUCT cs); - virtual bool MSWOnPaint(void); - virtual WXHICON MSWOnQueryDragIcon(void) { return 0; } + virtual bool MSWOnPaint(); + virtual WXHICON MSWOnQueryDragIcon() { return 0; } virtual void MSWOnSize(int x, int y, WXUINT flag); virtual void MSWOnWindowPosChanging(void *lpPos); virtual void MSWOnHScroll(WXWORD nSBCode, WXWORD pos, WXHWND control); virtual void MSWOnVScroll(WXWORD nSBCode, WXWORD pos, WXHWND control); virtual bool MSWOnCommand(WXWORD id, WXWORD cmd, WXHWND control); virtual long MSWOnSysCommand(WXWPARAM wParam, WXLPARAM lParam); - virtual bool MSWOnNotify(WXWPARAM wParam, WXLPARAM lParam); + virtual long MSWOnNotify(WXWPARAM wParam, WXLPARAM lParam); 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); - virtual bool MSWOnClose(void); - virtual bool MSWOnDestroy(void); + virtual bool MSWOnClose(); + // Return TRUE to end session, FALSE to veto end session. + virtual bool MSWOnQueryEndSession(long logOff); + virtual bool MSWOnEndSession(bool endSession, long logOff); + virtual bool MSWOnDestroy(); virtual bool MSWOnSetFocus(WXHWND wnd); virtual bool MSWOnKillFocus(WXHWND wnd); virtual void MSWOnDropFiles(WXWPARAM wParam); @@ -533,6 +620,8 @@ public: virtual void MSWOnMouseLeave(int x, int y, WXUINT flags); virtual void MSWOnChar(WXWORD wParam, WXLPARAM lParam, bool isASCII = FALSE); + virtual void MSWOnKeyDown(WXWORD wParam, WXLPARAM lParam, bool isASCII = FALSE); + virtual void MSWOnKeyUp(WXWORD wParam, WXLPARAM lParam, bool isASCII = FALSE); virtual bool MSWOnActivate(int flag, bool minimized, WXHWND activate); virtual long MSWOnMDIActivate(long flag, WXHWND activate, WXHWND deactivate); @@ -553,22 +642,23 @@ public: // Calls an appropriate default window procedure virtual long MSWDefWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam); virtual bool MSWProcessMessage(WXMSG* pMsg); - virtual void MSWDestroyWindow(void); + virtual bool MSWTranslateMessage(WXMSG* pMsg); + virtual void MSWDestroyWindow(); // Detach "Window" menu from menu bar so it doesn't get deleted - void MSWDetachWindowMenu(void); - + void MSWDetachWindowMenu(); + inline WXFARPROC MSWGetOldWndProc() const; inline void MSWSetOldWndProc(WXFARPROC proc); // Define for each class of dialog and control virtual WXHBRUSH OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam); + WXUINT message, WXWPARAM wParam, WXLPARAM lParam); inline void SetShowing(bool show); - inline bool IsUserEnabled(void) const; - inline bool GetUseCtl3D(void) const ; - inline bool GetTransparentBackground(void) const ; + inline bool IsUserEnabled() const; + inline bool GetUseCtl3D() const ; + inline bool GetTransparentBackground() const ; // Responds to colour changes: passes event on to children. void OnSysColourChanged(wxSysColourChangedEvent& event); @@ -578,14 +668,15 @@ public: // Sends an OnInitDialog event, which in turns transfers data to // to the window via validators. - virtual void InitDialog(void); + virtual void InitDialog(); //////////////////////////////////////////////////////////////////////// //// PROTECTED DATA protected: + wxAcceleratorTable m_acceleratorTable; int m_windowId; - long m_windowStyle; // Store the window's style - wxEvtHandler * m_windowEventHandler; // Usually is 'this' + long m_windowStyle; // Store the window's style + wxEvtHandler * m_windowEventHandler; // Usually is 'this' wxLayoutConstraints * m_constraints; // Constraints for this window wxList * m_constraintsInvolvedIn; // List of constraints we're involved in wxSizer * m_windowSizer; // Window's top-level sizer (if any) @@ -597,8 +688,8 @@ protected: WXFARPROC m_oldWndProc; bool m_useCtl3D; // Using CTL3D for this control - bool m_inOnSize; // Protection against OnSize reentry -#ifndef __WIN32__ + bool m_inOnSize; // Protection against OnSize reentry +#ifndef _WX_WIN32__ // Pointer to global memory, for EDIT controls that need // special treatment to reduce USER area consumption. WXHGLOBAL m_globalHandle; @@ -622,18 +713,13 @@ 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; int m_xThumbSize; @@ -645,120 +731,97 @@ 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 public: - WXHWND m_hWnd; // MS Windows window handle + WXHWND m_hWnd; // MS Windows window handle WXUINT m_lastMsg; WXWPARAM m_lastWParam; WXLPARAM m_lastLParam; wxRegion m_updateRegion; /* - wxRectangle m_updateRect; // Bounding box for screen damage area + 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; bool m_isBeingDeleted; // Fudge because can't access parent // when being deleted -DECLARE_EVENT_TABLE() +private: + // common part of all ctors + void Init(); + + // the associated tooltip (may be NULL if none) + wxToolTip *m_tooltip; + + DECLARE_EVENT_TABLE() }; //////////////////////////////////////////////////////////////////////// //// INLINES -inline void *wxWindow::GetHandle(void) const { return (void *)GetHWND(); } +inline void *wxWindow::GetHandle() const { return (void *)GetHWND(); } inline int wxWindow::GetId() const { return m_windowId; } inline void wxWindow::SetId(int id) { m_windowId = id; } -inline wxWindow *wxWindow::GetParent(void) const { return m_windowParent; } +inline wxWindow *wxWindow::GetParent() const { return m_windowParent; } inline void wxWindow::SetParent(wxWindow *p) { m_windowParent = p; } -inline wxWindow *wxWindow::GetGrandParent(void) const { return (m_windowParent ? m_windowParent->m_windowParent : NULL); } -inline wxList *wxWindow::GetChildren() const { return m_children; } -inline wxFont *wxWindow::GetFont(void) const { return (wxFont *) & m_windowFont; } -inline wxString wxWindow::GetName(void) const { return m_windowName; } +inline wxWindow *wxWindow::GetGrandParent() const { return (m_windowParent ? m_windowParent->m_windowParent : (wxWindow*) NULL); } +inline wxList& wxWindow::GetChildren() const { return (wxList&) *m_children; } +inline wxFont& wxWindow::GetFont() const { return (wxFont&) m_windowFont; } +inline wxString wxWindow::GetName() const { return m_windowName; } inline void wxWindow::SetName(const wxString& name) { m_windowName = name; } -inline long wxWindow::GetWindowStyleFlag(void) const { return m_windowStyle; } +inline long wxWindow::GetWindowStyleFlag() const { return m_windowStyle; } inline void wxWindow::SetWindowStyleFlag(long flag) { m_windowStyle = flag; } inline void wxWindow::SetDoubleClick(bool flag) { m_doubleClickAllowed = flag; } -inline bool wxWindow::GetDoubleClick(void) const { return m_doubleClickAllowed; } +inline bool wxWindow::GetDoubleClick() const { return m_doubleClickAllowed; } inline void wxWindow::SetEventHandler(wxEvtHandler *handler) { m_windowEventHandler = handler; } -inline wxEvtHandler *wxWindow::GetEventHandler(void) const { return m_windowEventHandler; } +inline wxEvtHandler *wxWindow::GetEventHandler() const { return m_windowEventHandler; } inline void wxWindow::SetAutoLayout(bool a) { m_autoLayout = a; } -inline bool wxWindow::GetAutoLayout(void) const { return m_autoLayout; } -inline wxLayoutConstraints *wxWindow::GetConstraints(void) const { return m_constraints; } +inline bool wxWindow::GetAutoLayout() const { return m_autoLayout; } +inline wxLayoutConstraints *wxWindow::GetConstraints() const { return m_constraints; } inline void wxWindow::SetBackgroundColour(const wxColour& col) { m_backgroundColour = col; }; -inline wxColour wxWindow::GetBackgroundColour(void) const { return m_backgroundColour; }; +inline wxColour wxWindow::GetBackgroundColour() 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 wxColour wxWindow::GetForegroundColour() const { return m_foregroundColour; }; -inline wxButton *wxWindow::GetDefaultItem(void) const { return m_defaultItem; } +inline wxButton *wxWindow::GetDefaultItem() const { return m_defaultItem; } inline void wxWindow::SetDefaultItem(wxButton *but) { m_defaultItem = but; } -inline bool wxWindow::IsRetained(void) const { return ((m_windowStyle & wxRETAINED) == wxRETAINED); } +inline bool wxWindow::IsRetained() const { return ((m_windowStyle & wxRETAINED) == wxRETAINED); } 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; } -inline wxWindow *wxWindow::GetSizerParent(void) const { return m_sizerParent; } +inline wxList *wxWindow::GetConstraintsInvolvedIn() const { return m_constraintsInvolvedIn; } +inline wxSizer *wxWindow::GetSizer() const { return m_windowSizer; } +inline wxWindow *wxWindow::GetSizerParent() const { return m_sizerParent; } inline void wxWindow::SetSizerParent(wxWindow *win) { m_sizerParent = win; } inline WXFARPROC wxWindow::MSWGetOldWndProc() const { return m_oldWndProc; } inline void wxWindow::MSWSetOldWndProc(WXFARPROC proc) { m_oldWndProc = proc; } -inline wxValidator *wxWindow::GetValidator(void) const { return m_windowValidator; } -inline bool wxWindow::IsUserEnabled(void) const { return m_winEnabled; } -inline bool wxWindow::GetUseCtl3D(void) const { return m_useCtl3D; } -inline bool wxWindow::GetTransparentBackground(void) const { return m_backgroundTransparent; } +inline wxValidator *wxWindow::GetValidator() const { return m_windowValidator; } +inline bool wxWindow::IsUserEnabled() const { return m_winEnabled; } +inline bool wxWindow::GetUseCtl3D() const { return m_useCtl3D; } +inline bool wxWindow::GetTransparentBackground() const { return m_backgroundTransparent; } inline void wxWindow::SetReturnCode(int retCode) { m_returnCode = retCode; } -inline int wxWindow::GetReturnCode(void) { return m_returnCode; } -inline bool wxWindow::IsBeingDeleted(void) { return m_isBeingDeleted; } +inline int wxWindow::GetReturnCode() { return m_returnCode; } +inline bool wxWindow::IsBeingDeleted() { return m_isBeingDeleted; } // Window specific (so far) -wxWindow* WXDLLEXPORT wxGetActiveWindow(void); - -// OBSOLETE -#if 0 -// 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(); -}; -#endif +WXDLLEXPORT wxWindow* wxGetActiveWindow(); WXDLLEXPORT_DATA(extern wxList) wxTopLevelWindows; -int WXDLLEXPORT wxCharCodeMSWToWX(int keySym); -int WXDLLEXPORT wxCharCodeWXToMSW(int id, bool *IsVirtual); +WXDLLEXPORT int wxCharCodeMSWToWX(int keySym); +WXDLLEXPORT int wxCharCodeWXToMSW(int id, bool *IsVirtual); // Allocates control ids -int WXDLLEXPORT NewControlId(void); +WXDLLEXPORT int NewControlId(); #endif - // __WINDOWH__ + // _WX_WINDOW_H_