首先,我将解释我到底想做什么。我有一个对话框,我在其中显示一个框架。使用此对话框中的菜单,打开另一个对话框,显示第一个对话框中的宏观编辑块信息。所以要显示第二个对话框我正在使用函数:DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG1),NULL,DialogProc); 但是这会将程序的执行转移到新的对话框,除非我关闭新的对话框,否则我无法在第一个对话框中处理更多消息。
有人可以告诉我解决这个问题的方法吗?它与modal vs无模式对话框是一样的吗?
有人建议我为此目的使用BackgroundWorker线程。但是当我试图对它进行研究时,我在许多地方读到它与win32编程无关。相反,在某些论坛中,我读到了有关使用PostMessage函数的相同目的。有人可以帮我决定处理这个问题的最佳方法吗?如果有人能详细解释,我真的很感激。
非常感谢。
答案 0 :(得分:1)
不,BackgroundWorker
component适用于.NET项目,不适用于Win32应用程序。它旨在在后台线程上运行非GUI 操作。即使在.NET应用程序中,您仍然应该将所有GUI操作限制在单个线程中。
但是就像你说的,这里的问题是你正在创建一个模态对话框,它阻止用户与程序中的任何其他东西进行交互,直到该对话框关闭。 DialogBox
function始终会创建一个模态对话框。
如果您想要无模式对话框,请拨打CreateDialog
function。无模式对话框在关闭之前不会阻止执行。您可以使用此功能重复使用与DialogBox
相同的对话框模板。