Cтраница 4
Словом, важно помнить, что странное и необъяснимое поведение приложения может происходить по причине пропущенных обращений к умолчательной оконной процедуре. [46]
Очевидная цель функции TranslateAccelerator - обрабатывать любые горячие клавиши, определенные в вашей программе прежде, чем они будут переданы в соответствующую оконную процедуру с помощью DispatchMessage. Иначе говоря, Windows проверяет, нажал ли пользователь горячую клавишу; если да, то Windows переводит нажатие клавиши в сообщение, в противном случае она просто передает сообщение непосредственно в вашу процедуру главного окна. [47]
Единственная задача MenuAid при создании подкласса рабочего стола - в ответ на щелчок правой кнопкой мыши передать сообщения обратно в свою собственную основную оконную процедуру. Получив это сообщение, основное окно отображает на экране меню доступных программ. [48]
Если рассмотреть поставляемые исходные тексты, то видно, что это единственная функция ( не считая оконной процедуры по умолчанию), которая вызывается в оконной процедуре. Это означает, что именно она занимается поиском соответствующих обработчиков сообщений. [49]
Как вы видели ранее, сообщение WM CHAR, с точки зрения программиста DOS, представляет собой одно из простейших и наиболее доступных сообщений, посылаемых в оконную процедуру. Параметр ch, который передается в обработчик сообщения KeyMouse OnChar, содержит значение нажатой клавиши, если эта клавиша является буквой или цифрой. В других параметрах отмечается, сколько раз эта клавиша была нажата с момента последней посылки сообщения WM CHAR. Для обработки нажатия таких клавиш, как лев. [50]
Оператор switch, который формирует тело оконной процедуры, точно такой же, как и оператор switch, который вы можете видеть в WNDPROC основного окна или в оконной процедуре диалоговой панели. [51]
Поскольку элементы управления в действительности являются просто окнами со своими собственными структурами WNDCLASS и своими собственными внутренними данными, нет причины, по которой вы не могли бы обратиться к Windows и запросить адрес их оконной процедуры. [52]