📄 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 wxWindow
class wxWindowCreationHook
{
public:
wxWindowCreationHook(wxWindow* pWinBeingCreated);
~wxWindowCreationHook();
}; // end of CLASS wxWindowCreationHook
// ---------------------------------------------------------------------------
// global functions
// ---------------------------------------------------------------------------
// kbd code translation
WXDLLEXPORT 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 table
WX_DECLARE_HASH(wxWindowOS2, wxWindowList, wxWinHashTable);
extern wxWinHashTable *wxWinHandleHash;
#endif // _WX_WINDOW_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -