我想从我的上下文弹出菜单中获取一个矩形
I want to get a rect from my contextual popup menu
我前几天问过这个问题
然后我的按钮和上下文菜单的过程就成功了。
过程是这样的
当鼠标悬停在按钮A上时,显示弹出菜单(1)和(2)。
当鼠标离开按钮A时,关闭所有弹出菜单。
这很麻烦,因为当鼠标悬停在我的弹出菜单(1)或(2)上时,关闭所有弹出菜单。我想排除弹出菜单区域。
所以我尝试获取我的弹出菜单的矩形并从进程 2 添加异常。我怎样才能得到它?
※ P.S 1:我使用了TrackPopupMenu
函数。在我看来,直到 TrackPopupMenu
功能结束(如选择的菜单或关闭弹出菜单),才能获得弹出菜单的矩形。我说得对吗?
※ P.S 2 : 我试过用WM_MENUSELECT
留言。然而,当鼠标离开按钮 A 时,它仍然关闭弹出菜单。所以我将尝试使用 GetMenuItemRect
功能。如何使用它?
而不是使用 TrackPopupMenu
函数(它不是 return 已创建菜单的句柄),您可以显式创建并显示新的 CMFCPopupMenu
.
在不知道实施的全部细节的情况下,您可以这样做:
void MyClass:OnShowPopup(int Xpos, int Ypos) { // Xpos and Ypos are top-left corner
CMDIFrameWndEx* frame = dynamic_cast<CMDIFrameWndEx *>(AfxGetMainWnd()); // Main frame
CMenu menu; menu.LoadMenu(IDM_MYPOPUP_ID); // Load from resources - or something
CMFCPopupMenu *pPop = new CMFCPopupMenu; // New popup menu
pPop->Create(this, Xpos, Ypos, menu.m_hMenu, FALSE, TRUE);
CRect rc; pPop->GetWindowRect(&rc); // Here you have the popup menu's rectangle!!
frame->OnShowPopupMenu(pPop); // This will activate the menu.
}
如果有帮助请告诉我。
我前几天问过这个问题
然后我的按钮和上下文菜单的过程就成功了。
过程是这样的
当鼠标悬停在按钮A上时,显示弹出菜单(1)和(2)。
当鼠标离开按钮A时,关闭所有弹出菜单。
这很麻烦,因为当鼠标悬停在我的弹出菜单(1)或(2)上时,关闭所有弹出菜单。我想排除弹出菜单区域。
所以我尝试获取我的弹出菜单的矩形并从进程 2 添加异常。我怎样才能得到它?
※ P.S 1:我使用了TrackPopupMenu
函数。在我看来,直到 TrackPopupMenu
功能结束(如选择的菜单或关闭弹出菜单),才能获得弹出菜单的矩形。我说得对吗?
※ P.S 2 : 我试过用WM_MENUSELECT
留言。然而,当鼠标离开按钮 A 时,它仍然关闭弹出菜单。所以我将尝试使用 GetMenuItemRect
功能。如何使用它?
而不是使用 TrackPopupMenu
函数(它不是 return 已创建菜单的句柄),您可以显式创建并显示新的 CMFCPopupMenu
.
在不知道实施的全部细节的情况下,您可以这样做:
void MyClass:OnShowPopup(int Xpos, int Ypos) { // Xpos and Ypos are top-left corner
CMDIFrameWndEx* frame = dynamic_cast<CMDIFrameWndEx *>(AfxGetMainWnd()); // Main frame
CMenu menu; menu.LoadMenu(IDM_MYPOPUP_ID); // Load from resources - or something
CMFCPopupMenu *pPop = new CMFCPopupMenu; // New popup menu
pPop->Create(this, Xpos, Ypos, menu.m_hMenu, FALSE, TRUE);
CRect rc; pPop->GetWindowRect(&rc); // Here you have the popup menu's rectangle!!
frame->OnShowPopupMenu(pPop); // This will activate the menu.
}
如果有帮助请告诉我。