📄 window.h
字号:
/////////////////////////////////////////////////////////////////////////////// Name: wx/msw/window.h// Purpose: wxWindowMSW class// Author: Julian Smart// Modified by: Vadim Zeitlin on 13.05.99: complete refont of message handling,// elimination of Default(), ...// Created: 01/02/97// RCS-ID: $Id: window.h,v 1.170 2006/10/09 16:39:10 VZ Exp $// Copyright: (c) Julian Smart// Licence: wxWindows licence/////////////////////////////////////////////////////////////////////////////#ifndef _WX_WINDOW_H_#define _WX_WINDOW_H_// ---------------------------------------------------------------------------// constants// ---------------------------------------------------------------------------#if WXWIN_COMPATIBILITY_2_4// they're unused by wxWidgets...enum{ wxKEY_SHIFT = 1, wxKEY_CTRL = 2};#endif// ---------------------------------------------------------------------------// wxWindow declaration for MSW// ---------------------------------------------------------------------------class WXDLLEXPORT wxWindowMSW : public wxWindowBase{ friend class wxSpinCtrl; friend class wxSlider; friend class wxRadioBox;#if defined __VISUALC__ && __VISUALC__ <= 1200 friend class wxWindowMSW;#endifpublic: wxWindowMSW() { Init(); } wxWindowMSW(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxString& name = wxPanelNameStr) { Init(); Create(parent, id, pos, size, style, name); } virtual ~wxWindowMSW(); bool Create(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxString& name = wxPanelNameStr); // implement base class pure virtuals virtual void SetLabel(const wxString& label); virtual wxString GetLabel() const; virtual void Raise(); virtual void Lower(); virtual bool Show( bool show = true ); virtual bool Enable( bool enable = true ); virtual void SetFocus(); virtual void SetFocusFromKbd(); virtual bool Reparent(wxWindowBase *newParent); virtual void WarpPointer(int x, int y); virtual void Refresh( bool eraseBackground = true, const wxRect *rect = (const wxRect *) NULL ); virtual void Update(); virtual void Freeze(); virtual void Thaw(); virtual bool IsFrozen() const { return m_frozenness > 0; } virtual void SetWindowStyleFlag(long style); virtual void SetExtraStyle(long exStyle); virtual bool SetCursor( const wxCursor &cursor ); virtual bool SetFont( const wxFont &font ); virtual int GetCharHeight() const; virtual int GetCharWidth() const; virtual void GetTextExtent(const wxString& string, int *x, int *y, int *descent = (int *) NULL, int *externalLeading = (int *) NULL, const wxFont *theFont = (const wxFont *) NULL) const; virtual void SetScrollbar( int orient, int pos, int thumbVisible, int range, bool refresh = true ); virtual void SetScrollPos( int orient, int pos, bool refresh = true ); virtual int GetScrollPos( int orient ) const; virtual int GetScrollThumb( int orient ) const; virtual int GetScrollRange( int orient ) const; virtual void ScrollWindow( int dx, int dy, const wxRect* rect = (wxRect *) NULL ); virtual bool ScrollLines(int lines); virtual bool ScrollPages(int pages); virtual void SetLayoutDirection(wxLayoutDirection dir); virtual wxLayoutDirection GetLayoutDirection() const; virtual wxCoord AdjustForLayoutDirection(wxCoord x, wxCoord width, wxCoord widthTotal) const;#if wxUSE_DRAG_AND_DROP virtual void SetDropTarget( wxDropTarget *dropTarget );#endif // wxUSE_DRAG_AND_DROP // Accept files for dragging virtual void DragAcceptFiles(bool accept);#if WXWIN_COMPATIBILITY_2_4 wxDEPRECATED( bool GetUseCtl3D() const ); wxDEPRECATED( bool GetTransparentBackground() const ); wxDEPRECATED( void SetTransparent(bool t = true) );#endif // WXWIN_COMPATIBILITY_2_4#ifndef __WXUNIVERSAL__ // Native resource loading (implemented in src/msw/nativdlg.cpp) // FIXME: should they really be all virtual? virtual bool LoadNativeDialog(wxWindow* parent, wxWindowID& id); virtual bool LoadNativeDialog(wxWindow* parent, const wxString& name); wxWindow* GetWindowChild1(wxWindowID id); wxWindow* GetWindowChild(wxWindowID id);#endif // __WXUNIVERSAL__#if wxUSE_HOTKEY // install and deinstall a system wide hotkey virtual bool RegisterHotKey(int hotkeyId, int modifiers, int keycode); virtual bool UnregisterHotKey(int hotkeyId);#endif // wxUSE_HOTKEY#ifdef __POCKETPC__ bool IsContextMenuEnabled() const { return m_contextMenuEnabled; } void EnableContextMenu(bool enable = true) { m_contextMenuEnabled = enable; }#endif // window handle stuff // ------------------- WXHWND GetHWND() const { return m_hWnd; } void SetHWND(WXHWND hWnd) { m_hWnd = hWnd; } virtual WXWidget GetHandle() const { return GetHWND(); } void AssociateHandle(WXWidget handle); void DissociateHandle(); // does this window have deferred position and/or size? bool IsSizeDeferred() const; // implementation from now on // ========================== // event handlers // -------------- void OnPaint(wxPaintEvent& event); void OnEraseBackground(wxEraseEvent& event);#ifdef __WXWINCE__ void OnInitDialog(wxInitDialogEvent& event);#endifpublic: // Windows subclassing void SubclassWin(WXHWND hWnd); void UnsubclassWin(); 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 wxWidgets') 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; // MSW only: true if this control is part of the main control virtual bool ContainsHWND(WXHWND WXUNUSED(hWnd)) const { return false; };#if wxUSE_TOOLTIPS // MSW only: true if this window or any of its children have a tooltip virtual bool HasToolTips() const { return GetToolTip() != NULL; }#endif // wxUSE_TOOLTIPS // translate wxWidgets 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 wxWidgets 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); } // update the real underlying window style flags to correspond to the // current wxWindow object style (safe to call even if window isn't fully // created yet) void MSWUpdateStyle(long flagsOld, long exflagsOld); // translate wxWidgets coords into Windows ones suitable to be passed to // ::CreateWindow() // // returns true if non default coords are returned, false otherwise bool MSWGetCreateWindowCoords(const wxPoint& pos, const wxSize& size, 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 // // returns true if the window has been created, false if creation failed bool MSWCreate(const wxChar *wclass, const wxChar *title = NULL, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, WXDWORD style = 0, WXDWORD exendedStyle = 0); virtual bool MSWCommand(WXUINT param, WXWORD id);#ifndef __WXUNIVERSAL__ // Create an appropriate wxWindow from a HWND virtual wxWindow* CreateWindowFromHWND(wxWindow* parent, WXHWND hWnd); // Make sure the window style reflects the HWND style (roughly) virtual void AdoptAttributesFromHWND();#endif // __WXUNIVERSAL__ // Setup background and foreground colours correctly virtual void SetupColours(); // ------------------------------------------------------------------------ // helpers for message handlers: these perform the same function as the // message crackers from <windowsx.h> - they unpack WPARAM and LPARAM into // the correct parameters // ------------------------------------------------------------------------ void UnpackCommand(WXWPARAM wParam, WXLPARAM lParam, WXWORD *id, WXHWND *hwnd, WXWORD *cmd); void UnpackActivate(WXWPARAM wParam, WXLPARAM lParam, WXWORD *state, WXWORD *minimized, WXHWND *hwnd); void UnpackScroll(WXWPARAM wParam, WXLPARAM lParam, WXWORD *code, WXWORD *pos, WXHWND *hwnd); void UnpackCtlColor(WXWPARAM wParam, WXLPARAM lParam, WXHDC *hdc, WXHWND *hwnd); void UnpackMenuSelect(WXWPARAM wParam, WXLPARAM lParam, WXWORD *item, WXWORD *flags, WXHMENU *hmenu); // ------------------------------------------------------------------------ // internal handlers for MSW messages: all handlers return a boolean value: // true means that the handler processed the event and false that it didn't // ------------------------------------------------------------------------ // there are several cases where we have virtual functions for Windows // message processing: this is because these messages often require to be // processed in a different manner in the derived classes. For all other // messages, however, we do *not* have corresponding MSWOnXXX() function // and if the derived class wants to process them, it should override // MSWWindowProc() directly. // scroll event (both horizontal and vertical) virtual bool MSWOnScroll(int orientation, WXWORD nSBCode, WXWORD pos, WXHWND control); // child control notifications virtual bool MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result); // owner-drawn controls need to process these messages virtual bool MSWOnDrawItem(int id, WXDRAWITEMSTRUCT *item); virtual bool MSWOnMeasureItem(int id, WXMEASUREITEMSTRUCT *item);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -