- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道为 CListBox
控件提供的消息 Controller 集有多有限。我已经在包含此控件的 CDialog
的消息映射中使用了 ON_LBN_SELCHANGE
。
我也想使用 ON_WM_RBUTTONDOWN
,所以我派生了一个 class CMyListBox : public CListBox
,所以现在我可以在类中映射该消息,但我会喜欢以与 ON_LBN_SELCHANGE
相同的方式将其映射到对话框。
我的问题是是否可以将该消息重新发送到父对话框,以便我可以从 CDialog
消息映射中处理它,最好的方法是什么(send_message、post_message 或有没有更好的通知机制)?
最佳答案
我想我也会向您展示这种方法作为一种替代方法,它可以节省派生您自己的 CListBox
类的需要。
WM_CONTEXTMENU
在列表中并通过下拉菜单添加处理程序。这个处理程序的描述是这样的:
Notifies a window that the user desires a context menu to appear. The user may have clicked the right mouse button (right-clicked) in the window, pressed Shift+F10 or pressed the applications key (context menu key) available on some keyboards.
wParam
- A handle to the window in which the user right-clicked the mouse. This can be a child window of the window receiving the message. For more information about processing this message, see the Remarks section.
您需要取消注释要在生成的处理程序中使用的参数。例如:
void CMFCApplication4Dlg::OnContextMenu(CWnd* pWnd, CPoint /*point*/)
{
if (pWnd->GetSafeHwnd() == m_lbList.GetSafeHwnd())
{
AfxMessageBox(_T("User right-clicked on the listbox control"));
}
}
结果:
当然,像您所做的那样派生您自己的类并处理鼠标按钮和使用通知系统并没有错。我并不是说这种方法更好。我只是将它展示为检测对话框上控件右键单击的替代方法。
注意:还有其他answers这里是关于使用这种方法的,但我发现的那些没有显示屏幕截图。
关于c++ - 使用 ON_WM_RBUTTONDOWN 升级 MFC CListBox 控件,以便对话框可以直接处理消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67090888/
我想知道为 CListBox 控件提供的消息 Controller 集有多有限。我已经在包含此控件的 CDialog 的消息映射中使用了 ON_LBN_SELCHANGE。 我也想使用 ON_WM_R
我是一名优秀的程序员,十分优秀!