私は最近、デフォルトで MessageBoxes がデフォルトで表示されたときに一番上のフォームではないことを知りました。メッセージボックスを他のウィンドウの上に表示したくない状況を誰かが知っているかどうか疑問に思っていましたか?
アプリケーションのロード中にスプラッシュ画面を表示し始めたときに問題が見つかりました。プログラムはまだ実行されているように見えましたがMessageBox
、入力を待っているスプラッシュ画面の背後にありました.スプラッシュ画面は別のスレッドで表示されましたメッセージボックスを呼び出したスレッドなので、これがスプラッシュの上に表示されなかった理由だと思います。MB_TOPMOST
しかし、これは MessageBoxにデフォルトでフラグがない理由をまだ説明していませんか?
編集
より明確にするために:最終的に、メッセージボックスを作成するために、これと同様のことをしなければなりませんでした。コードは、メモリから書かれたものとまったく同じではありません)
[DllImport("User32.dll")]
private int extern MessageBox(windowhandle, message, caption, flag);
public static void MessageBox(windowhandle, string message, string caption)
{
MessageBox(windowhandle, message,caption, MB_TOPMOST);
}