Всем доброго времени суток. Проблема в следующем - При разворачивании дочернего MDI окна, Дочернее окно перестает реагировать на нажатие стандартных кнопок (сворачивание, восстановление, закрытие). - В чем может быть причина такого поведения. Есть подозрения что в этом виновата неправильная обработка функции. Код (Text): .elseif eax==WM_CLOSE invoke DestroyWindow,hWin .elseif uMsg==WM_DESTROY invoke PostQuitMessage,NULL .else invoke DefFrameProc,hWin,hClient,uMsg,wParam,lParam ret .endif xor eax,eax ret Поскольку в другой своей программе я обрабатывал ее, так и все работало нормально. Код (Text): .elseif eax==WM_CLOSE invoke DestroyWindow,hWin .elseif uMsg==WM_DESTROY invoke PostQuitMessage,NULL .endif invoke DefFrameProc,hWin,hClient,uMsg,wParam,lParam ret В данном случае я не могу этот метод применить. Если у кого окажется достаточно времени и терпения объяснить, почему происходит баг. Буду очень признателен.
Во первых, у тебя не правильно реализован насос сообщений. Если используешь диалоги, то неплохо было бы в нем (в насосе) использовать ф-ю IsDialogMessage перед TranslateMessage, DispatchMessage. Во вторых, на первый взгляд оконка диалога реализована вроде бы правильно, но, ИМХО, ноги у проблемы очевидно растут из-за того, что в окнонных процедурах диалогов дефолтной функцией обработки сообщений является DefDlgProc, а для обычных окон - DefWindowProc. Поэтому попробуй реализовать все это дело с использованием родителя для MDI CLIENT FRAME в виде обычного окна, а не диалогового.