我一直有一些难以理解,也许你们可以提供帮助。
我有一个使用CDialog的项目,我一直在尝试创建一个子窗口,从主窗口检索一些信息(主窗口/子窗口有自己的类),编辑内容并发送编辑信息回到主窗口。
当我尝试使用CDialog::Create()
时,我无法在子窗口上使用任何控件。 (示例:按钮没有响应)
当我使用DoModal()
创建子窗口时,它反复发生..按钮响应,我可以访问子窗口的类函数,但是当我尝试从主窗口类获取信息时,我被击中了用appcrash。
我试过手动传递CWnd但它仍然崩溃..(无法检索主窗口句柄)
关于如何在仍然可以访问主应用程序的变量和子窗口的事件处理程序的情况下创建子窗口的任何想法?
编辑: 好的,我终于找到了问题所在: 我正在使用
CDialog *eTest = new CDialog; // Pointing to .. ?? .. yeah I hate myself for this
eTest->Create(IDD_EDIT_DIALOG, NULL);
eTest->ShowWindow(SW_SHOW);
相反,我应该像这样创建窗口:
CDialog *eTest = new CEditDialog(); // Pointing to the dialog class
eTest->Create(IDD_EDIT_DIALOG, this);
eTest->ShowWindow(SW_SHOW);
从按钮到数据传输的所有内容现在似乎都在运行。 我希望它能帮助像我这样愚蠢的人。