MFC的状态栏CStatusBar编程

本文详细介绍了如何在MFC应用程序中使用状态栏,包括状态栏的创建、配置和实时更新时间显示的方法。

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

MFC的状态栏CStatusBar编程

1. 新建一个多文档的MFC应用程序;

2. 状态栏的定义:在CMainFrame类中定义,如下:

protected: // control bar embedded members

CStatusBar m_wndStatusBar;

3. 在CMainFrame类的OnCreate函数里,生成状态栏:

//////////////////////////////////////////////////////////////////////////

//状态栏

if (!m_wndStatusBar.Create(this) ||

!m_wndStatusBar.SetIndicators(indicators,

sizeof(indicators)/sizeof(UINT)))

{

TRACE0("Failed to create status bar\n");

return -1; // fail to create

}

注意,上述有一个变量indicators;它是一个静态的一个数组,它的定义是有MFC自动生成的;具体代码如下:

//////////////////////////////////////////////////////////////////////////

static UINT indicators[] =

{

ID_SEPARATOR, // status line indicator

ID_INDICATOR_CAPS,

ID_INDICATOR_NUM,

ID_INDICATOR_SCRL,

};

说明:indicators存放的是字符串的ID 号;不同的ID号,对应不同的字符串;

如果想要在右下角的状态栏上继续添加状态栏,可以先新建一个字符串的资源,设置相应的ID号;将该ID号添加到indicators数组中即可;

比如:我们新建两个字符串资源,属性为 IDS_PROCESS 进度 IDS_TIME 时间 ;然后将它们的ID号加入到indicators数组中;运行即可;

4. 在状态栏实时显示系统时间

很明显,实时显示需要动态每隔一秒钟显示一下时间,因此需要用到WM_TIME消息响应;因此对CMainFrame类增加WM_TIME消息响应;

4.1 在类的OnCreate函数中,设置定时器周期; SetTimer(1,1000,NULL);

4.2 在OnTimer函数中添加如下代码:

CTime time=CTime::GetCurrentTime();//获得当前时间

CString str="时间"+time.Format("%H-%M-%S");//将时间转化为字符串

int index=0;//定义一个整型变量,用于存储字符串资源的ID,初始化为0

index=m_wndStatusBar.CommandToIndex(IDS_TIME);

//一下是为了获得字符串STR的空间大小,是str字符串完整的呈现出来;

CClientDC dc(this);

CSize zs=dc.GetTextExtent(str);//获得str字符串画出来时的大小

m_wndStatusBar.SetPaneInfo(index,IDS_TIME,SBPS_NORMAL,zs.cx);//设置索引为index的状态栏的宽度

m_wndStatusBar.SetPaneText(index,str,TRUE);//将含有时间的str字符串显示在状态栏上;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值