Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 MFC-两个CDDialog之间的通信_Visual Studio 2010_Mfc_Dialog - Fatal编程技术网

Visual studio 2010 MFC-两个CDDialog之间的通信

Visual studio 2010 MFC-两个CDDialog之间的通信,visual-studio-2010,mfc,dialog,Visual Studio 2010,Mfc,Dialog,我有一个基于MFC对话框的应用程序 主对话框包含一个子对话框(用于CTabCtrl控件) CDialog mainDlgClass CMyChildDialog儿童班 如何从主对话框修改子对话框的控件,或者如何发送消息,例如:通过PostMessage和使用RegisterWindowMessage修改子对话框的控件 我不知道如何检索子对话框的句柄 void mainDlgClass::check() { if(condition) PostMessage_to_the

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

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

  • CDialog mainDlgClass

  • CMyChildDialog儿童班

如何从主对话框修改子对话框的控件,或者如何发送消息,例如:通过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_子属性


已解决。

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

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

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

如果是模态,则由于主对话框被禁用,进近可能不同;因此,用户无法访问主对话框控件。如果是这样的话,你能给我们更多的信息吗

例如,在什么情况下,您希望更改控件