【MFC】CMFCStatusBar状态栏编程

本文详细介绍了如何在MFC应用程序中定制状态栏,包括添加服务器状态和连接数指示器,通过消息映射响应状态变化,以及更新状态栏显示。通过具体代码展示了初始化状态栏布局、设置样式和颜色的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、在资源视图里面,String Table里面插入两个字符。

 

2、状态栏指示器结构体indicators中添加声明。

static UINT indicators[] =
{
        ID_SEPARATOR,                 //状态行指示器
        //ID_INDICATOR_CAPS,
        //ID_INDICATOR_NUM,
        //ID_INDICATOR_SCRL,
        ID_INDICATOR_SERVER_STS,      //服务器状态
        ID_INDICATOR_LINK_NUM,        //连接数据
};

3、消息映射添加ON_COMMAND_RANGE的宏。

BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWndEx)
        ON_COMMAND_RANGE(ID_INDICATOR_SERVER_STS, ID_INDICATOR_LINK_NUM, NULL)
END_MESSAGE_MAP()

 4、初始化状态栏。

void CMainFrame::InitStatusBar()
{
        int					a, b;

        //获取状态栏索引号
        a = m_wndStatusBar.CommandToIndex(ID_INDICATOR_SERVER_STS);  //
        b = m_wndStatusBar.CommandToIndex(ID_INDICATOR_LINK_NUM);  //

        //设置窗格宽度
        m_wndStatusBar.SetPaneWidth(a, 250);
        m_wndStatusBar.SetPaneWidth(b, 180);

        //设置背景颜色
        //m_wndStatusBar.SetPaneBackgroundColor(a, RGB(0,32,64));
        //m_wndStatusBar.SetPaneBackgroundColor(b, RGB(0,32,64));

        //设置文本颜色
        m_wndStatusBar.SetPaneTextColor(a, RGB(0, 0, 0));
        m_wndStatusBar.SetPaneTextColor(b, RGB(0, 0, 0));
}

5、状态栏更新。

LRESULT CMainFrame::OnUpdateServerStatus(WPARAM wparam, LPARAM lparam)
{
        SERVER_INFO			si;
        CString				strServerStatus;
        CString				strLinkNum;
        int					a, b;

        si = *(SERVER_INFO *)wparam;

        a = m_wndStatusBar.CommandToIndex(ID_INDICATOR_SERVER_STS);  //
        b = m_wndStatusBar.CommandToIndex(ID_INDICATOR_LINK_NUM);  //

        //m_wndStatusBar.SetPaneTextColor(a, RGB(255, 0, 0));
        //m_wndStatusBar.SetPaneTextColor(b, RGB(255, 0, 0));

        if (si.bStatus)
        {
                strServerStatus.Format(_T("服务器:启动"));
                m_wndStatusBar.SetPaneText(a, strServerStatus); 
        }
        else
        {
                strServerStatus.Format(_T("服务器:停止"));
                m_wndStatusBar.SetPaneText(a, strServerStatus); 
        }

        strLinkNum.Format(_T("连接:%d"), si.nLinkNum);
        m_wndStatusBar.SetPaneText(b, strLinkNum); 

        return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值