gpt4 book ai didi

c++ - 以 `DialogBox` 之外的其他方法打开窗口

转载 作者:可可西里 更新时间:2023-11-01 09:45:51 24 4
gpt4 key购买 nike

我有一个对话框 IDD_WINDOW_INFO 当用户在我的 C++ Win32 应用程序中单击按钮或菜单项时必须打开它。我用来打开对话框的方法在以下行中:

DialogBox(hInstance, MAKEINTRESOURCE(IDD_WINDOW_INFO), hMainWindow, WindowInfoProc);

但我的问题是,当该对话框打开时,用户无法使用我的应用程序的主窗口进行操作。那么我该怎么做才能让两个窗口都处于事件状态?

最佳答案

您正在调用以模态方式显示对话框的 DialogBox。当显示模态对话框时,其他拥有的窗口将被禁用,只有模态对话框可以接受输入。这就是模态对话框的本质和意图。这个想法是您只能与对话框交互,而不能与其他窗口交互。

另一个答案建议将 NULL 作为 hWndParent 参数传递给 DialogBox。那不是解决方案。这将导致您拥有一个无主窗口。是的,您将能够与主窗口交互,但是当您这样做时,您的主窗口将出现在对话框的顶部。那是因为所有权设置不正确。我建议您阅读 window ownership to better understand the issue .

您的问题的正确解决方案是显示无模式对话框。无模式对话框允许您与应用程序中的其他窗口进行交互。这正是您在问题中要求的。

您可以通过调用 CreateDialog 然后调用 ShowWindow 来显示无模式对话框。这篇 MSDN 文章显示了一个示例:Using Dialog Boxes .

关于c++ - 以 `DialogBox` 之外的其他方法打开窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14673856/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com