О Сообщение WM_KEYUP 0x0101 поступает при отпускании клавиши, содержит те же данные, что и сообщение WMJCEYDOWN.

О Сообщение WM_CHAR 0x0102 формируется вызовом функции Transi ateMessage( ) из сообщения WM_KEYDOWN. Поле wParam содержит код ASCII, если нажата клавиша основной клавиатуры. Сообщения WM_KEYDOWN, WM_KEYUP порождаются внешним устройством, a WMCHAR - это сообщения, которые порождает программа. Все сообщения, посылаемые программами, имеют приоритет выше, чем сообщения, порождаемые устройствами. В данном случае это гарантирует, что в оконную функцию сообщения всегда приходят в следующем порядке: WMJCEYDOWN, WM_CHAR, WM_KEYUP. Заметим, что ситуация, в которой пара сообщений WMJCEYDOWN,

Создание простейшего приложения

WM_KEYUP попадает в очередь раньше по времени, чем WM_CHAR, вполне возможна.

О Сообщение WM_SYSKEYDOWN 0x0104 - нажата клавиша Alt. О Сообщение WM_SYSKEYUP 0x0105 - отпущена клавиша Alt.

Помимо этих сообщений в Windows определено множество других сообщений. Программисту также разрешено описывать и посылать в окна функциями PostMessageC) и SendMessage() свои сообщения. Чтобы их коды не совпадали с системными сообщениями, им следует назначать значения большие, чем константа WM_USER, объявление которой приведено ниже:

#define WMJJSER 0x0400

При разработке прикладной программы мы будем считать, что для каждого потока приложения создается очередь сообщений с относительными приоритетами. В [3] указывается, что для сообщений разных приоритетов, фактически, созданы две отдельные очереди. Это избавляет от хранения в структуре MSG кода приоритета и затрат времени на просмотр очереди в поисках наиболее приоритетной заявки. Сообщению WM_PAI NT, как указывалось выше, присвоен уровень приоритета, отличный от уровня приоритета всех других сообщений. С учетом того, что два таких сообщения хранить одновременно в очереди совершенно бессмысленно, для него выделена «одноместная очередь» - флаг наличия сообщения WM_PAINT. Когда в литературе указывают, что в данной операционной системе существует общесистемная очередь, куда поступают все сообщения, рассчитанная на 30 мест, а поступившие в нее сообщения распределяются операционной системой по очередям приложений, имеющим длину до 8 элементов, то речь, видимо, идет о сообщениях, порожденных внешними устройствами.


⇐ Предыдущая| |Следующая ⇒