mfc基于单文档,如何使下拉菜单的选项在不用时变灰?
如何使下拉菜单的选项在不用时变灰?比如只有我选中一些文字内容时菜单中的“复制”这个选项才可以点击,否则这一项是灰色的?
(求帮忙,离我们交程序的时间越来越近了!!!)
[解决办法]
vc6么?
在classwizard里
把你的那个复制的菜单项的ID比如说ID_EDIT_COPY
添加UPDATE_COMMAND_UI响应
然后你做个判断条件,他就会根据你的判断条件不停的判断
此时你调用EnableWindow函数的TRUE和FALSE来设置菜单项是否被激活就行了
[解决办法]
ON_COMMAND是点了按钮或菜单项后的响应消息,
ON_UPDATE_COMMAND_UI是用来表示对应的按钮和菜单项的状态的响应消息.
传统SDK程序要改变选单命令项状态,可以呼叫EnableMenuItem或是 CheckMenuItem,但这使得程序杂乱无章,因为你没有一个固定的位置和固定的原则处理命令项状态。MFC提供一种直觉并且仍旧依赖讯息观念的方式,解决这个问题,这就是UPDATE_COMMAND_UI讯息。其设计理念是,每当选单被拉并尚未显示之前,其命令项(以及对应之工具栏按钮)都会收到UPDATE_COMMAND_UI讯息,这个讯息和WM_COMMAND有一样的绕行路线,我们(程序员)只要在适当的类别上放置其处理函式,并在函式上做某些判断,便可决定如何显示命令项。
这种方法的最大好处是,不但把问题的解决方式统化,更因为 Framework传给UPDATE_COMMAND_UI处理程序的参数是个「指向CCmdUI对象的指针」,而CCmdUI对象就代表着对应的选单命令项,因此你只需呼叫 CCmdUI 所准备的,专门用来处理命令项外观的函式(如Enable或SetCheck)即可。我们的工作量大为减轻。
CCmdUI::Enable virtual void Enable( BOOL bOn = TRUE );
参数:
bOn
如果为TRUE,则把该项设置为允许存取;
为FALSE,则设置为禁止存取。
说明:本函数用来设置一个命令是否可以存取用户接口项。
CCmdUI::SetCheck
virtual void SetCheck( int nCheck = 1 );
参数:
nCheck 指定要设置的选中状态。0表示设置为未选中状态,1表示选中,2表示不确定。
说明: 本函数为命令设置用户接口项相应的选中状态。它对菜单项和工具条按钮起作用。不确定状态只适用于工具条按钮。
[解决办法]