如何使我的 MessageBox 弹出在所有表单的顶部?

发布于 2024-10-27 02:40:24 字数 212 浏览 4 评论 0原文

我目前正在我的 C 程序中使用消息框向用户提供信息,但该消息框出现在我的应用程序的所有其他形式的后面。

我怎样才能将它向前移动,以便它出现在我所有的表单前面,或者设置它的父表单?

这是我当前用于显示消息框的代码:

MessageBox(0,error_msg, "Error - No Algorithm", MB_OK );

I am currently providing information to the user with a message box in my C program, but the message box is appearing behind all other forms of my application.

How can I bring it forward so that it appears in front of all my forms, or set its parent?

Here is the code I'm currently using to show the message box:

MessageBox(0,error_msg, "Error - No Algorithm", MB_OK );

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

属性 2024-11-03 02:40:24

它现在出现在所有表单后面的原因是因为您没有指定所有者窗口。这会导致它直接出现在桌面窗口的顶部。问题是您的其他窗口已经覆盖了桌面窗口,因此它们也很乐意继续覆盖您的消息框。

正如您所怀疑的,解决方案是将您的窗口之一指定为消息框的所有者。您可以通过将其窗口句柄 (HWND) 指定为函数的第一个参数来实现此目的:

MessageBox(hWnd,                    // the window handle for your owner window
           error_msg,               // the message to be displayed
           "Error - No Algorithm",  // the title
           MB_OK);                  // flags indicating contents and behavior

文档提供了更多信息。

The reason it's appearing behind all forms now is because you've not specified an owner window. That causes it to appear directly on top of the desktop window. The problem is that your other windows are already covering up the desktop window, so they blissfully continue to cover up your message box, too.

The solution, as you suspect, is to specify one of your windows as the owner for the message box. You do that by specifying their window handle (HWND) as the first argument to the function:

MessageBox(hWnd,                    // the window handle for your owner window
           error_msg,               // the message to be displayed
           "Error - No Algorithm",  // the title
           MB_OK);                  // flags indicating contents and behavior

The documentation provides additional information.

许久 2024-11-03 02:40:24

MessageBox 的第一个参数是 HWND父至. 0NULL 表示“无父级”,因此生成的消息框将不是模态的。您需要提供父级 HWND 才能获得您想要的行为。

The first parameter to MessageBox is the HWND to parent to. 0 or NULL means "no parent", so the resulting message box will not be modal. You need to supply the parent HWND to get the behavior you want.

-残月青衣踏尘吟 2024-11-03 02:40:24

稍后,只需使用 FindWindow 按类或标题搜索窗口,并将该 HWND 作为第一个参数提供给 MessageBox。

Late to this but just search for the window by class or title using FindWindow and supply that HWND as the first parameter to MessageBox.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文