SimpleWindow
|
表示一个Windows窗口,是所有窗口和控件的基类 更多...
#include <WndBase.h>
Public 成员函数 | |
virtual | ~WndBase ()=0 |
析构函数,这里用纯虚函数使该类成为抽象类 | |
bool | operator== (const WndBase &other) const |
判断两个WndBase是否为同一实例 | |
bool | operator!= (const WndBase &other) const |
判断两个WndBase是否为不同实例 | |
virtual UIElement * | ToUIElement () |
尝试将对象转换成UIElement | |
void | Show (int nCmdShow) |
该函数调用ShowWindow | |
void | Close () |
发送关闭消息 | |
void | Update () |
该函数调用UpdateWindow | |
void | UpdateFont () |
更新字体 | |
HFONT | GetFontHandle () |
获取字体句柄 | |
void | Redraw (bool erase=false, bool updateWindow=false) |
重画 | |
bool | IsVisible () |
判断当前对象在界面中是否可视,与Visible属性不同的是该函数返回值会受父窗口的影响 | |
DWORD | GetStyle () |
获取窗口样式 | |
void | SetStyle (DWORD style) |
设置窗口样式 | |
bool | GetStyle (DWORD mask) |
判断窗口是否设有指定样式 | |
void | SetStyle (DWORD mask, bool value) |
打开或关闭指定的样式 | |
DWORD | GetExtendedStyle () |
获取扩展窗口样式 | |
void | SetExtendedStyle (DWORD style) |
设置扩展窗口样式 | |
bool | GetExtendedStyle (DWORD mask) |
判断窗口是否设有指定扩展样式 | |
void | SetExtendedStyle (DWORD mask, bool value) |
打开或关闭指定的扩展样式 | |
Point | PointToScreen (const Point &point) |
获取用户区点在屏幕上点的位置 | |
Point | PointFromScreen (const Point &screenPoint) |
获取屏幕上点在当前用户区点的位置 | |
LRESULT | SendMessageA (UINT uMsg, WPARAM wParam, LPARAM lParam) |
发送消息(ASCII) | |
LRESULT | SendMessageW (UINT uMsg, WPARAM wParam, LPARAM lParam) |
发送消息(UNICODE) | |
BOOL | PostMessageA (UINT uMsg, WPARAM wParam, LPARAM lParam) |
发送消息(ASCII)并立即返回 | |
BOOL | PostMessageW (UINT uMsg, WPARAM wParam, LPARAM lParam) |
发送消息(UNICODE)并立即返回 | |
HitTestResult | NcHitTest (const Point &testPoint) |
测试指定点在窗口的哪一部分 | |
静态 Public 成员函数 | |
static WndBase * | GetWndBase (HWND hwnd) |
通过窗口句柄获取WndBase | |
Public 属性 | |
const ReadOnlyProperty< HWND > | Handle |
窗口句柄 | |
const Property< sw::Font > | Font |
字体 | |
const Property< std::wstring > | FontName |
字体名称 | |
const Property< double > | FontSize |
字体大小 | |
const Property< sw::FontWeight > | FontWeight |
字体粗细 | |
const Property< sw::Rect > | Rect |
位置和尺寸 | |
const Property< double > | Left |
左边 | |
const Property< double > | Top |
顶边 | |
const Property< double > | Width |
宽度 | |
const Property< double > | Height |
高度 | |
const ReadOnlyProperty< sw::Rect > | ClientRect |
用户区尺寸 | |
const ReadOnlyProperty< double > | ClientWidth |
用户区宽度 | |
const ReadOnlyProperty< double > | ClientHeight |
用户区高度 | |
const Property< bool > | Enabled |
窗口或控件是否可用 | |
const Property< bool > | Visible |
窗口或控件是否可见 | |
const Property< std::wstring > | Text |
窗口标题或控件文本 | |
const Property< bool > | Focused |
窗口是否拥有焦点 | |
const ReadOnlyPtrProperty< WndBase * > | Parent |
父窗口 | |
const ReadOnlyProperty< bool > | IsDestroyed |
是否已销毁,当该值为true时不应该继续使用当前对象 | |
const Property< bool > | AcceptFiles |
是否接受拖放文件 | |
const ReadOnlyProperty< bool > | IsControl |
当前对象是否是控件 | |
Protected 成员函数 | |
WndBase () | |
初始化WndBase | |
WndBase (const WndBase &)=delete | |
WndBase (WndBase &&)=delete | |
WndBase & | operator= (const WndBase &)=delete |
WndBase & | operator= (WndBase &&)=delete |
void | InitWindow (LPCWSTR lpWindowName, DWORD dwStyle, DWORD dwExStyle) |
初始化为窗口,该函数会调用CreateWindowExW | |
void | InitControl (LPCWSTR lpClassName, LPCWSTR lpWindowName, DWORD dwStyle, DWORD dwExStyle, LPVOID lpParam=NULL) |
初始化为控件,该函数会调用CreateWindowExW | |
LRESULT | DefaultWndProc (const ProcMsg &refMsg) |
调用默认的WndProc,对于窗口则调用DefWindowProcW,控件则调用_controlOldWndProc | |
virtual LRESULT | WndProc (const ProcMsg &refMsg) |
对WndProc的封装 | |
void | UpdateText () |
更新_text字段 | |
virtual std::wstring & | GetText () |
获取窗口文本 | |
virtual void | SetText (const std::wstring &value) |
调用SetWindowTextW设置窗口文本 | |
virtual bool | OnCreate () |
接收到WM_CREATE时调用该函数 | |
virtual bool | OnClose () |
接收到WM_CLOSE时调用该函数 | |
virtual bool | OnDestroy () |
接收到WM_DESTROY时调用该函数 | |
virtual bool | OnPaint () |
接收到WM_PAINT时调用该函数 | |
virtual void | OnEndPaint () |
在OnPaint函数完成之后调用该函数 | |
virtual bool | OnMove (Point newClientPosition) |
接收到WM_MOVE时调用该函数 | |
virtual bool | OnSize (Size newClientSize) |
接收到WM_SIZE时调用该函数 | |
virtual void | OnTextChanged () |
Text属性更改时调用此函数 | |
virtual bool | OnSetFocus (HWND hPrevFocus) |
接收到WM_SETFOCUS时调用该函数 | |
virtual bool | OnKillFocus (HWND hNextFocus) |
接收到WM_KILLFOCUS时调用该函数 | |
virtual bool | OnMouseMove (Point mousePosition, MouseKey keyState) |
接收到WM_MOUSEMOVE时调用该函数 | |
virtual bool | OnMouseLeave () |
接收到WM_MOUSELEAVE时调用该函数 | |
virtual bool | OnMouseWheel (int wheelDelta, Point mousePosition, MouseKey keyState) |
接收到WM_MOUSEWHEEL时调用该函数 | |
virtual bool | OnMouseLeftButtonDown (Point mousePosition, MouseKey keyState) |
接收到WM_LBUTTONDOWN时调用该函数 | |
virtual bool | OnMouseLeftButtonUp (Point mousePosition, MouseKey keyState) |
接收到WM_LBUTTONUP时调用该函数 | |
virtual bool | OnMouseLeftButtonDoubleClick (Point mousePosition, MouseKey keyState) |
接收到WM_LBUTTONDBLCLK时调用该函数 | |
virtual bool | OnMouseRightButtonDown (Point mousePosition, MouseKey keyState) |
接收到WM_RBUTTONDOWN时调用该函数 | |
virtual bool | OnMouseRightButtonUp (Point mousePosition, MouseKey keyState) |
接收到WM_RBUTTONUP时调用该函数 | |
virtual bool | OnMouseRightButtonDoubleClick (Point mousePosition, MouseKey keyState) |
接收到WM_RBUTTONDBLCLK时调用该函数 | |
virtual bool | OnMouseMiddleButtonDown (Point mousePosition, MouseKey keyState) |
接收到WM_MBUTTONDOWN时调用该函数 | |
virtual bool | OnMouseMiddleButtonUp (Point mousePosition, MouseKey keyState) |
接收到WM_MBUTTONUP时调用该函数 | |
virtual bool | OnMouseMiddleButtonDoubleClick (Point mousePosition, MouseKey keyState) |
接收到WM_MBUTTONDBLCLK时调用该函数 | |
virtual bool | OnChar (wchar_t ch, KeyFlags flags) |
接收到WM_CHAR时调用该函数 | |
virtual bool | OnDeadChar (wchar_t ch, KeyFlags flags) |
接收到WM_DEADCHAR时调用该函数 | |
virtual bool | OnKeyDown (VirtualKey key, KeyFlags flags) |
接收到WM_KEYDOWN时调用该函数 | |
virtual bool | OnKeyUp (VirtualKey key, KeyFlags flags) |
接收到WM_KEYUP时调用该函数 | |
virtual bool | OnSysChar (wchar_t ch, KeyFlags flags) |
接收到WM_SYSCHAR时调用该函数 | |
virtual bool | OnSysDeadChar (wchar_t ch, KeyFlags flags) |
接收到WM_SYSDEADCHAR时调用该函数 | |
virtual bool | OnSysKeyDown (VirtualKey key, KeyFlags flags) |
接收到WM_SYSKEYDOWN时调用该函数 | |
virtual bool | OnSysKeyUp (VirtualKey key, KeyFlags flags) |
接收到WM_SYSKEYUP时调用该函数 | |
virtual void | VisibleChanged (bool newVisible) |
Visible属性改变时调用此函数 | |
virtual bool | SetParent (WndBase *parent) |
设置父窗口 | |
virtual void | ParentChanged (WndBase *newParent) |
父窗口改变时调用此函数 | |
virtual void | OnCommand (int code) |
当父窗口接收到控件的WM_COMMAND时调用该函数 | |
virtual void | OnControlCommand (WndBase *pControl, int code, int id) |
当WM_COMMAND接收到控件命令时调用该函数 | |
virtual void | OnMenuCommand (int id) |
当WM_COMMAND接收到菜单命令时调用该函数 | |
virtual void | OnAcceleratorCommand (int id) |
当WM_COMMAND接收到快捷键命令时调用该函数 | |
virtual void | HandleInitialized (HWND hwnd) |
窗口句柄初始化完成 | |
virtual void | FontChanged (HFONT hfont) |
字体改变时调用该函数 | |
virtual bool | OnSetCursor (HWND hwnd, HitTestResult hitTest, int message, bool &result) |
接收到WM_SETCURSOR消息时调用该函数 | |
virtual bool | OnContextMenu (bool isKeyboardMsg, Point mousePosition) |
接收到WM_CONTEXTMENU后调用目标控件的该函数 | |
virtual bool | OnNotify (NMHDR *pNMHDR, LRESULT &result) |
接收到WM_NOTIFY后调用该函数 | |
virtual bool | OnNotified (NMHDR *pNMHDR, LRESULT &result) |
父窗口接收到WM_NOTIFY后且父窗口OnNotify函数返回false时调用发出通知控件的该函数 | |
virtual bool | OnVerticalScroll (int event, int pos) |
接收到WM_VSCROLL时调用目标控件的该函数 | |
virtual bool | OnHorizontalScroll (int event, int pos) |
接收到WM_HSCROLL时调用目标控件的该函数 | |
virtual bool | OnEnabledChanged (bool newValue) |
接收到WM_ENABLE时调用该函数 | |
virtual bool | OnCtlColor (WndBase *pControl, HDC hdc, HBRUSH &hRetBrush) |
接收到WM_CTLCOLORxxx时调用该函数 | |
virtual bool | OnColor (HDC hdc, HBRUSH &hRetBrush) |
父窗口接收到WM_CTLCOLORxxx时调用对应控件的该函数 | |
virtual void | OnNcHitTest (const Point &testPoint, HitTestResult &result) |
接收到WM_NCHITTEST后调用该函数 | |
virtual bool | OnEraseBackground (HDC hdc, LRESULT &result) |
接收到WM_ERASEBKGND时调用该函数 | |
virtual bool | OnDrawItem (int id, DRAWITEMSTRUCT *pDrawItem) |
接收到WM_DRAWITEM时调用该函数 | |
virtual bool | OnDrawItemSelf (DRAWITEMSTRUCT *pDrawItem) |
父窗口接收到WM_DRAWITEM后且父窗口OnDrawItem函数返回false时调用发出通知控件的该函数 | |
virtual bool | OnMeasureItem (int id, MEASUREITEMSTRUCT *pMeasure) |
接收到WM_MEASUREITEM时调用该函数 | |
virtual bool | OnMeasureItemSelf (MEASUREITEMSTRUCT *pMeasure) |
父窗口接收到WM_MEASUREITEM后且父窗口OnMeasureItem函数返回false时调用发出通知控件的该函数 | |
virtual bool | OnDropFiles (HDROP hDrop) |
接收到WM_DROPFILES时调用该函数 | |
友元 | |
class | Control |
class | HwndWrapper |
表示一个Windows窗口,是所有窗口和控件的基类
|
protectedvirtual |
bool sw::WndBase::GetExtendedStyle | ( | DWORD | mask | ) |
判断窗口是否设有指定扩展样式
mask | 扩展样式的位掩码,可以是多个扩展样式 |
bool sw::WndBase::GetStyle | ( | DWORD | mask | ) |
判断窗口是否设有指定样式
mask | 样式的位掩码,可以是多个样式 |
|
protectedvirtual |
|
static |
通过窗口句柄获取WndBase
hwnd | 窗口句柄 |
|
protectedvirtual |
窗口句柄初始化完成
hwnd | 窗口句柄 |
HitTestResult sw::WndBase::NcHitTest | ( | const Point & | testPoint | ) |
测试指定点在窗口的哪一部分
testPoint | 要测试的点在屏幕中的位置 |
|
protectedvirtual |
当WM_COMMAND接收到快捷键命令时调用该函数
id | 快捷键id |
|
protectedvirtual |
接收到WM_CHAR时调用该函数
ch | 按键的字符代码 |
flags | 附加信息 |
被 sw::TextBoxBase , 以及 sw::UIElement 重载.
|
protectedvirtual |
|
protectedvirtual |
父窗口接收到WM_CTLCOLORxxx时调用对应控件的该函数
hdc | 控件的显示上下文句柄 |
hRetBrush | 要返回的画笔 |
被 sw::UIElement 重载.
|
protectedvirtual |
当父窗口接收到控件的WM_COMMAND时调用该函数
code | 通知代码 |
被 sw::ButtonBase, sw::ComboBox, sw::HotKeyControl, sw::ListBox , 以及 sw::TextBoxBase 重载.
|
protectedvirtual |
接收到WM_CONTEXTMENU后调用目标控件的该函数
isKeyboardMsg | 消息是否由按下快捷键(Shift+F10、VK_APPS)产生 |
mousePosition | 鼠标在屏幕中的位置 |
被 sw::ListBox , 以及 sw::UIElement 重载.
|
protectedvirtual |
当WM_COMMAND接收到控件命令时调用该函数
pControl | 控件对象指针 |
code | 通知代码 |
id | 控件id |
|
protectedvirtual |
接收到WM_CREATE时调用该函数
|
protectedvirtual |
接收到WM_CTLCOLORxxx时调用该函数
pControl | 消息相关的控件 |
hdc | 控件的显示上下文句柄 |
hRetBrush | 要返回的画笔 |
|
protectedvirtual |
接收到WM_DEADCHAR时调用该函数
ch | 按键的字符代码 |
flags | 附加信息 |
|
protectedvirtual |
接收到WM_DESTROY时调用该函数
被 sw::BmpBox, sw::HwndHost, sw::IconBox , 以及 sw::Window 重载.
|
protectedvirtual |
接收到WM_DRAWITEM时调用该函数
id | 控件的标识符,若消息是通过菜单发送的则此参数为零 |
pDrawItem | 包含有关要绘制的项和所需绘图类型的信息的结构体指针 |
|
protectedvirtual |
父窗口接收到WM_DRAWITEM后且父窗口OnDrawItem函数返回false时调用发出通知控件的该函数
pDrawItem | 包含有关要绘制的项和所需绘图类型的信息的结构体指针 |
|
protectedvirtual |
接收到WM_DROPFILES时调用该函数
hDrop | 描述拖入文件的句柄 |
被 sw::UIElement 重载.
|
protectedvirtual |
接收到WM_ENABLE时调用该函数
newValue | Enabled的新值 |
|
protectedvirtual |
在OnPaint函数完成之后调用该函数
被 sw::UIElement 重载.
|
protectedvirtual |
接收到WM_ERASEBKGND时调用该函数
hdc | 设备上下文句柄 |
result | 若已处理该消息则设为非零值,默认值为0 |
被 sw::Window 重载.
|
protectedvirtual |
接收到WM_HSCROLL时调用目标控件的该函数
event | 事件类型,即消息wParam的低字 |
pos | 当前滚动条的位置,仅当event为SB_THUMBPOSITION或SB_THUMBTRACK时有效 |
被 sw::Layer, sw::PanelBase , 以及 sw::Slider 重载.
|
protectedvirtual |
接收到WM_KEYDOWN时调用该函数
key | 虚拟按键 |
flags | 附加信息 |
被 sw::Button, sw::TextBoxBase , 以及 sw::UIElement 重载.
|
protectedvirtual |
接收到WM_KEYUP时调用该函数
key | 虚拟按键 |
flags | 附加信息 |
被 sw::UIElement 重载.
|
protectedvirtual |
接收到WM_KILLFOCUS时调用该函数
hNextFocus | 接收到焦点的hwnd,可能为NULL |
被 sw::Button , 以及 sw::UIElement 重载.
|
protectedvirtual |
接收到WM_MEASUREITEM时调用该函数
id | 控件的标识符,若消息是通过菜单发送的则此参数为零 |
pMeasure | 包含有关要绘制的项的信息的结构体指针 |
|
protectedvirtual |
父窗口接收到WM_MEASUREITEM后且父窗口OnMeasureItem函数返回false时调用发出通知控件的该函数
pMeasure | 包含有关要绘制的项的信息的结构体指针 |
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
接收到WM_LBUTTONDBLCLK时调用该函数
mousePosition | 鼠标在用户区中的位置 |
keyState | 指示某些按键是否按下 |
|
protectedvirtual |
接收到WM_LBUTTONDOWN时调用该函数
mousePosition | 鼠标在用户区中的位置 |
keyState | 指示某些按键是否按下 |
被 sw::UIElement 重载.
|
protectedvirtual |
接收到WM_LBUTTONUP时调用该函数
mousePosition | 鼠标在用户区中的位置 |
keyState | 指示某些按键是否按下 |
被 sw::UIElement 重载.
|
protectedvirtual |
接收到WM_MBUTTONDBLCLK时调用该函数
mousePosition | 鼠标在用户区中的位置 |
keyState | 指示某些按键是否按下 |
|
protectedvirtual |
接收到WM_MBUTTONDOWN时调用该函数
mousePosition | 鼠标在用户区中的位置 |
keyState | 指示某些按键是否按下 |
被 sw::UIElement 重载.
|
protectedvirtual |
接收到WM_MBUTTONUP时调用该函数
mousePosition | 鼠标在用户区中的位置 |
keyState | 指示某些按键是否按下 |
被 sw::UIElement 重载.
|
protectedvirtual |
接收到WM_MOUSEMOVE时调用该函数
mousePosition | 鼠标在用户区中的位置 |
keyState | 指示某些按键是否按下 |
被 sw::UIElement 重载.
|
protectedvirtual |
接收到WM_RBUTTONDBLCLK时调用该函数
mousePosition | 鼠标在用户区中的位置 |
keyState | 指示某些按键是否按下 |
|
protectedvirtual |
接收到WM_RBUTTONDOWN时调用该函数
mousePosition | 鼠标在用户区中的位置 |
keyState | 指示某些按键是否按下 |
被 sw::UIElement 重载.
|
protectedvirtual |
接收到WM_RBUTTONUP时调用该函数
mousePosition | 鼠标在用户区中的位置 |
keyState | 指示某些按键是否按下 |
被 sw::UIElement 重载.
|
protectedvirtual |
接收到WM_MOUSEWHEEL时调用该函数
wheelDelta | 滚轮滚动的距离,为120的倍数 |
mousePosition | 鼠标在用户区中的位置 |
keyState | 指示某些按键是否按下 |
被 sw::UIElement 重载.
|
protectedvirtual |
接收到WM_MOVE时调用该函数
newClientPosition | 移动后用户区左上角的位置 |
被 sw::UIElement 重载.
|
protectedvirtual |
接收到WM_NCHITTEST后调用该函数
testPoint | 要测试的点在屏幕中的位置 |
result | 测试的结果,默认为调用DefaultWndProc的结果 |
|
protectedvirtual |
父窗口接收到WM_NOTIFY后且父窗口OnNotify函数返回false时调用发出通知控件的该函数
pNMHDR | 包含有关通知消息的信息 |
result | 函数返回值为true时将该值作为消息的返回值 |
被 sw::DateTimePicker, sw::ListView, sw::MonthCalendar, sw::SysLink , 以及 sw::TabControl 重载.
|
protectedvirtual |
接收到WM_NOTIFY后调用该函数
pNMHDR | 包含有关通知消息的信息 |
result | 函数返回值为true时将该值作为消息的返回值,默认值为0 |
被 sw::IPAddressControl , 以及 sw::ListView 重载.
|
protectedvirtual |
接收到WM_PAINT时调用该函数
被 sw::BmpBox, sw::Panel, sw::Splitter , 以及 sw::Window 重载.
|
protectedvirtual |
接收到WM_SETCURSOR消息时调用该函数
hwnd | 鼠标所在窗口的句柄 |
hitTest | hit-test的结果,详见WM_NCHITTEST消息的返回值 |
message | 触发该事件的鼠标消息,如WM_MOUSEMOVE |
result | 消息的返回值,默认为false |
被 sw::UIElement 重载.
|
protectedvirtual |
接收到WM_SETFOCUS时调用该函数
hPrevFocus | 丢失焦点的hwnd,可能为NULL |
被 sw::Button, sw::IPAddressControl , 以及 sw::UIElement 重载.
|
protectedvirtual |
接收到WM_SIZE时调用该函数
newClientSize | 改变后的用户区尺寸 |
被 sw::BmpBox, sw::HwndHost, sw::Label, sw::Panel, sw::Splitter , 以及 sw::UIElement 重载.
|
protectedvirtual |
接收到WM_SYSCHAR时调用该函数
ch | 按键的字符代码 |
flags | 附加信息 |
|
protectedvirtual |
接收到WM_SYSDEADCHAR时调用该函数
ch | 按键的字符代码 |
flags | 附加信息 |
|
protectedvirtual |
接收到WM_SYSKEYDOWN时调用该函数
key | 虚拟按键 |
flags | 附加信息 |
|
protectedvirtual |
接收到WM_SYSKEYUP时调用该函数
key | 虚拟按键 |
flags | 附加信息 |
|
protectedvirtual |
Text属性更改时调用此函数
被 sw::Label, sw::SysLink , 以及 sw::UIElement 重载.
|
protectedvirtual |
接收到WM_VSCROLL时调用目标控件的该函数
event | 事件类型,即消息wParam的低字 |
pos | 当前滚动条的位置,仅当event为SB_THUMBPOSITION或SB_THUMBTRACK时有效 |
被 sw::Layer, sw::PanelBase , 以及 sw::Slider 重载.
|
protectedvirtual |
获取屏幕上点在当前用户区点的位置
screenPoint | 屏幕上点的坐标 |
void sw::WndBase::Redraw | ( | bool | erase = false, |
bool | updateWindow = false ) |
重画
erase | 是否擦除旧的背景 |
updateWindow | 是否调用UpdateWindow |
void sw::WndBase::SetExtendedStyle | ( | DWORD | mask, |
bool | value ) |
打开或关闭指定的扩展样式
mask | 扩展样式的位掩码,可以是多个扩展样式 |
value | 是否启用指定的扩展样式 |
|
protectedvirtual |
void sw::WndBase::SetStyle | ( | DWORD | mask, |
bool | value ) |
打开或关闭指定的样式
mask | 样式的位掩码,可以是多个样式 |
value | 是否启用指定的样式 |
|
protectedvirtual |
|
virtual |
|
protectedvirtual |
Visible属性改变时调用此函数
被 sw::UIElement 重载.
|
protectedvirtual |
对WndProc的封装
被 sw::Window 重载.