📄 window.h
字号:
// the rest are not virtual bool HandleCreate(WXLPCREATESTRUCT cs, bool *mayCreate); bool HandleInitDialog(WXHWND hWndFocus); bool HandleDestroy(); bool HandlePaint(); bool HandlePrintClient(WXHDC hDC); bool HandleEraseBkgnd(WXHDC hDC); bool HandleMinimize(); bool HandleMaximize(); bool HandleSize(int x, int y, WXUINT flag); bool HandleSizing(wxRect& rect); bool HandleGetMinMaxInfo(void *mmInfo); bool HandleShow(bool show, int status); bool HandleActivate(int flag, bool minimized, WXHWND activate); bool HandleCommand(WXWORD id, WXWORD cmd, WXHWND control); bool HandleCtlColor(WXHBRUSH *hBrush, WXHDC hdc, WXHWND hWnd); bool HandlePaletteChanged(WXHWND hWndPalChange); bool HandleQueryNewPalette(); bool HandleSysColorChange(); bool HandleDisplayChange(); bool HandleCaptureChanged(WXHWND gainedCapture); virtual bool HandleSettingChange(WXWPARAM wParam, WXLPARAM lParam); bool HandleQueryEndSession(long logOff, bool *mayEnd); bool HandleEndSession(bool endSession, long logOff); bool HandleSetFocus(WXHWND wnd); bool HandleKillFocus(WXHWND wnd); bool HandleDropFiles(WXWPARAM wParam); bool HandleMouseEvent(WXUINT msg, int x, int y, WXUINT flags); bool HandleMouseMove(int x, int y, WXUINT flags); bool HandleMouseWheel(WXWPARAM wParam, WXLPARAM lParam); bool HandleChar(WXWPARAM wParam, WXLPARAM lParam, bool isASCII = false); bool HandleKeyDown(WXWPARAM wParam, WXLPARAM lParam); bool HandleKeyUp(WXWPARAM wParam, WXLPARAM lParam);#if wxUSE_ACCEL bool HandleHotKey(WXWPARAM wParam, WXLPARAM lParam);#endif#ifdef __WIN32__ int HandleMenuChar(int chAccel, WXLPARAM lParam);#endif // Create and process a clipboard event specified by type. bool HandleClipboardEvent( WXUINT nMsg ); bool HandleQueryDragIcon(WXHICON *hIcon); bool HandleSetCursor(WXHWND hWnd, short nHitTest, int mouseMsg); bool HandlePower(WXWPARAM wParam, WXLPARAM lParam, bool *vetoed); // Window procedure virtual WXLRESULT MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam); // Calls an appropriate default window procedure virtual WXLRESULT MSWDefWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam); // message processing helpers // return false if the message shouldn't be translated/preprocessed but // dispatched normally virtual bool MSWShouldPreProcessMessage(WXMSG* pMsg); // return true if the message was preprocessed and shouldn't be dispatched virtual bool MSWProcessMessage(WXMSG* pMsg); // return true if the message was translated and shouldn't be dispatched virtual bool MSWTranslateMessage(WXMSG* pMsg); // called when the window is about to be destroyed virtual void MSWDestroyWindow(); // this function should return the brush to paint the children controls // background or 0 if this window doesn't impose any particular background // on its children // // the base class version returns a solid brush if we have a non default // background colour or 0 otherwise virtual WXHBRUSH MSWGetBgBrushForChild(WXHDC hDC, WXHWND hWnd); // return the background brush to use for painting the given window by // quering the parent windows via their MSWGetBgBrushForChild() recursively // // hWndToPaint is normally NULL meaning this window itself, but it can also // be a child of this window which is used by the static box and could be // potentially useful for other transparent controls WXHBRUSH MSWGetBgBrush(WXHDC hDC, WXHWND hWndToPaint = NULL); // gives the parent the possibility to draw its children background, e.g. // this is used by wxNotebook to do it using DrawThemeBackground() // // return true if background was drawn, false otherwise virtual bool MSWPrintChild(WXHDC WXUNUSED(hDC), wxWindow * WXUNUSED(child)) { return false; } // some controls (e.g. wxListBox) need to set the return value themselves // // return true to let parent handle it if we don't, false otherwise virtual bool MSWShouldPropagatePrintChild() { return true; } // Responds to colour changes: passes event on to children. void OnSysColourChanged(wxSysColourChangedEvent& event); // initialize various fields of wxMouseEvent (common part of MSWOnMouseXXX) void InitMouseEvent(wxMouseEvent& event, int x, int y, WXUINT flags); // check if mouse is in the window bool IsMouseInWindow() const; // check if a native double-buffering applies for this window virtual bool IsDoubleBuffered() const; // synthesize a wxEVT_LEAVE_WINDOW event and set m_mouseInWindow to false void GenerateMouseLeave(); // virtual function for implementing internal idle // behaviour virtual void OnInternalIdle();protected:#if wxUSE_MENUS_NATIVE virtual bool DoPopupMenu( wxMenu *menu, int x, int y );#endif // wxUSE_MENUS_NATIVE // the window handle WXHWND m_hWnd; // the old window proc (we subclass all windows) WXFARPROC m_oldWndProc; // additional (MSW specific) flags bool m_mouseInWindow:1; bool m_lastKeydownProcessed:1; // the size of one page for scrolling int m_xThumbSize; int m_yThumbSize; // implement the base class pure virtuals virtual void DoClientToScreen( int *x, int *y ) const; virtual void DoScreenToClient( int *x, int *y ) const; virtual void DoGetPosition( int *x, int *y ) const; virtual void DoGetSize( int *width, int *height ) const; virtual void DoGetClientSize( int *width, int *height ) const; virtual void DoSetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); virtual void DoSetClientSize(int width, int height); virtual void DoCaptureMouse(); virtual void DoReleaseMouse(); // 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 // themselves inside the given rectangle virtual void DoMoveWindow(int x, int y, int width, int height);#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 wxKeyEvent CreateKeyEvent(wxEventType evType, int id, WXLPARAM lParam = 0, WXWPARAM wParam = 0) const; // default OnEraseBackground() implementation, return true if we did erase // the background, false otherwise (i.e. the system should erase it) bool DoEraseBackground(WXHDC hDC); // generate WM_CHANGEUISTATE if it's needed for the OS we're running under // // action should be one of the UIS_XXX constants // state should be one or more of the UISF_XXX constants // if action == UIS_INITIALIZE then it doesn't seem to matter what we use // for state as the system will decide for us what needs to be set void MSWUpdateUIState(int action, int state = 0);private: // common part of all ctors void Init(); // the (non-virtual) handlers for the events bool HandleMove(int x, int y); bool HandleMoving(wxRect& rect); bool HandleJoystickEvent(WXUINT msg, int x, int y, WXUINT flags); bool HandleNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result); // list of disabled children before last call to our Disable() wxWindowList *m_childrenDisabled; // number of calls to Freeze() minus number of calls to Thaw() unsigned int m_frozenness; // current defer window position operation handle (may be NULL) WXHANDLE m_hDWP;protected: // When deferred positioning is done these hold the pending changes, and // are used for the default values if another size/pos changes is done on // this window before the group of deferred changes is completed. wxPoint m_pendingPosition; wxSize m_pendingSize;private:#ifdef __POCKETPC__ bool m_contextMenuEnabled;#endif DECLARE_DYNAMIC_CLASS(wxWindowMSW) DECLARE_NO_COPY_CLASS(wxWindowMSW) DECLARE_EVENT_TABLE()};// ----------------------------------------------------------------------------// inline functions// ----------------------------------------------------------------------------#if WXWIN_COMPATIBILITY_2_4inline bool wxWindowMSW::GetUseCtl3D() const { return false; }inline bool wxWindowMSW::GetTransparentBackground() const { return false; }inline void wxWindowMSW::SetTransparent(bool WXUNUSED(t)) { }#endif // WXWIN_COMPATIBILITY_2_4// ---------------------------------------------------------------------------// global functions// ---------------------------------------------------------------------------// kbd code translationWXDLLEXPORT int wxCharCodeMSWToWX(int keySym, WXLPARAM lParam = 0);WXDLLEXPORT WXWORD wxCharCodeWXToMSW(int id, bool *IsVirtual = NULL);// window creation helper class: before creating a new HWND, instantiate an// object of this class on stack - this allows to process the messages sent to// the window even before CreateWindow() returnsclass wxWindowCreationHook{public: wxWindowCreationHook(wxWindowMSW *winBeingCreated); ~wxWindowCreationHook();};// ----------------------------------------------------------------------------// global objects// ----------------------------------------------------------------------------// notice that this hash must be defined after wxWindow declaration as it// needs to "see" its dtor and not just forward declaration#include "wx/hash.h"// pseudo-template HWND <-> wxWindow hash table#if WXWIN_COMPATIBILITY_2_4WX_DECLARE_HASH(wxWindow, wxWindowList, wxWinHashTable);#elseWX_DECLARE_HASH(wxWindowMSW, wxWindowList, wxWinHashTable);#endifextern wxWinHashTable *wxWinHandleHash;#endif // _WX_WINDOW_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -