说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

CMainFrame 中为什么不能响应切分视右键弹出的菜单消息?

编辑:说三道四文库 发布时间:2018-01-22 08:48
HTML文档下载 WORD文档下载 PDF文档下载
切分成两个视图,我在右边视图响应右键弹出一个菜单,然后在CMainFrame中映射了该事件的响应,可捕捉不到该事件,为什么?有什么方法解决?
直接在视图中响应,用PostMessage或SendMessage将消息传送到CMainFrame中。
那你一定是把消息接受对象搞错拉
在CView中加入WM_RBUTTONUP的响应函数OnRButtonUp,在其中加入代码:

{
ClientToScreen(&point);
GetParent()->GetMenu()->GetSubMenu(4)->TrackPopupMenu(
TPM_LEFTALIGN,point.x,point.y,GetParent());
}
jnxulei(石头) 你说的方法我试过,但PostMessage或SendMessage的消息,CMainFrame没收到。
没有搞清楚你说的,但我想应该是这样做的:
void CTreeViewClass::OnRButtonDown(UINT nFlags, CPoint point)
{
CMenu menu;
CMenu *ptrMenu;
         CTreeCtrl& m_tree = GetTreeCtrl();
                  m_tree.ScreenToClient( &point);
menu.LoadMenu(IDR_FUN_POPUP);
ptrMenu=menu.GetSubMenu(0);
ptrMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,
point.x,
point.y,
this,
NULL);
}

并在同一个类中添加弹出菜单项的消息响应函数:

ON_COMMAND(IDR_FUNPOPUP_TEST, OnFunTest)
void CTreeViewClass::OnFunTest()
{
  ****;
  ......
}
至少有两类方法,一种是右键鼠标消息来处理,另一种是处理WM_CONTEXTMENU窗口消息(推荐使用)。范例代码如下:IDR_GISPROPERTY为指定的菜单资源。
1.右键鼠标消息
void CRightView::OnRButtonDown(UINT nFlags, CPoint point) 
{

// TODO: Add your message handler code here and/or call default
CMenu menuMain;
if(!menuMain.LoadMenu(IDR_GISPROPERTY))
return;
    CMenu* pRecordMenu = menuMain.GetSubMenu(2);    
    ASSERT(pRecordMenu);
    ClientToScreen(&point);
    pRecordMenu->TrackPopupMenu(TPM_LEFTALIGN |TPM_LEFTBUTTON, point.x, 
      point.y, this);

CScrollView::OnRButtonDown(nFlags, point);
}
2.处理WM_CONTEXTMENU窗口消息
void CRightView::OnContextMenu(CWnd* pWnd, CPoint point) 
{
// TODO: Add your message handler code here
CMenu menuMain;
if(!menuMain.LoadMenu(IDR_GISPROPERTY))
return;
    CMenu* pRecordMenu = menuMain.GetSubMenu(2);    
    ASSERT(pRecordMenu);
    pRecordMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON| TPM_RIGHTBUTTON, point.x, 
      point.y, this);

}
ASP.NET MVC3 如何将DataTable绑定到Html.DropDownList PHP调用COM组件 农行网上银行支付接口:无法读取商户端配置文件 农行网上银行支付接口:商户代理卖方挂单成交功能测试 Windows Phone 7 实现简单的GPS定位器 重装XP后,windows 2003如果恢复? 静儿有delphi与mapinfo方面的问题QQ:9813117请教 这段代码为什么在vc++6.0和TC++3.0下调试都通不过 关于 CHM 帮助文件的乱码的问题! 上海的朋友进来看看 程序员们:你们向她表白了几次才成功??? 一辈子也许就这么一次机会(名牌大学计算机免费视频课件全面收看和下载)涉及面广vb\vc\java\asp..... 如何通过word对象得到word的二进制流和如何从一个二进制流得到一个word.Document对象 我是在NETBEANS中编写的,为什么总提示有错?请高手指点。 目前,全球产量最高的金属是什么 在一个高为36厘米的圆锥形容器内装满水.把它倒入一 当今世界产量最大的金属? have dinner类似的用法名词不加冠词的用法 have a dinner有这种用法正确吗 微观经济学试题:已知需求曲线Q=A-BP,试说明在 把蚂蝗烧成灰放在容器里,第二天容器里就有无数条小蚂 波义耳试验在一个密闭的玻璃容器中燃烧金属,得到金属 常用的锡制器皿是灰锡还是白锡,为什么锡制器皿长期处 日本厂家用世界最薄面料 制作出仅8克中方回应澳政府对华为禁令:希望提供公中方对国际原子能机构与伊朗积极互动表俄圣彼得堡将遭强飓风袭击 涅瓦河水位穆兄会领导人将首次在埃及受审 原定于今晚电视两男子结伙电话诈骗 落法网获刑6个月每日彩讯若他爱你,婚礼形式就没那么重要孙祥自由身加盟上海上港穿越火影之波风传奇太阳之子星辰传三国之炎黄火影之白手剑神穿越仙侠传银川森林公园旅游览山公园旅游南海殿旅游爆轰试验场旅游春秋楼旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘