我有一个基于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属性。
解决。
答案 0 :(得分:2)
假设第二个对话框是main的子对话框(它具有WS_CHILD样式),它必须由主对话框创建。子对话框仅限于父窗口的客户区域。
您可以在子对话框类中提供公共成员函数(访问器),以便主对话框访问并更改您需要的任何内容。或者,如果将子类化的子对话框控件声明为公共对象,则可以直接访问它们(类似于OOP)。
问题是你可能会将第二个对话框称为子对象,而它实际上并不是孩子(没有WS_CHILD样式)。不过,如果第二个对话框生成为无模式,则可以使用上述方法。
如果是模态,则方法可能不同,因为主对话框已禁用;因此,用户无法访问主对话框控件。如果是这种情况,请您提供更多信息?
例如,在什么情况下,您想要更改控件。