2

我有一个基于 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(***);

}

编辑:

结构截图:

资源编辑器

资源编辑器

包含 ChidlDialog 的主对话框 + CTabCtrl

主对话框

子对话框设置了 WS_CHILD 属性。

解决。

4

1 回答 1

2

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

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

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

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

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

于 2012-06-24T15:54:38.870 回答