Недавно я узнал, что по умолчанию MessageBoxes не были самой верхней формой при отображении по умолчанию, и мне было интересно, если кто-нибудь знает какие-либо обстоятельства, когда вы не хотите, чтобы окно сообщений отображалось поверх других окон?
Я обнаружил проблему, когда начал показывать экраны всплесков во время загрузки приложения, и похоже, что моя программа все еще работала, но за заставкой, ожидавшей ввода, был MessageBox
. Заставка была показанный в другом потоке в поток, который называется ящиком сообщений, поэтому я представляю себе, почему он не появился над всплеском; но это все еще не объясняет, почему MessageBox по умолчанию не имеет флага MB_TOPMOST
?
Edit
Чтобы лучше уточнить: в конце концов, я должен был сделать что-то похожее на это, чтобы в конце создать почтовый ящик, код не совсем корректен, как написано из памяти)
[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);
}