为了实现美观,则取消了对话框的标题栏,也实现了左键任意拖动窗口。
问题出现了:
我添加了一个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);
}
//基本上代码就是这样,其他没有 涉及到 这个弹出菜单的代码了
//
以上代码,点击“菜单”按钮时,能弹出菜单项,可是点击菜单项时,没有任何响应!!!
弄了几天,我连在菜单项上的 点击消息 怎么截获 都没有搞出来, 求高手指点啊!非常着急,
问题出现了:
我添加了一个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);
}
//基本上代码就是这样,其他没有 涉及到 这个弹出菜单的代码了
//
以上代码,点击“菜单”按钮时,能弹出菜单项,可是点击菜单项时,没有任何响应!!!
弄了几天,我连在菜单项上的 点击消息 怎么截获 都没有搞出来, 求高手指点啊!非常着急,
改成
m_submenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON,rect.left,rect.bottom,this);试试
哦,是不是用了MenuBtn则响应的是CButton的 菜单消息?
望★★★★★happyparrot 能给解惑
看看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..就是你当前窗体了