zoukankan      html  css  js  c++  java
  • win32 sdk 环境下创建状态栏

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

    要创建状态栏用: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);

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

    签名:GreenLeaf1976
  • 相关阅读:
    006使用python编写一个猜数字的程序
    002python函数、高级特性
    008python绘制五个五角星
    005使用 Python 生成 200 个激活码
    001python基础
    003python函数式编程,模块
    004python面向对象,错误,调试和测试
    Docker系列之(一):10分钟玩转Docker
    mongoDB系列之(一):10分钟玩转mongoDB
    Hadoop系列之(二):Hadoop集群部署
  • 原文地址:https://www.cnblogs.com/greenleaf1976/p/14319150.html
Copyright © 2011-2022 走看看