【转】给MFC对话框程序添加状态栏的方法
本来以为自己对MFC有所了解的,最近再写程序的时候才发现,原来我对MFC一窍不通,记录一下吧:
第一步、先件两个字符串资源:IDS_STATESTRING1,IDS_STATESTRING2,分别用来显示提示信息和版权信息!
第二步、创建一个数组,分别将上面的两个字符串资源ID写到里面:static UINT indicators[]={IDS_STATESTRING1, IDS_STATESTRING2};
第三步、再MFC的对话框类中添加成员变量:CStatusBar m_wndStatusBar;
第四步、由于创建状态栏要再主对话框创建成功以后创建,所以就再对话框初始化的时候添加吧!
CRect rect;
GetClientRect(rect);
if(!m_wndStatusBar.Create(this)|| !m_wndStatusBar.SetIndicators(indicators,sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Can't create status bar\n");
return false;
}
m_wndStatusBar.MoveWindow(0,rect.bottom-20,rect.right,20));// 调整状态栏的位置和大小
GetClientRect(rect);
if(!m_wndStatusBar.Create(this)|| !m_wndStatusBar.SetIndicators(indicators,sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Can't create status bar\n");
return false;
}
m_wndStatusBar.MoveWindow(0,rect.bottom-20,rect.right,20));// 调整状态栏的位置和大小
到这里就创建好了!
如果要调整状态栏每个窗格的大小可以这样,比如我要调整第一个窗格的大小:m_WndStatusBar.SetPaneInfo(0,m_WndStatusBar.GetDlgCtrlID(),SBPS_NORMAL,650);
在程序中,如果要改变制定窗格中文字的化,这样:m_WndStatusBar.SetPaneText(0,"提示: 恭喜你, 参数设置成功...");
如果出现字符不能正常显示等问题的话,需要给这个控件添加Update处理函数:
例如:在MainFrm.h中添加
afx_msg void OnUpdate1(CCmdUI *pCmdUI);
在MainFrm.cpp中添加
ON_UPDATE_COMMAND_UI(ID_INDICATOR_1(要显示字的栏), OnUpdate1)
实现函数:
void CMainFrame::OnUpdate1(CCmdUI *pCmdUI)
{
pCmdUI->Enable();
afx_msg void OnUpdate1(CCmdUI *pCmdUI);
在MainFrm.cpp中添加
ON_UPDATE_COMMAND_UI(ID_INDICATOR_1(要显示字的栏), OnUpdate1)
实现函数:
void CMainFrame::OnUpdate1(CCmdUI *pCmdUI)
{
pCmdUI->Enable();
好了,就这么多~~~
http://www.cppblog.com/besterChen/archive/2009/04/03/78846.aspx