首页 > 编程 > C > 正文

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

2020-01-26 15:01:37
字体:
来源:转载
供稿:网友

本文实例讲述了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程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选