Глава 30. WinSight и WinSpector 853
Сообщения Windows
Сообщения Windows — это способ передачи информации приложению. Каждое сообщение отражает системное событие, на которое приложение может отреагировать. Сообщение, передаваемое между приложениями — это структура, содержащая идентификатор и параметры сообщения, с которым приложение может оперировать. Каждое сообщение, передаваемое окну, содержит несколько параметров, которые используются и для адресации сообщения, и для передачи информации окну (см. листинг 30.1). Параметр hwiid содержит дескриптор (handle) окна, которое должно принять сообщение. Параметр message — это идентификатор сообщения, посылаемого в окно. В качестве примера можно привести сообщения WM_COMMAND и WM_PAINT.
typedef struct tagMSG i
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM IParani;
DWORD time;
POINT pt;
Параметры сообщения wparam и iparam содержат дополнительную информацию, связанную с параметром message. Если, например, списку (list box) посылается сообщение "добавить строку", в качестве идентификатора сообщения используется LB_ADDSTRING, при этом параметр wparam равен нулю, а iparam содержит указатель на строку, помещаемую в список. Параметры wparam и iparam принимают различные значения в зависимости от значения message и могут содержать информацию, управляющую рисованием окна, а также сообщения DDE, предназначенные другим приложениям.
Совет
¦Вот в общих чертах и весь механизм передачи сообщений; однако часто полезно бывает знать, что происходит на более низком уровне — уровне приложений Windows.
Параметр time фиксирует системное время, когда сообщение было отправлено. Оно используется для определения времени помещения сообщения в очередь и отслеживания двойного щелчка кнопки мыши. Например, когда вы нажимаете кнопку мыши в окне, способном принять двойной щелчок, окно ищет в очереди сообщение о втором нажатии кнопки на протяжении заданного промежутка времени. Если таковое получено, в очередь со-