WIN32 状态控件用法
1.创建控件
状态栏类名:
STATUSCLASSNAME
#define STATUSCLASSNAMEW L"msctls_statusbar32" |
控件样式
dwStyle: 指定控件风格
SBARS_SIZEGRIP: 状态栏控件将包含状态栏右端的大小调整手柄.定位手柄类似于尺寸边界
它是一个矩形区域,用户可以单击并拖动以调整父窗口的大小.
SBT_TOOLTIPS: 使用这种风格来启用工具提示.
SBARS_TOOLTIPS: 与SBT_TOOLTIPS相同
当然还有窗口类的样式:WS_CHILD|WS_VIBLE
创建代码
LRESULT CALLBACK MyWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_CREATE: { HWND hStatus = ::CreateWindowEx(0, STATUSCLASSNAME, NULL, WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, hWnd, (HMENU)1001, ((LPCREATESTRUCT)lParam)->hInstance, 0); }break; } return DefWindowProc(hWnd, uMsg, wParam, lParam); } |
控件消息
SB_ISSIMPLE: 检查状态栏控件以确定它是否处于简单模式.
SB_SETBKCOLOR: 设置状态栏中的背景颜色
SB_SETICON: 设置状态中显示的图标
SB_SETMINHEIGHT:设置状态窗口绘图区域的最小高度.
SB_SETPARTS: 设置状态窗口中分格数量,(以x坐标定位格子的位置)
SB_SETTIPTEXT: 为状态栏设置工具提示文本,必须有SBT_TOOLTIPS样式创建的提示工具提示
SB_SETUNICODEFORMAT:设置显示Unicode字符格式标志.
SB_SIMPLE: 指定状态窗口是显示简单文本还是显示由前一个SB_SETPARTS消息设置的所有窗口部分.
示例:
//将状态栏分为三段,最后为-1表示把剩余部分填满 int array[3] = { 100,200,-1 }; SendMessage(hStatus, SB_SETPARTS, 3, (LPARAM)array);
//设置状态栏文本 SendMessage(hStatus, SB_SETTEXT, 0, (LPARAM)TEXT("第一部分")); SendMessage(hStatus, SB_SETTEXT, 1, (LPARAM)TEXT("第二部分")); SendMessage(hStatus, SB_SETTEXT, 2, (LPARAM)TEXT("第三部分"));
//发送WM_SIZE消息用于重绘控件窗口 SendMessage(hStatus, WM_SIZE, 0, 0); |
自适应窗口大小
在父窗口的WM_SIZE消息中给控件发送些消息,让其重绘
case WM_SIZE: SendMessage(hStatus, WM_SIZE, 0, 0); break; |
通知消息