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);

示例2,设置文本的时候设置绘制文本样式

SendMessage(hStatusBar, SB_SETTEXT, 0, (LPARAM)TEXT("第一个格子")); // 默认绘制样式
SendMessage(hStatusBar, SB_SETTEXT, 1 | SBT_NOBORDERS, (LPARAM)TEXT("第2个格子"));// 没有边框绘制
SendMessage(hStatusBar, SB_SETTEXT, 2 | SBT_POPOUT, (LPARAM)TEXT("第3个格子"));	// 边框凸起绘制文本
SendMessage(hStatusBar, SB_SETTEXT, 3 | SBT_RTLREADING, (LPARAM)TEXT("第4个格子"));// 文本与父窗口显示相反

 第四个说是和父窗口文本显示相反方向,不知道为啥没有相反显示

自适应窗口大小

在父窗口的WM_SIZE消息中给控件发送些消息,让其重绘

case WM_SIZE:

                   SendMessage(hStatus, WM_SIZE, 0, 0);

                   break;

通知消息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值