今天在学习状态栏,出了好多的问题,这里记录下.

要创建状态栏用:CreateStatusWindow

CreateStatusWindow函数创建一个状态窗口,通常用于显示应用程序的状态。窗口通常显示在父窗口的底部,它包含指定的文本。

HWND CreateStatusWindow(

LONG,    //状态栏样式

LPCTSTR,  //第一格要显示的字符串指针

HWND,    //父窗口句柄

UINT);    //状态窗口的控制标识符

参数

【样式】

状态窗口的窗口样式。此参数必须包含WS_CHILD样式,并且还应包含WS_VISIBLE样式。

【lpszText】

指向指定第一个部分的状态文本的以空值终止的字符串的指针。

【hwndParent】

处理到父窗口。

【wID】

状态窗口的控制标识符。窗口过程使用此值来标识发送到父窗口的消息。

返回值

如果函数成功,则返回值是状态窗口的句柄。

如果函数失败,返回值为NULL。

备注

CreateStatusWindow函数调用CreateWindow函数创建窗口。它将参数传递给CreateWindow而不进行修改,并将position,width和height参数设置为默认值。

所以也可以用CreateWindow来创建,这个以后再说.

//我这是创建的全局状态栏句柄HWND hWndStatus
//还要自己定义一个状态栏的ID号
#define IDC_STATUS1 10001

在OnInitDialog()函数中添加:

hWndStatus = ::CreateStatusWindow(WS_CHILD | WS_VISIBLE | SBS_SIZEGRIP,
NULL, m_hWnd, IDC_STATUS1);  //创建状态栏

RECT rect;
GetClientRect(m_hWnd, &rect);  //获得窗口的尺寸
int nWith = rect.right / 6;    //把窗口分成六份

//这是每格的宽度,搞不明白为啥子是这个样子,头有点大,你说是x坐标值也不对,
//我这是分成三个格子,第一个格子点了4份,所以*了个4,后面二个都是占一份,
//如果是最后一格填满剩余的空间就把最后一个写成-1,数组格式就是:
//int nWiths[3]={nWitch,nWitch*2,-1};

int nWiths[3] = { nWith * 4,nWith * 5,nWith * 6 }; ::SendMessage(hWndStatus, SB_SETPARTS, 3, (LPARAM)(long)nWiths);
::MoveWindow(hWndStatus, 0, 0, 0, 0, TRUE);

基本上就是这个样子了

一片空白,没有也东西呢.

//写到状态中相应的格子中,WPARAM参数就是格式的索引值
::SendMessage(hWndStatus, SB_SETTEXT, 0, (long)TEXT("准备就绪"));
::SendMessage(hWndStatus, SB_SETTEXT, 1, (long)TEXT("系统时间"));
::SendMessage(hWndStatus, SB_SETTEXT, 2, (long)TEXT("系统时间2"));

最后在窗体WM_SIZE消息中通知状态栏自己适应窗体大小,

RECT rect;
GetClientRect(m_hWnd, &rect);
int nWith = rect.right / 6;
int sWiths[3] = { nWith * 4 ,nWith * 5,nWith * 6 }; ::SendMessage(hWndStatus, SB_SETPARTS, 3, (LPARAM)(long)sWiths);
::MoveWindow(hWndStatus, 0, 0, 0, 0, TRUE);

差不多就是这样了,其他的以后再研究吧

win32 sdk 环境下创建状态栏的更多相关文章

  1. windows环境下创建 .文件夹

    一.windows环境下创建 .文件夹 1.新建一个文件夹 2.重命名为.properties.(名字前后都加点) 二.windows环境下创建 .文件 1.上面的方法对文件同样适用 2.运行CMD, ...

  2. ROS 教程之 navigation :在 catkin 环境下创建costmap layer plugin

    在做机器人导航的时候,肯定见到过global_costmap和local_costmap.global_costmap是为了全局路径规划服务的,如从这个房间到那个房间该怎么走.local_costma ...

  3. centos环境下创建数据库和表的方法

    centos环境下创建数据库和表的方法 //查询数据库的命令: mysql> SHOW DATABASES; +--------------------+ | Database         ...

  4. 多线程编程之Windows环境下创建新线程

    转自: http://www.cnblogs.com/lgxqf/archive/2009/02/10/1387480.html 在 Win32 API 中,创建线程的基本函数是 CreateThre ...

  5. 在Windows中单机环境下创建RabbitMQ集群

    本文根据:http://www.360doc.com/content/15/0312/17/20874412_454622619.shtml整理而来 RabbitMQ具有很好的消息传递性能,同时又是开 ...

  6. 在Win32 Application 环境下实现MFC窗口的创建

    // Win32下MFC.cpp : Defines the entry point for the application.// #include "stdafx.h" clas ...

  7. Win32 SDK 编程开始, 创建窗口, 消息的处理, 消息循环

    Windows SDK 编程的一般步骤为: 1. 注册窗口类, 使用到的结构 WNDCLASSEX, 函数 RegisterClassEx. 2. 创建窗口, 函数 CreateWindowEx. 3 ...

  8. cocos2d-x v3.0各个环境下创建项目以及编译、执行官方DEMO

    摘自:https://github.com/cocos2d/cocos2d-x/ 怎样创建一个新项目 How to start a new game Download the code from co ...

  9. docker 环境下创建 overlay 网络方案

    一.环境 三台机器,其中一台安装 consul(192.168.1.21), 两台创建网络(192.168.1.32,33) 二.实现步骤 1.构建环境 1)三台机器部署docker环境 2)选择一台 ...

随机推荐

  1. 精尽Spring MVC源码分析 - HandlerAdapter 组件(三)之 HandlerMethodArgumentResolver

    该系列文档是本人在学习 Spring MVC 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释 Spring MVC 源码分析 GitHub 地址 进行阅读 Spring 版本:5.2. ...

  2. 钩子与API截获

    http://www.pudn.com/Download/type/id/19.html

  3. 精尽Spring MVC源码分析 - HandlerAdapter 组件(四)之 HandlerMethodReturnValueHandler

    该系列文档是本人在学习 Spring MVC 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释 Spring MVC 源码分析 GitHub 地址 进行阅读 Spring 版本:5.2. ...

  4. python爬虫之解析链接

    解析链接 1. urlparse() & urlunparse() urlparse() 是对url链接识别和分段的,API用法如下: urllib.parse.urlparse(urlstr ...

  5. 【剑指offer】00 开撸剑指offer

    此篇为刷题链接集合,我会将剑指offer中的每一题单独做一篇随笔,然后将链接加在本篇随笔中. //将用JavaScript解题 剑指offer:https://www.nowcoder.com/ta/ ...

  6. jq再次封装自己的ajax & js 回调函数 & js方法注释&js 全局屏蔽点击事件及a标签

    1.封装成一个独立JS var commonUrl = 'http://xx.xxx.com/'; function http({ url, type = "post", data ...

  7. 7.自定义ViewGroup-下滑抽屉

    1.效果 2.思路 分析效果: 1.布局分为两部分,后面部分,前面部分,默认状态后面被挡住: 2.后面不可以滑动,前面可以滑动: 3.如果前面的布局本身是可以滑动的,那么当前面布局滑动到第一个时,后面 ...

  8. Sentinel滑动窗口算法

    在前面搞清楚了Sentinel的使用后,大致理了一下Sentinel的责任链,搞清楚了这个,基本就已经梳理清楚sentinel-core模块的大部分内容,顺着这条链路可以继续梳理很多东西. 知其然.知 ...

  9. Thread.yeild方法详解

    从原理上讲其实Thread.yeild方法其实只是给线程调度机制一个暗示:我的任务处理的差不多了,可以让给相同优先级的线程CPU资源了:不过确实只是一个暗示,没有任何机制保证它的建议将被采纳: 看一个 ...

  10. easyui中的下拉菜单是树形结构时如何实现onchange方法

    今天碰到一个问题就是我写的代码中的一个下拉列表显示的是树型菜单,代码如下(使用的是easyui): .... <tr> <td>地区:</td> <td> ...