В теме сказано все: у меня проблема, когда MessageBox немедленно возвращается (ничего не отображая), если он вызывается после CDialog :: DoModal (). Я пробовал все виды MessageBox: MessageBoxA, MessageBoxW, CWnd :: MessageBox (используя диалог), AfxMessageBox. Ничего не работает, и они сразу возвращают 1. Я попытался сохранить HWND диалогового окна и использовать его в качестве первого параметра. Я попытался передать GetDesktopWindow () в качестве параметра HWND. Я пробовал такие вещи, как MB_YESNO | MB_ICONSTOP. Ничего не получилось.
Я подозреваю, что мне не хватает чего-то действительно очевидного, но, хоть убей, я не могу понять, что именно, и я уже более 2 часов искал решение. Я попытался создать новый проект с помощью мастера MFC, выбрав шаблон диалогового окна и просто добавив вызов MessageBoxA сразу после вызова DoModal ():
CdelmeDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
MessageBoxA(0, "test", "test", 0);
Диалоговое окно отображается нормально, но когда я нажимаю «ОК» или «Отмена», окно сообщения просто не появляется.
Если я помещаю вызов MessageBoxA () над вызовом DoModal (), он работает отлично.
Изменить: есть ли способ предотвратить такое поведение?
MessageBoxA(0, "test", "test", MB_TASKMODAL);
- person ZagNut   schedule 28.12.2011