Обработка сообщений диалоговым окном...

Тема в разделе "WASM.BEGINNERS", создана пользователем devillsd, 19 май 2008.

  1. devillsd

    devillsd New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    131
    .WHILE TRUE //безконечный цикл приёма сообщений
    INVOKE GetMessage, ADDR msg,NULL,0,0 //Получить сообщение в msg структуру
    .BREAK .IF (!eax)//прервать если сообщение не принято
    invoke IsDialogMessage, hDlg, ADDR msg//являеться ли сообщение диалогового окна
    .if eax==FALSE//если нет то ...хз что это значит
    INVOKE TranslateMessage, ADDR msg//ну чтото из этого вроди клавиатурные нажатия в чары переводит
    INVOKE DispatchMessage, ADDR msg
    .endif
    .ENDW
    Вопросы:
    1: Если мы используем диалоговое окно как основное,отпадает ли надобность в этих строках
    invoke IsDialogMessage, hDlg, ADDR msg//являеться ли сообщение диалогового окна
    .if eax==FALSE//если нет то ...хз что это значит
    INVOKE TranslateMessage, ADDR msg//ну чтото из этого вроди клавиатурные нажатия в чары переводит
    INVOKE DispatchMessage, ADDR msg
    .endif
    2: Ктонибудь может словами понятными для селюка обьяснить, что толком делают эти строки
    INVOKE TranslateMessage, ADDR msg//ну чтото из этого вроди клавиатурные нажатия в чары переводит
    INVOKE DispatchMessage, ADDR msg//Оссобенно не ясно это!!!!
    Заранее благодарен....
     
  2. Osen

    Osen Рие

    Публикаций:
    0
    Регистрация:
    5 апр 2008
    Сообщения:
    283
    Адрес:
    Париж
    devillsd
    Код (Text):
    1. INVOKE DispatchMessage, ADDR msg
    Направляет очередное сообщение в твою процедуру окна. TranslateMessage в этом случае конвертирует один тип сообщения в другой, но это можно почитать в Platform SDK.

    Нужен цикл или не нужен зависит от того как ты создал диалоговое окно - вызовом CreateDialogParam (цикл нужен), вызовом DialogBoxParam (цикл не нужен, т.к. параметром указываешь WndProc).
     
  3. devillsd

    devillsd New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    131
    Зачем тогда проверка меседжа(от диалогового окна или нет)??
    Я говорю за случай с CreateDialogParam...
    И попутный вопрос, почему для WndProc DlgProc и тд не нужны прототипы???
    И как DispatchMessage определяет определяет процедуру окна в которую нужно перенаправить сообщения?
    ВНИМАНИЕ ЕЩЁ РАЗ ДИАЛОГОВОЕ ОКНО-КАК ОСНОВНОЕ ФУНКЦИЯ ОКНА И ЕСТЬ ФУНКЦИЯ ДИАЛОГА.....
     
  4. devillsd

    devillsd New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    131
    UP...Жду толковых ответов!!!
     
  5. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    О чем это вы ??

    Толковые ответы сами ждут вас у Iczelion-а (прямо здесь, на васме), а еще более толковые у Петцольда (Petzold "Programming Windows"- Dialog Boxes).
     
  6. devillsd

    devillsd New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    131
    keroА вот это как раз не толковый ответ, исцезилион не учит оптимизации он даёт бешинерам начальные знания, я эту статью перечитал не раз!!! И находил на этом форуме много заметок к ицзелиону!Те ответы которые там есть исчерпаны,ну я не поленюсь прочитать ещё раз=)
    Petzold "Programming Windows"- Dialog Boxes где это взять...ушол на поиски...
     
  7. iZzz32

    iZzz32 Sergey Sfeli

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    355
    devillsd, ещё можно поискать на http://blogs.msdn.com/oldnewthing/ записи из серии "The dialog manager".