MFC对话框中添加状态栏的方法

时间:2021-05-20

本文实例讲述了MFC对话框中添加状态栏的方法。分享给大家供大家参考。具体如下:

1.在对话框的dlg实现类里添加成员变量:

CXTPStatusBar m_wndStatusBar; //状态栏(或者是CStatusBar)//在OnInitDialog方法中初始化:static UINT indicators[] ={ID_SEPARATOR, // status line indicatorID_INDICATOR_CAPS,ID_INDICATOR_NUM,ID_INDICATOR_SCRL,};//添加状态栏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}

2.添加OnKickIdle事件(在对话框的dlg的头文件加上) :

afx_msg LRESULT OnKickIdle(WPARAM, LPARAM);afx_msg void OnUpdateKeyIndicator(CCmdUI* pCmdUI);DECLARE_MESSAGE_MAP()

3.在实现类中添加对应的两个方法:

LRESULT CDialogPanesDlg::OnKickIdle(WPARAM, LPARAM){m_wndStatusBar.SendMessage(WM_IDLEUPDATECMDUI, TRUE);return 0;}void CDialogPanesDlg::OnUpdateKeyIndicator(CCmdUI* pCmdUI){UINT nVK;UINT flag = 0×0001;switch (pCmdUI->m_nID){case ID_INDICATOR_CAPS:nVK = VK_CAPITAL;break;case ID_INDICATOR_NUM:nVK = VK_NUMLOCK;break;case ID_INDICATOR_SCRL:nVK = VK_SCROLL;break;default:TRACE1("Warning: OnUpdateKeyIndicator – unknown indicator 0x%04X.\n",pCmdUI->m_nID);pCmdUI->ContinueRouting();return; // not for us}pCmdUI->Enable(::GetKeyState(nVK) & flag);// enable static text based on toggled key stateASSERT(pCmdUI->m_bEnableChanged);}

4.运行发现看不见状态栏,添加对话框的WM_SIZE事件:

void CDialogPanesDlg::OnSize(UINT nType, int cx, int cy){CDialog::OnSize(nType, cx, cy);// TODO: Add your message handler code hereCRect rcClient(0, 0, cx, cy);RepositionBars(0, 0xffff, AFX_IDW_PANE_FIRST, 0, 0, &rcClient);RepositionBars(0, 0xffff, AFX_IDW_PANE_FIRST, reposQuery, &rcClient, &rcClient);}

希望本文所述对大家的MFC程序设计有所帮助。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章