工具栏不同于菜单栏,菜单栏当你点击一个下拉菜单时将引起菜单绘制消息,而工具栏是在视窗创建时被创建,并且被绘制,你在OnUpdateUI函数中加入AfxMessageBox("Hello!")后,编译执行,便会看见在窗体创建时会弹出一个对话框显示信息"Hello!".
要解决这个问题,建议你在你的执行函数中添加一段判断代码:
             思路:
                 如果 按钮Enable 则 按钮Disable 

解决方案 »

  1.   

    怎么得到工具栏按钮,控制他,除了 ONUpdateUI
      

  2.   

    在视窗创建工具栏之前会创建一个外框,也即CFromWnd类,里面有一个有类向导为你创建的一个CToolBar类型的变量,你用查找命令便能找到它,查找 msdn 相关部分 里面有获得buttonID的方法,还有一种方法,在ClassWizia中的Class标签项中的ID列表中找到 你所需要的 ToolBarButtonID, 选中后旁边的Message列表中选择BN_CLICK消息选项,并添加映射函数,
    按顶楼的思路编写代码,不过这样做后Button便会不在响应消息,
    还是要按第一种方法编写代码.
      

  3.   

    请问staronly ,我的问题你都看明白了,既在响应函数执行是,系统不会执行OnUpdateUI
    函数。    除了向你说的获得buttonID后,没什么别的办法了吗,
    很感谢你。
      

  4.   

    还可以获得buttonID相应的ButtonHandle(句柄),实际上两种方法都差不多.只不过一个通过ID系统内部自动获得句柄,一个直接获得句柄罢了,实际上所有windows程序都是通过句柄的获取和控制
    来发送WindowsMessage的,而WindowsMessage实际上也只是一组预定义宏罢了.你查查Windows.h
    和WinUser.h头文件就会明白.