3.30如何在程序清单视图内使用UPDATE_COMMAND_UI机制?

来源:互联网 发布:nosql数据库的缺点 编辑:程序博客网 时间:2024/05/14 17:49

      当用户选择、生效、失效菜单命令或工具栏按钮时,UPDATE_COMMAND_UI机制自动的反馈给用户有关应用程序状态的信息,在这方面UPDATE_COMMAND_UI的机制是强大的。不幸的是,ClassWizard不允许增加UPDATE_COMMAND_UI句柄来处理程序清单视图控件。

      然而,做一些工作后,还是能够利用UPDATE_COMMAND_UI机制的优势来动态的改变程序清单视图的控件的。

第1步:在程序清单视图类中手工增加一个句柄,该句柄处理WM_IDLEUPDATECMDUI私有MFC消息,为了实现该目的,必须执行从第1a到第1c步中描述的操作。

1a:包括进<afxpriv.h>MFC头文件,该文件定义了在程序清单视图的实现源文件(.cpp)中的WM_IDLEUPDATECMDUI私有MFC消息。

1b:在程序清单视图类中增加OnIdleUpdateCmdUI()函数的原型:

1c:在程序清单视图类的实现文件中增加WM_IDLEUPDATECMDUI消息的ON_MESSAGE_VOID()宏条目。

第2步:实现在1b步中增加的OnIdleUpdateCmdUI()函数

第3步:在程序清单视图类中手工增加UPDATE_COMMAND_UI句柄,在希望使用UPDATE_COMMAND_UI机制的程序清单视图中,每个控件需要一个不同的句柄。为了增加各个句柄,执行从3a到3b步中描述的操作。

3a:在程序清单视图类中增加UPDATE_COMMAND_UI句柄的函数原型:

3b:在程序清单视图类的消息映射中增加ON_UPDATE_COMMAND_UI()宏条目。

第4步:实现在第3步中增加的每个UPDATE_COMMAND_UI句柄,这些函数是标准的UPDATE_COMMAND_UI句柄,它们通常利用pCmdUI变量来完成任务。

解释:关于WM_IDLEUPDATECMDUI消息和ON_MESSAGE_VOID宏的解释,参见4.12如何在对话框中使用UPDATE_COMMAND_UI机制?