关于在对话框里映射击队消息的问题?(hot !程序有注释,望大虾指教 !)
hfree 2003-10-07 11:37:56 在一个对话框里面,有一个ID为IDC_EFFECT,的按钮,点击按钮就弹出一菜单,点击按钮OnEffect函数如下:
void CChatClientDlg::OnEffect()
{
// TODO: Add your control notification handler code here
CRect rect ;
CWnd *pWnd ;
CMenu functionMenu ;
CPoint point ;
pWnd = this->GetDlgItem(IDC_EFFECT) ;
pWnd->GetWindowRect(rect) ; //获得按钮相对屏幕的坐标
CDC *pDC ;
pDC = pWnd->GetDC() ;
point.x = rect.left ;
point.y = rect.bottom ;
pDC->DPtoLP(&point) ; //把屏幕坐标转华为逻辑坐标
functionMenu.LoadMenu(IDM_EFFECT) ; //加载自定义弹出菜单
functionMenu.GetSubMenu(0)->TrackPopupMenu(
TPM_LEFTALIGN | TPM_LEFTBUTTON , point.x ,point.y , pWnd ) ;
//用TrackPopupMenu来弹出菜单。
}
//弹出的菜单ID为IDM_EFFECT;其中有一个菜单项ID为IDM_IP ;映射该菜单项的command消息,消息函数为OnIP ;函数如下。
void CChatClientDlg::OnIp()
{
// TODO: Add your command handler code here
TRACE("===================OnIP=========================\n") ;
CGetIPDlg ipDlg ; //CGetIPDlg是一个对话框类,已经有定义。
ipDlg.DoModal() ;
}
//但是结果发现,OnIP函数根本执行不了,也就是说,当击id 为 IDM_IP的菜单的
//时候,该函数根本就没有响应,这是何故。
//另外,也曾试过在对话框中响应WM_KEYDOWN消息,结果也是映射函数根本就没有执行,设断点,发现根本就没有执行到其映射函数
希望那位大虾能够不啬赐教