0

首先,我将解释我到底想在这里做什么。我有一个对话框,我在其中显示一个框架。使用此对话框中的菜单,我打开另一个对话框,其中显示了第一个对话框中的宏网格块信息。所以要显示第二个对话框,我正在使用函数: DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DialogProc); 但这会将程序的执行转移到新对话框中,除非我关闭新对话框,否则我无法在第一个对话框中处理更多消息。

有人可以告诉我解决这个问题的方法吗???它与模态对话框与非模态对话框相同吗?

有人建议我为此目的使用 BackgroundWorker 线程。但是当我尝试研究它时,我在很多地方读到它不适用于 win32 编程。相反,在一些论坛中,我读到了出于相同目的使用 PostMessage 函数。有人可以帮我决定处理这个问题的最佳方法是什么吗?如果有人能详细解释一下,我将不胜感激。

非常感谢。

4

1 回答 1

1

不,该BackgroundWorker组件适用于 .NET 项目,不适用于 Win32 应用程序。它旨在在后台线程上运行非 GUI操作。您仍然应该将所有 GUI 操作限制在单个线程中,即使在 .NET 应用程序中也是如此。

但就像你说的,这里的问题是你正在创建一个模式对话框,它会阻止用户与程序中的任何其他内容进行交互,直到该对话框关闭。该DialogBox函数总是创建一个模态对话框。

如果您想要一个无模式对话框,请改为调用该CreateDialog函数。无模式对话框在关闭之前不会阻止执行。您可以通过此功能重复使用与DialogBox.

于 2012-08-02T07:05:19.440 回答