【问题标题】:MFC - communication between two CDialogMFC - 两个 CDialog 之间的通信
【发布时间】:2012-06-26 01:41:05
【问题描述】:

我有一个基于 MFC 对话框的应用程序。

主对话框包含一个子对话框(用于 CTabCtrl 控件)。

  • CDialog mainDlgClass;

  • CMyChildDialog childDlgClass;

我如何能够从主对话框修改子对话框的控件或发送消息的可能性,例如:通过 PostMessage 并使用 RegisterWindowMessage 以便我可以修改子对话框的控件?

我不知道如何检索子对话框的句柄。

void mainDlgClass::check() 
{
   if(condition)
       PostMessage_to_the_child_dialog(***);
   OR
   if(condition)
       Modify_CStatic_text_on_the_child_dialog(***);

}

编辑:

结构截图:

资源编辑器

主对话框 + CTabCtrl 包含 ChidlDialog

子对话框设置了 WS_CHILD 属性。

已解决。

【问题讨论】:

    标签: visual-studio-2010 mfc dialog


    【解决方案1】:

    假设第二个对话框是主对话框的子对话框(它具有WS_CHILD 样式),它必须由主对话框创建。子对话框仅限于父窗口的客户区。

    您可以在子对话框类中提供公共成员函数(访问器)以供主对话框访问,并根据需要进行更改。或者,如果子类的子对话框控件被声明为公共(类似于 OOP),您可以直接访问它们。

    问题是您可能将第二个对话框称为子对话框,而它实际上不是子对话框(没有 WS_CHILD 样式)。不过,如果第二个对话框是无模式生成的,您可以使用上述方法。

    如果是模态的,方法可能不同,因为主对话框被禁用;因此,用户无法访问主对话框控件。如果是这种情况,您能否提供更多信息?

    例如,在什么情况下,您要更改控件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-05
      • 2012-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-26
      • 2011-10-18
      • 1970-01-01
      相关资源
      最近更新 更多