【问题标题】:How can I handle control messages on the parent CDialog?如何处理父 CDialog 上的控制消息?
【发布时间】:2012-04-17 17:37:23
【问题描述】:

我对@9​​87654323@ 有一些控制,例如CtrlTree。 我想在CMyDialog 类中处理来自CTreeCtrlON_WM_LBUTTONDOWN() 之类的消息。

MFC 中有没有办法将消息流重定向到父级?

【问题讨论】:

  • 你为什么要这样做? MFC 架构的全部要点在于它将消息从父级反映到首先生成图像的控件,这促进了封装、代码重用和职责分离。
  • 我的雇主给了我这个任务。想要重定向消息流,因为 CDialog 上的处理程序已经编写。我了解此解决方案不同意封装。但是,如果我想重定向消息流,项目将几乎准备就绪。你对这个话题有什么想法吗?

标签: c++ windows mfc window-messages


【解决方案1】:

重定向消息的最简单方法是从控件的 ON_WM_LBUTTONDOWN 处理程序向父类发送自定义 (WM_USER + xxx) 消息。

将父级的WM_LBUTTONDOWN处理程序代码放在单独的方法中,直接调用该方法。

类似的东西(伪代码),假设您现有的代码位于HandleTreeCtrlLBDown()

CMyTreeCtrl::OnLButtonDown(..)
{
   pParent ->SendMessage(WM_TREECTRLLBDOWN, 0, (LPARAM)this);
}

CControlParentDialog::OnTreeCtrlLBDown(wParam, lParam)
{
   HandleTreeCtrlLBDown();
} 

【讨论】:

    猜你喜欢
    • 2017-07-17
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    相关资源
    最近更新 更多