MFC对话框中添加状态栏的方法
更新时间:2015年07月21日 16:20:34 作者:华宰
这篇文章主要介绍了MFC对话框中添加状态栏的方法,实例分析了MFC对话框添加状态栏所涉及的相关成员变量与事件实现技巧,需要的朋友可以参考下
本文实例讲述了MFC对话框中添加状态栏的方法。分享给大家供大家参考。具体如下:
1.在对话框的dlg实现类里添加成员变量:
CXTPStatusBar m_wndStatusBar; //状态栏(或者是CStatusBar) //在OnInitDialog方法中初始化: static UINT indicators[] = { ID_SEPARATOR, // status line indicator ID_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 state ASSERT(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 here CRect 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程序设计有所帮助。
最新评论