VC++ static控件中,添加鼠标右键d出式菜单

VC++ static控件中,添加鼠标右键d出式菜单,第1张

由于绘制出来的指针等不透明,属于你的窗口,可以接收事件。

如果想让内部透过区域也能接收,得做成假透明的,即窗口描画之前,取得Desktop DC,

然后用对应的区域去描画你的控件背景,然后再画指针。窗口形状,你只要切成圆形即可。

主要是用TrackPopupMenu才实现。

新建一个菜单资源IDR_MENU1,然后为View类添加OnContextMenu类添加消息,添加如下代码:

void CRMenuView::OnContextMenu(CWnd* pWnd, CPoint point)

{

// TODO: Add your message handler code here

CMenu m_popMenu

m_popMenu.LoadMenu(IDR_MENU1)

CMenu* pSubMenu=m_popMenu.GetSubMenu(0)

pSubMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON,point.x,point.y,this)

}

思路是这样的,先在资源面板里添加一个menu资源,编辑成自己想要的,完成以后在需要右键单击触发的地方添加右键单击事件,代码里写入d出这个menu

CMenu m,*pm

if(!m.LoadMenu(IDR_MENU1)) MessageBox(_T("err"))//IDR_MENU1是相应的资源id

pm=m.GetSubMenu(0)//获取子对话框

CPoint pot

GetCursorPos(&pot)//获取鼠标当前位置

pm->TrackPopupMenu(TPM_LEFTALIGN,pot.x,pot.y,this)//在鼠标位置d出菜单

注意,上面的pm是获取的是第一个主menu项下的子menu,比如设计menu资源的时候主menu从左到右是1,2,3,其中1下面又添加了4,5,6

那么这个程序d出的menu就是4,5,6

自己建个工程体会一下就知道了


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11858178.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存