3978|5

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

我想在日历控件上(MFC的DateTimePicker控件)上弹出TAH(上下文菜单,类似pc上的右键弹出菜单),请问该如何实现,能给个例子吗? [复制链接]

网上的例子都千篇一律的出自codeproject上一位葡萄牙工程师的论文,看了几遍都没看懂,里面很多函数参数不知从何而来.不知大哥能否给小弟指导一下?感激不尽

最新回复

忘记说明了,我这个是在WinCE下想要在控件上实现上下文菜单.必须用OnLbuttonDown() BEYONDMA 大哥知道我的意思 我觉得关键就在于m_pWndMenu这个参数如何赋值  详情 回复 发表于 2009-2-5 18:35
点赞 关注

回复
举报

76

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
对COM有概念吗?而且在日历上完成和在那个控件上完成是两个完全不同的概念。
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
我是新手 不懂com.
跟这有关系吗?
不懂com难道就做不出来这个吗?
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

4
 
刚才做了个实验  在对话框上实现了该功能  看来我的弹出菜单被控件挡住了

  1. void CfdDlg::OnLButtonDown(UINT nFlags, CPoint point)
  2. {
  3.         // TODO: Add your message handler code here and/or call default
  4.         SHRGINFO shrgi = {0};

  5.         shrgi.cbSize        = sizeof(SHRGINFO);
  6.         shrgi.hwndClient    = m_hWnd;
  7.         shrgi.ptDown.x      = point.x;
  8.         shrgi.ptDown.y      = point.y;
  9.         shrgi.dwFlags       = SHRG_RETURNCMD;

  10.         if(GN_CONTEXTMENU == ::SHRecognizeGesture(&shrgi))
  11.                 ContextMenu(point);
  12.         else
  13.                 Default();
  14.         CDialog::OnLButtonDown(nFlags, point);
  15. }

  16. void CfdDlg::ContextMenu(CPoint point)
  17. {
  18.         CMenu        mnuCtxt;
  19.         CMenu*        pMenu;
  20.         CWnd*        pWnd;

  21.         if(!IDM_MENU1)
  22.                 return;

  23.         if(mnuCtxt.LoadMenu(IDM_MENU1))
  24.         {
  25.                pWnd = (/*m_pWndMenu ? m_pWndMenu : */AfxGetMainWnd());//就这个m_pWndMenu参数不知什么意思我直接用的AfxGetMainWnd()

  26.                 pMenu = mnuCtxt.GetSubMenu(0);
  27.                 if(pMenu)
  28.                 {

  29.                         ClientToScreen(&point);pMenu->TrackPopupMenu(TPM_LEFTALIGN,
  30.                                 point.x, point.y, pWnd);
  31.                 }
  32.         }
  33. }

复制代码


The m_pWndMenu member variable holds a pointer to the command-processing window. This is useful if you want to show TAH context menus on controls placed in dialogs. In these situations you cannot use AfxGetMainWnd() because your menu commands might be either grayed, or worse, handled by another (hidden) window. So, m_pWndMenu will have the containing CDialog pointer.
这是codeproject上面对这个参数的解释,可惜小弟英文不行,没看懂.望各位大哥给予解释说明.
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

5
 
弹出菜单就是用TrackPopupMenu,在什么位置弹出都可以,不过最好响应鼠标的UP消息,因为DOWN消息通常会有其它作用。
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

6
 
忘记说明了,我这个是在WinCE下想要在控件上实现上下文菜单.必须用OnLbuttonDown()
BEYONDMA 大哥知道我的意思
我觉得关键就在于m_pWndMenu这个参数如何赋值
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表