Помогите разобраться с MDI окном.

Тема в разделе "WASM.BEGINNERS", создана пользователем Black_wanderer, 18 окт 2006.

  1. Black_wanderer

    Black_wanderer New Member

    Публикаций:
    0
    Регистрация:
    7 июн 2004
    Сообщения:
    7
    Всем доброго времени суток.
    Проблема в следующем - При разворачивании дочернего MDI окна,
    Дочернее окно перестает реагировать на нажатие стандартных кнопок (сворачивание, восстановление, закрытие). - В чем может быть причина такого поведения.

    Есть подозрения что в этом виновата неправильная обработка функции.

    Код (Text):
    1.  .elseif eax==WM_CLOSE
    2.         invoke DestroyWindow,hWin
    3.     .elseif uMsg==WM_DESTROY
    4.         invoke PostQuitMessage,NULL
    5.     .else
    6.         invoke DefFrameProc,hWin,hClient,uMsg,wParam,lParam
    7.         ret
    8.     .endif
    9.     xor    eax,eax
    10.     ret
    Поскольку в другой своей программе я обрабатывал ее, так и все работало нормально.

    Код (Text):
    1.  .elseif eax==WM_CLOSE
    2.         invoke DestroyWindow,hWin
    3.     .elseif uMsg==WM_DESTROY
    4.         invoke PostQuitMessage,NULL
    5.     .endif
    6.     invoke DefFrameProc,hWin,hClient,uMsg,wParam,lParam
    7.     ret
    В данном случае я не могу этот метод применить.
    Если у кого окажется достаточно времени и терпения объяснить, почему происходит баг.
    Буду очень признателен.
     
  2. SSS

    SSS New Member

    Публикаций:
    0
    Регистрация:
    24 ноя 2003
    Сообщения:
    12
    Во первых, у тебя не правильно реализован насос сообщений. Если используешь диалоги, то неплохо было бы в нем (в насосе) использовать ф-ю IsDialogMessage перед TranslateMessage, DispatchMessage.
    Во вторых, на первый взгляд оконка диалога реализована вроде бы правильно, но, ИМХО, ноги у проблемы очевидно растут из-за того, что в окнонных процедурах диалогов дефолтной функцией обработки сообщений является DefDlgProc, а для обычных окон - DefWindowProc. Поэтому попробуй реализовать все это дело с использованием родителя для MDI CLIENT FRAME в виде обычного окна, а не диалогового.