主  题:  一个针对BUTTON的浮动菜单的问题 
作  者:  ylredsun (我不聪明)  
等  级:    
信 誉 值:  100 
所属论坛:  VC/MFC 界面 
问题点数:  50 
回复次数:  2 
发表时间:  2002-10-26 17:25:58 
   
 
   
一般VC开发工具时,可以插入一个dialog,在里面放入一些控件(如BUTTON)。而后,在我们在控制上点击右键时,就会出现一个针对这个控件的浮动菜单。(有一些项供我们选择如copy,cut,property等)但是自己如何通过程序实现一个类似的浮动菜单。当程序运行时,可以通过浮动菜单改变按钮的显示文字或是背景色等等。请高手指教!
  
 
 
 回复人: yonghengdizhen(风儿她轻轻的吹) ( ) 信誉:100  2002-10-26 18:00:00  得分:0 
 
 
  用CMenu::CreatePopupMenu,LoadMenu,ModifyMenu,RemoveMenu,InsertMenu实现.
事件响应通过用
BEGIN_MESSAGE_MAP( CMyDoc, CDocument )
    //{{AFX_MSG_MAP( CMyDoc )
    ON_COMMAND( ID_MYCMD, OnMyCommand )
    // ... More entries to handle additional commands
    //}}AFX_MSG_MAP
END_MESSAGE_MAP( )
消息映射宏处理WM_COMMAND实现
  
 
Top 
 
 回复人: ylredsun(我不聪明) ( ) 信誉:100  2002-10-28 10:01:00  得分:0 
 
 
  但是像按钮本身不自带响应WM_RBUTTONDOWN消息,从classWizard可以看到,对于按钮只响应WM_LBUTTONDOWN和WM_LBUTTONDBLCLK。那么如何才能实现响应右键消息呢?而且通过LoadMenu Load的菜单选项按钮消息也并非直接发给DIALOG,而是发给(FRAME)VIEW啊。难道需要通过VIEW转发??  

解决方案 »

  1.   

    自己添加右键消息映射宏,然后重载dialog的oncommand在其中处理
      

  2.   

    我建议你不要在button上使用右键,如果你看过《Windows界面开发》这本书的话就不会再有这种想法了,因为它会给软件的初级用户增加使用困难
      

  3.   


    我用窗口子类化一个BUTTON后,虽然能收到所有的系统消息,但是当弹出浮动菜单后,点击某个菜单项,却收不到任何消息。
    在DIALOG内重载菜单消息收不到,在子类里重载也收不到,请问这是为何啊?另说明一下,我的Menu未与任何控件相连,只是在button上单击右键时,通过TrackPopupMenu弹出。是不是菜单资源还需要与DIALOG相联系,DIALOG才会收到菜单消息?