📄 window.h
字号:
/////////////////////////////////////////////////////////////////////////////
// Name: wx/os2/window.h
// Purpose: wxWindow class
// Author: David Webster
// Modified by:
// Created: 10/12/99
// RCS-ID: $Id: window.h,v 1.57 2006/07/09 17:44:05 SN Exp $
// Copyright: (c) David Webster
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_WINDOW_H_
#define _WX_WINDOW_H_
#define wxUSE_MOUSEEVENT_HACK 0
// ---------------------------------------------------------------------------
// headers
// ---------------------------------------------------------------------------
#define INCL_DOS
#define INCL_PM
#define INCL_GPI
#include <os2.h>
// ---------------------------------------------------------------------------
// forward declarations
// ---------------------------------------------------------------------------
#ifndef CW_USEDEFAULT
# define CW_USEDEFAULT ((int)0x80000000)
#endif
// ---------------------------------------------------------------------------
// forward declarations
// ---------------------------------------------------------------------------
class WXDLLEXPORT wxButton;
// ---------------------------------------------------------------------------
// constants
// ---------------------------------------------------------------------------
#if WXWIN_COMPATIBILITY_2_4
// they're unused by wxWidgets...
enum
{
wxKEY_SHIFT = 1,
wxKEY_CTRL = 2
};
#endif
// ---------------------------------------------------------------------------
// wxWindow declaration for OS/2 PM
// ---------------------------------------------------------------------------
class WXDLLEXPORT wxWindowOS2 : public wxWindowBase
{
public:
wxWindowOS2()
{
Init();
}
wxWindowOS2( wxWindow* pParent
,wxWindowID vId
,const wxPoint& rPos = wxDefaultPosition
,const wxSize& rSize = wxDefaultSize
,long lStyle = 0
,const wxString& rName = wxPanelNameStr
)
{
Init();
Create( pParent
,vId
,rPos
,rSize
,lStyle
,rName
);
}
virtual ~wxWindowOS2();
bool Create( wxWindow* pParent
,wxWindowID vId
,const wxPoint& rPos = wxDefaultPosition
,const wxSize& rSize = wxDefaultSize
,long lStyle = 0
,const wxString& rName = wxPanelNameStr
);
// implement base class pure virtuals
virtual void SetLabel(const wxString& label);
virtual wxString GetLabel(void) const;
virtual void Raise(void);
virtual void Lower(void);
virtual bool Show(bool bShow = true);
virtual bool Enable(bool bEnable = true);
virtual void SetFocus(void);
virtual void SetFocusFromKbd(void);
virtual bool Reparent(wxWindow* pNewParent);
virtual void WarpPointer( int x
,int y
);
virtual void Refresh( bool bEraseBackground = true
,const wxRect* pRect = (const wxRect *)NULL
);
virtual void Freeze(void);
virtual void Update(void);
virtual void Thaw(void);
virtual void SetWindowStyleFlag(long lStyle);
virtual bool SetCursor(const wxCursor& rCursor);
virtual bool SetFont(const wxFont& rFont);
virtual int GetCharHeight(void) const;
virtual int GetCharWidth(void) const;
virtual void GetTextExtent( const wxString& rString
,int* pX
,int* pY
,int* pDescent = (int *)NULL
,int* pExternalLeading = (int *)NULL
,const wxFont* pTheFont = (const wxFont *)NULL
) const;
#if wxUSE_MENUS_NATIVE
virtual bool DoPopupMenu( wxMenu* pMenu
,int nX
,int nY
);
#endif // wxUSE_MENUS_NATIVE
virtual void SetScrollbar( int nOrient
,int nPos
,int nThumbVisible
,int nRange
,bool bRefresh = true
);
virtual void SetScrollPos( int nOrient
,int nPos
,bool bRefresh = true
);
virtual int GetScrollPos(int nOrient) const;
virtual int GetScrollThumb(int nOrient) const;
virtual int GetScrollRange(int nOrient) const;
virtual void ScrollWindow( int nDx
,int nDy
,const wxRect* pRect = (wxRect *)NULL
);
inline HWND GetScrollBarHorz(void) const {return m_hWndScrollBarHorz;}
inline HWND GetScrollBarVert(void) const {return m_hWndScrollBarVert;};
#if wxUSE_DRAG_AND_DROP
virtual void SetDropTarget(wxDropTarget* pDropTarget);
#endif // wxUSE_DRAG_AND_DROP
// Accept files for dragging
virtual void DragAcceptFiles(bool bAccept);
#ifndef __WXUNIVERSAL__
// Native resource loading (implemented in src/os2/nativdlg.cpp)
// FIXME: should they really be all virtual?
virtual bool LoadNativeDialog( wxWindow* pParent
,wxWindowID& vId
);
virtual bool LoadNativeDialog( wxWindow* pParent
,const wxString& rName
);
wxWindow* GetWindowChild1(wxWindowID vId);
wxWindow* GetWindowChild(wxWindowID vId);
#endif //__WXUNIVERSAL__
// implementation from now on
// --------------------------
// simple accessors
// ----------------
WXHWND GetHWND(void) const { return m_hWnd; }
void SetHWND(WXHWND hWnd) { m_hWnd = hWnd; }
virtual WXWidget GetHandle(void) const { return GetHWND(); }
bool GetUseCtl3D(void) const { return m_bUseCtl3D; }
bool GetTransparentBackground(void) const { return m_bBackgroundTransparent; }
void SetTransparent(bool bT = true) { m_bBackgroundTransparent = bT; }
// event handlers
// --------------
void OnSetFocus(wxFocusEvent& rEvent);
void OnEraseBackground(wxEraseEvent& rEvent);
void OnIdle(wxIdleEvent& rEvent);
public:
// Windows subclassing
void SubclassWin(WXHWND hWnd);
void UnsubclassWin(void);
WXFARPROC OS2GetOldWndProc(void) const { return m_fnOldWndProc; }
void OS2SetOldWndProc(WXFARPROC fnProc) { m_fnOldWndProc = fnProc; }
//
// Return true if the window is of a standard (i.e. not wxWidgets') class
//
bool IsOfStandardClass(void) const { return m_fnOldWndProc != NULL; }
wxWindow* FindItem(long lId) const;
wxWindow* FindItemByHWND( WXHWND hWnd
,bool bControlOnly = false
) const;
// Make a Windows extended style from the given wxWidgets window style ?? applicable to OS/2??
static WXDWORD MakeExtendedStyle( long lStyle
,bool bEliminateBorders = true
);
// PM only: true if this control is part of the main control
virtual bool ContainsHWND(WXHWND WXUNUSED(hWnd)) const { return false; };
// translate wxWidgets style flags for this control into the PM 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 OS2GetCreateWindowFlags() below
virtual WXDWORD OS2GetStyle( long lFlags
,WXDWORD* pdwExstyle = 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 OS2GetCreateWindowFlags(WXDWORD* pdwExflags = NULL) const
{ return OS2GetStyle(GetWindowStyle(), pdwExflags); }
// get the HWND to be used as parent of this window with CreateWindow()
virtual WXHWND OS2GetParent(void) const;
// returns true if the window has been created
bool OS2Create( PSZ zClass
,const wxChar* zTitle
,WXDWORD dwStyle
,const wxPoint& rPos
,const wxSize& rSize
,void* pCtlData
,WXDWORD dwExStyle
,bool bIsChild
);
virtual bool OS2Command( WXUINT uParam
,WXWORD nId
);
#ifndef __WXUNIVERSAL__
// Create an appropriate wxWindow from a HWND
virtual wxWindow* CreateWindowFromHWND( wxWindow* pParent
,WXHWND hWnd
);
// Make sure the window style reflects the HWND style (roughly)
virtual void AdoptAttributesFromHWND(void);
#endif
// Setup background and foreground colours correctly
virtual void SetupColours(void);
// ------------------------------------------------------------------------
// 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* pId
,WXHWND* pHwnd
,WXWORD* pCmd
);
void UnpackActivate( WXWPARAM wParam
,WXLPARAM lParam
,WXWORD* pState
,WXHWND* pHwnd
);
void UnpackScroll( WXWPARAM wParam
,WXLPARAM lParam
,WXWORD* pCode
,WXWORD* pPos
,WXHWND* pHwnd
);
void UnpackMenuSelect( WXWPARAM wParam
,WXLPARAM lParam
,WXWORD* pTtem
,WXWORD* pFlags
,WXHMENU* pHmenu
);
// ------------------------------------------------------------------------
// internal handlers for OS2 messages: all handlers return a boolen value:
// true means that the handler processed the event and false that it didn't
// ------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -