0

我一直有一些难以理解的问题,也许你们可以提供帮助。

我有一个使用 CDialog 的项目,我一直在尝试创建一个从主窗口检索一些信息的子窗口(主/子窗口有它们自己的类),编辑内容并将编辑后的信息发送回主窗口。

当我尝试使用CDialog::Create()时,我无法使用子窗口上的任何控件。(示例:按钮不响应)

当我创建子窗口时,DoModal()它适得其反。按钮是响应式的,我可以访问子窗口的类函数,但是当我试图从主窗口类中获取信息时,我被应用程序崩溃击倒了。我试过手动传递 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);

从按钮到数据传输的一切似乎现在都在工作。我希望它可以帮助将来像我一样愚蠢的人。

4

0 回答 0