刚学MFC,对消息映射一头雾水,在此提个幼儿园问题:用AppendMenu添加了一个ID为ID_MNUCOPY的菜单项并TrackPopupMenu出来;在XXXWinCpp类中添加消息映射:ON_COMMAND(ID_MNUCOPY,CXXXApp::OnMnuCopy),处理函数为:void CXXXApp::OnMnuCopy()
{ AfxMessageBox("COPY",MB_OK,0);
}
但是为什么不能够响应呢?
{ AfxMessageBox("COPY",MB_OK,0);
}
但是为什么不能够响应呢?
解决方案 »
- 请教大神ListControl问题
- 各位谁能够提供一个插入进程的源代码?
- VC++6.0 用CserialPort类进行串口通讯,在导入CserialPort类时,编译出错!OnComm函数是unresolved external
- 关于线程和GetMessage的一个问题
- 请问:CEditView可以不和CDoc搭配,而直接用在一个窗口上吗? 怎么用? 100分.
- 关于sokcket通讯的时间延迟问题(我的看法)
- 需求报告怎么写?
- 请问那有<<windows95程式设计指南>>的源代码下载?等待
- 请问如何改变tab的颜色?
- 谁有办法保留VC6的IDE界面,但是用VS2010等更新的库和编译器写代码
- 关于CFileDialog默认打开文件目录的疑问?
- 三八妇女节,祝女性程序员们节日快乐!(女性领分,男性自觉!PS:本人男性)
这是响应系统的WM_COMMAND
应该为
#define WM_USERMESSAGE WM_USER+2 //自定义消息
ON_MESSAGE(WM_USERMESSAGE,OnUserMessage)
OnUserMessage为响应自定义消息处理函数
::SendMessage(hWnd,WM_USERMESSAGE,0, 0);
发消息,hWnd为接受消息的窗体句柄
afx_msg void OnMnuCopy();
在CXXXApp类的实现文件里:
ON_COMMAND(ID_MNUCOPY, OnMnuCopy)
void CXXXApp::OnMnuCopy()
{
AfxMessageBox("COPY",MB_OK,0);
}
当然ID_MNUCOPY应该已经定义好。楼上的讲的是自定义消息吧。
我对MFC的消息映射还不懂,用手动的消息循环处理倒是做得出来,可为什么用MFC就做不对呢。
如果我理解得不错的话,应该是点击菜单就会发出WM_COMMAND消息,然后参数中会包含发出消息的菜单ID,于是MFC就会将它的处理映射到OnMnuCopy中。那我觉得我这样应该没什么错呀。
难道与ID_MNUCOPY定义的值有关?
的窗口为AfxGetMainWnd()吗?
如果菜单在视图内弹出,使用this作为消息接受窗口,在CWinApp中将收不到消息,你将窗口改成主框架就可以了void CYourView::OnContextMenu( CWnd* pWnd, CPoint point)
{
CMenu menu;
menu.LoadMenu(IDM_YOURMENU);
CMenu* pSub = menu.GetSubMenu(0);
if(pSub){
pSub->TrackPopupMenu(TPM_LEFTBUTTON|TPM_RIGHTBUTTON, point.x, point,y, AfxGetMainWnd());
}
}