MFC 状态栏

1.在需要创建状态栏的类的头文件中添加成员变量(如果要在主窗口中创建状态栏,那么在CMainFrame添加成员变量)

CStatusBar  m_wndStatusBar;

2..在资源视图中新建一个字符串资源IDS_INDICATOR_POSITION,并设置其内容,然后在CMainFrame的源文件中定义下面的内容:

static UINT indicators[] =
{
	ID_SEPARATOR,           // status line indicator
	IDS_INDICATOR_POSITION,
	ID_INDICATOR_CAPS,
	ID_INDICATOR_NUM,
	ID_INDICATOR_SCRL,
};

      其中第1,3,4,5行的ID往往是CMainFrame中已经存在的ID资源了,我们将自己定义的ID加入到第二行中,这样我们加入的字符串会显示在状态栏的第一个窗格中。

3.在CMainFrame类的OnCreate函数或其他对话框类的OnInitDialog中添加下面的代码:

	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
	}
	m_wndStatusBar.SetPaneText(1,TEXT("hello2 x,128547"),true);
	m_wndStatusBar.SetPaneInfo(1,IDS_INDICATOR_POSITION,SBPS_NORMAL,400);

      第一个if语句中的代码是创建状态栏并设置状态栏中的内容,indicators中存放的字符串的ID对应的字符串是默认要显示在状态栏中的内容。

      SetPaneText函数是一个比较重要的函数,这个函数是设置显示在状态栏窗格中的内容,第一个参数表示第几个窗格,因为之前定义的IDS_INDICATOR_POSITION资源的索引是1,所以这里为1,第二个窗格表示显示在该窗格中的内容,这个参数可以在程序中其他地方改变,从而使状态栏的使用更灵活,第三个参数表示是否立即更新,显然这里设置成true比较好。

      SetPaneInfo这个函数也很重要,有时状态栏中的内容会变化,但是窗格无法完全显示这些内容,这时就可以将这个函数的最后一个参数调大一些,这个函数最后一个参数表示状态栏某窗格的宽度。

4.在程序中某处要修改状态栏的信息时可以使用下面的方法:

				CString str;
				str.Format(L"经度:%f,纬度:%f,高度:%f",Lon,Lat,_Hei);
				CMainFrame *pMain=(CMainFrame   *)AfxGetApp()->m_pMainWnd;
				pMain->m_wndStatusBar.SetPaneText(1,str,true);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值