如何让我的MessageBox弹出所有表单?

时间:2011-03-28 05:41:27

标签: c windows winapi messagebox

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

如何将它向前移动以使其显示在我的所有表单前面,或设置其父表单?

以下是我目前用于显示消息框的代码:

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

3 个答案:

答案 0 :(得分:2)

它现在出现在所有表单后面的原因是因为您没有指定所有者窗口。这使它直接出现在桌面窗口的顶部。问题是你的其他窗口已经掩盖了桌面窗口,所以他们也幸福地继续掩盖你的消息框。

您怀疑,解决方案是将您的一个窗口指定为消息框的所有者。你可以通过指定它们的窗口句柄(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

documentation提供了其他信息。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

迟到但只是使用FindWindow按类或标题搜索窗口,并将HWND作为MessageBox的第一个参数提供。