`
Michaelmatrix
  • 浏览: 209522 次
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Window消息机制_3

阅读更多

菜单、工具条、状态条的更新问题

MFC中上述的默认处理是:当菜单项或者工具条按钮在应用类,框架类,视图类,文档类中都没有找到响应函数时,将变成无效状态,反之有效。当时可以设置框架类CFrameWnd中的成员函数

m_bAutoMenuEnable为FALSE来使得这个默认无效。

如果要改变这些菜单项、工具条按钮以及状态条项目等的状态,能且只能在更新显示的消息中进行,否则,即使在其他地方修改了这些项目的显示状态,也将被后来的消息处理结果所覆盖。

在MFC中,通过ON_UPDATE_COMMAND_UI宏实现对界面元素显示更新的消息映射。

afx_msg void OnUploadFileNew(CCmdUI* pCmdUI);

ON_UPDATE_COMMAND_UI(ID_FILE_NEW,OnUpdateFileNew);

状态条定义:

在框架类的实现类中:static UINT indicators[]={

ID_SEPARATOR,ID_INDICATOR_CAPS,ID_INDICATOR_NUM,ID_INDICATOR_SCRL,可以增加自定义状态显示如:ID_INDICATOR_TIME

}

可以增加一个更新状态条的实现消息的相应函数:

afx_msg void OnUploadTime(CCmdUI * pCmdUI);

增加一个消息映射宏:

ON_UPDATE_COMMAND_UI(ID_INDICATOR_TIME,OnUpdateTime);

同时增加相应的处理函数:

void CMainFrame::OnUpdateTime(CCmdUI* pCmdUI){

}

增加定时器触动更新时间在状态显示:

SetTimer(100/* ID */,100/* 0.1s*/,NULL);

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics