📄 window.h
字号:
// there are several cases where we have virtual functions for PM // 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 OS2OnXXX() function // and if the derived class wants to process them, it should override // OS2WindowProc() directly. // scroll event (both horizontal and vertical) virtual bool OS2OnScroll( int nOrientation ,WXWORD nSBCode ,WXWORD pos ,WXHWND control ); // owner-drawn controls need to process these messages virtual bool OS2OnDrawItem( int nId ,WXDRAWITEMSTRUCT* pItem ); virtual long OS2OnMeasureItem( int nId ,WXMEASUREITEMSTRUCT* pItem ); virtual void OnPaint(wxPaintEvent& rEvent); // the rest are not virtual bool HandleCreate( WXLPCREATESTRUCT vCs ,bool* pMayCreate ); bool HandleInitDialog(WXHWND hWndFocus); bool HandleDestroy(void); bool HandlePaint(void); bool HandleEraseBkgnd(WXHDC vDC); bool HandleMinimize(void); bool HandleMaximize(void); bool HandleSize( int nX ,int nY ,WXUINT uFlag ); bool HandleGetMinMaxInfo(PSWP pMmInfo); bool HandleShow( bool bShow ,int nStatus ); bool HandleActivate( int nFlag ,WXHWND hActivate ); bool HandleCommand( WXWORD nId ,WXWORD nCmd ,WXHWND hControl ); bool HandleSysCommand( WXWPARAM wParam ,WXLPARAM lParam ); bool HandlePaletteChanged(void); bool HandleQueryNewPalette(void); bool HandleSysColorChange(void); bool HandleDisplayChange(void); bool HandleCaptureChanged(WXHWND hBainedCapture); bool HandleCtlColor(WXHBRUSH* hBrush); bool HandleSetFocus(WXHWND hWnd); bool HandleKillFocus(WXHWND hWnd); bool HandleEndDrag(WXWPARAM wParam); bool HandleMouseEvent( WXUINT uMsg ,int nX ,int nY ,WXUINT uFlags ); bool HandleMouseMove( int nX ,int nY ,WXUINT uFlags ); bool HandleChar( WXWPARAM wParam ,WXLPARAM lParam ,bool bIsASCII = false ); bool HandleKeyDown( WXWPARAM wParam ,WXLPARAM lParam ); bool HandleKeyUp( WXWPARAM wParam ,WXLPARAM lParam ); bool HandleQueryDragIcon(WXHICON* phIcon); bool HandleSetCursor( USHORT vId ,WXHWND hWnd ); bool IsMouseInWindow(void) const; bool OS2GetCreateWindowCoords( const wxPoint& rPos ,const wxSize& rSize ,int& rnX ,int& rnY ,int& rnWidth ,int& rnHeight ) const; // Window procedure virtual MRESULT OS2WindowProc( WXUINT uMsg ,WXWPARAM wParam ,WXLPARAM lParam ); // Calls an appropriate default window procedure virtual MRESULT OS2DefWindowProc( WXUINT uMsg ,WXWPARAM wParam ,WXLPARAM lParam ); virtual bool OS2ProcessMessage(WXMSG* pMsg); virtual bool OS2ShouldPreProcessMessage(WXMSG* pMsg); virtual bool OS2TranslateMessage(WXMSG* pMsg); virtual void OS2DestroyWindow(void); // this function should return the brush to paint the window background // with or 0 for the default brush virtual WXHBRUSH OnCtlColor( WXHDC hDC ,WXHWND hWnd ,WXUINT uCtlColor ,WXUINT uMessage ,WXWPARAM wParam ,WXLPARAM lParam ); // Responds to colour changes: passes event on to children. void OnSysColourChanged(wxSysColourChangedEvent& rEvent); // initialize various fields of wxMouseEvent (common part of OS2OnMouseXXX) void InitMouseEvent( wxMouseEvent& rEvent ,int nX ,int nY ,WXUINT uFlags ); void MoveChildren(int nDiff); PSWP GetSwp(void) {return &m_vWinSwp;}protected: // PM can't create some MSW styles natively but can perform these after // creation by sending messages typedef enum extra_flags { kFrameToolWindow = 0x0001 ,kVertCaption = 0x0002 ,kHorzCaption = 0x0004 } EExtraFlags; // Some internal sizeing id's to make it easy for event handlers typedef enum size_types { kSizeNormal ,kSizeMax ,kSizeMin } ESizeTypes; // the window handle WXHWND m_hWnd; // the old window proc (we subclass all windows) WXFARPROC m_fnOldWndProc; // additional (OS2 specific) flags bool m_bUseCtl3D:1; // Using CTL3D for this control bool m_bBackgroundTransparent:1; bool m_bMouseInWindow:1; bool m_bLastKeydownProcessed:1; bool m_bWinCaptured:1; WXDWORD m_dwExStyle; // the size of one page for scrolling int m_nXThumbSize; int m_nYThumbSize;#if wxUSE_MOUSEEVENT_HACK // the coordinates of the last mouse event and the type of it long m_lLastMouseX, long m_lLastMouseY; int m_nLastMouseEvent;#endif // wxUSE_MOUSEEVENT_HACK WXHMENU m_hMenu; // Menu, if any unsigned long m_ulMenubarId; // it's Id, if any // the return value of WM_GETDLGCODE handler long m_lDlgCode; // implement the base class pure virtuals virtual void DoClientToScreen( int* pX ,int* pY ) const; virtual void DoScreenToClient( int* pX ,int* pY ) const; virtual void DoGetPosition( int* pX ,int* pY ) const; virtual void DoGetSize( int* pWidth ,int* pHeight ) const; virtual void DoGetClientSize( int* pWidth ,int* pHeight ) const; virtual void DoSetSize( int nX ,int nY ,int nWidth ,int nHeight ,int nSizeFlags = wxSIZE_AUTO ); virtual void DoSetClientSize( int nWidth ,int nHeight ); virtual void DoCaptureMouse(void); virtual void DoReleaseMouse(void); // move the window to the specified location and resize it: this is called // from both DoSetSize() and DoSetClientSize() and would usually just call // ::WinSetWindowPos() except for composite controls which will want to arrange // themselves inside the given rectangle virtual void DoMoveWindow( int nX ,int nY ,int nWidth ,int nHeight );#if wxUSE_TOOLTIPS virtual void DoSetToolTip(wxToolTip* pTip);#endif // wxUSE_TOOLTIPS int GetOS2ParentHeight(wxWindowOS2* pParent);private: // common part of all ctors void Init(void); // the (non-virtual) handlers for the events bool HandleMove( int nX ,int nY ); bool HandleJoystickEvent( WXUINT uMsg ,int pX ,int pY ,WXUINT uFlags ); bool HandleNotify( int nIdCtrl ,WXLPARAM lParam ,WXLPARAM* pResult ); // the helper functions used by HandleChar/KeyXXX methods wxKeyEvent CreateKeyEvent( wxEventType evType ,int nId ,WXLPARAM lParam = 0 ,WXWPARAM wParam = 0 ) const; wxWindowList* m_pChildrenDisabled; HWND m_hWndScrollBarHorz; HWND m_hWndScrollBarVert; SWP m_vWinSwp; DECLARE_DYNAMIC_CLASS(wxWindowOS2); DECLARE_NO_COPY_CLASS(wxWindowOS2) DECLARE_EVENT_TABLE() // // Virtual function hiding supression // inline virtual bool Reparent(wxWindowBase* pNewParent) { return(wxWindowBase::Reparent(pNewParent));}}; // end of wxWindowclass wxWindowCreationHook{public: wxWindowCreationHook(wxWindow* pWinBeingCreated); ~wxWindowCreationHook();}; // end of CLASS wxWindowCreationHook// ---------------------------------------------------------------------------// global functions// ---------------------------------------------------------------------------// kbd code translationWXDLLEXPORT int wxCharCodeOS2ToWX(int nKeySym);WXDLLEXPORT int wxCharCodeWXToOS2( int nId ,bool* pbIsVirtual = NULL );// ----------------------------------------------------------------------------// 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 tableWX_DECLARE_HASH(wxWindowOS2, wxWindowList, wxWinHashTable);extern wxWinHashTable *wxWinHandleHash;#endif // _WX_WINDOW_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -