由于之前对单文档和对话框程序的区别也还没掌握,迷迷糊糊中及接触了对话框也看了一些单文档的工程,
在单文档里面用ON_UPDATE_COMMAND_UI用得得心应手,只需要在消息映射里面添加一个
ON_UPDATE_COMMAND_UI(ID***, OnUpdate***)
然后在头文件中声明:
afx_msg void OnUpdate***(CCmdUI* pCmdUI);
然后再实现这个函数就行了。
但是。。。。。。在对话框程序中添加了以上消息和函数之后,却发现没反应,查了N多资料之后发现,还有事情要做
在.cpp文件中定义:
#define WM_KICKIDLE 0x036A
消息映射里面添加:
ON_MESSAGE(WM_KICKIDLE, OnKickIdle)
头文件中添加声明:
afx_msg LRESULT OnKickIdle(WPARAM wp, LPARAM lCount);
实现这个函数:
LRESULT C***Dlg::OnKickIdle(WPARAM wp,
LPARAM lCount)
{
UpdateDialogControls(this, TRUE);
return 0;
}
说明:
WM_KICKIDLE是一个MFC私有消息;在对话框空闲的时候会发送出来,然后通过消息处理来调用
UpdateDialogControls(this, TRUE);
这个函数的作用是发送CN_ UPDATE_COMMAND_UI 消息给所有对话框控件
另外这边还介绍了另外一种方法,可以参考:
http://blog.csdn.net/danforn/article/details/2323747
本文参考自如下链接:
http://hi.baidu.com/l6834279/item/5982ff20e9ed6e152a0f1c17