b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

itemhaschildren?loadmenu?TrackPopupMenu函数与鼠标右键弹出菜单

电脑杂谈  发布时间:2016-06-26 08:03:15  来源:网络整理

你是否正在寻找关于trackpopupmenu的内容?让我把最受欢迎的东西奉献给你:

trackpopupmenu_itemhaschildren_loadmenu

trackpopupmenu函数与鼠标右键弹出菜单 2007-02-19 18:32:44

分类:

利用调用trackpopupmenu函数,手工添加弹出菜单:
1)用资源管理器添加一个菜单资源
2)在鼠标右键消息响应函数中,加载菜单资源,并获得要显示的子菜单指针,并用该指针调用TrackPopupMenu函数便完成任务(但要注意:鼠标响应函数传进来的坐标是客户区坐标,而TrackPopupMenu函数中使用的是屏幕坐标,在调用trackpopupmenu前要调用ClientToScreen客户区坐标到屏幕坐标的转换)
事例代码:
CMenu menu;
menu.LoadMenu(IDR_MENU1);
CMenu *pPopup=menu.GetSubMenu(0);
ClientToScreen(&point);
pPopup->trackpopupmenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y,this);
说明:
CWnd::ClientToScreen(..);//将一个坐标点或一个矩形区域坐标转换成屏幕坐标。
CMenu::trackpopupmenu(..);//在指定位置以指定的方式显示弹出菜单,。
CWnd::ScreenToClient(..);
//Converts the screen coordinates of a given point or rectangle on the display to client coordinates.

还有下面一种办法

利用已有的菜单资源,这样可以共享命令事件。假如你有两个菜单项,其ID是ID_VIEW_LARGE_IMAGE,ID_VIEW_SMALL_INAGE.可以这样来做:

CMenu m_PopupMenu;

m_PopupMenu.CreatePopupMenu();

m_PopuoMenu.AppendMenu(MF_STRING,ID_VIEW_LARGE_IMAGE,....);

m_PopupMenu.AppendMenu(MF_STRING,ID_VIEW_SMALL_IMAGE,....);

//在这里一定要将客户区坐标转成屏幕坐标,利用函数ClientToScreen(...);

ClientToScreen(&point); //point可以从鼠标右键消息响应函数中取到。

//也可以通过GetCursorPos(...)函数取到。

m_PopupMenu.trackpopupmenu(TPM_LEFTALIGN,point.x,point.y,this);


阅读(5890) | 评论(0) | 转发(0) |

0

上一篇:overlapped I/O 重叠结构 三

下一篇:上下五千年,大梦无边

相关热门文章

以上就是关于trackpopupmenu的全部内容,相信你一定会非常满意。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shenmilingyu/article-10948-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...