为了实现美观,则取消了对话框的标题栏,也实现了左键任意拖动窗口。
问题出现了:
我添加了一个CButton按钮,命名为"菜单",想要在单击菜单按钮时,在按钮下方弹出菜单,这个功能也实现了,可是在弹出菜单之后,我点击菜单竟然没有任何反应,这两天我整天在网上查资料也没有弄出来,只好发帖求助了,请高手指点
//大概代码如下:
void CYJWordDlg::OnButtonMenu() 
{
CMenu m_popmenu;
m_popmenu.LoadMenu(IDR_MENU1); //IDR_MENU1:为添加的资源菜单,里面目前设置了 "退出" 一项
CMenu *m_submenu = m_popmenu.GetSubMenu(0);
ASSERT(m_submenu!=NULL);

//确定弹出式菜单的位置 
  CRect rect;
  CWnd *MenuBtn = GetDlgItem(IDC_BUTTON_MENU);//菜单按钮ID
  MenuBtn->GetClientRect(&rect);
  MenuBtn->ClientToScreen(rect);//转换为屏幕坐标
m_submenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON,rect.left,rect.bottom,MenuBtn);//弹出菜单
}
//
void CYJWordDlg::OnExit() //退出菜单响应函数--利用Class Wizards 添加
{
CYJWordDlg::OnCancel();
}
//
void CYJWordDlg::OnLButtonDown(UINT nFlags, CPoint point) //左键按下响应函数
{
PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x, point.y)); //实现任意移动窗体
CDialog::OnLButtonDown(nFlags, point);
}
//基本上代码就是这样,其他没有 涉及到 这个弹出菜单的代码了
//
以上代码,点击“菜单”按钮时,能弹出菜单项,可是点击菜单项时,没有任何响应!!!
弄了几天,我连在菜单项上的 点击消息 怎么截获 都没有搞出来, 求高手指点啊!非常着急,

解决方案 »

  1.   

    m_submenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON,rect.left,rect.bottom,MenuBtn);//弹出菜单
    改成
    m_submenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON,rect.left,rect.bottom,this);试试
      

  2.   

    555555555555555,我哭,换了之后还真好了,
    哦,是不是用了MenuBtn则响应的是CButton的 菜单消息? 
    望★★★★★happyparrot 能给解惑
      

  3.   

    鹦鹉威武啊
    看看MSDN这个参数的解释
    Identifies the window that owns the pop-up menu. This window receives all WM_COMMAND messages from the menu. In Windows versions 3.1 and later, the window does not receive WM_COMMAND messages until TrackPopupMenu returns. In Windows 3.0, the window receives WM_COMMAND messages before TrackPopupMenu returns.也就是说你,原来你是要等MenuBtn窗体的WM_COMMAND...所以没有..改成this..就是你当前窗体了
      

  4.   

    弹出菜单的消息响应是发给父窗口的,你消息响应函数加在了CYJWordDlg类中,而你菜单的父窗口是那个按钮,当然不会响应你的消息