现在碰到这么一个问题,按照我的理解,正常情况下菜单项和工具栏等的状态(enable和check等状态)是在主线程空闲时刻,由MFC框架自己触发和响应的。
当前的情况是,我的工具栏需要根据某一CTreeView的节点的选择的不同而相应切换到不同的工具栏,如果正常情况下用左键切换,没有问题工具栏可以被相应的切换,工具栏上的各个按钮的状态也会正确(因为有空闲时间会走CCmdUI消息响应函数);如果单纯的用右键切换也没有问题。
问题是:现在我的右键点击到树节点上时,
还需要弹出右键菜单的,这样一来出现的现象是:假设树节点A对应工具栏a,树节点B对应工具栏b,当前处于树节点A,当我直接右键点击树节点B时候,工具栏会切换到工具栏b,相应的右键菜单也会被显示出来,但是
工具栏b上的按钮的状态不对,ON_UPDATE_COMMAND_UI消息响应函数没被调用。按我的理解是由于弹出了右键菜单,所有的消息都被该窗口截获了,包括CCmdUI消息,使得本来响应该消息函数,无法正常被执行,导致按钮状态不对了。
不知道我的理解是否正确,不知道这个问题如何解决,请教各位大侠了!