int R - SendMessage(w,BM_GETCHECK.O,0):

Установка и снятие отметки производится одним сообщением BM_SETCHECK с разными константами в поле wParam. Следующий фрагмент кода снимет установленную отметку переключателя или установит отметку, если она отсутствовала:

if(R & BST_CHECKED)
SendMessageCGetDlgltem(hWnd. 10002).BMJETCHECK.BSTJJNCHECKED. 0); eise
SendMessage(GetDlgltem(hWnd.10002).BM_SETCHECK,BST__CHECKED. 0);

На рис. 6.1 показано, как изменится окно переключателя после выполнения данного блока кода.

В заголовочном файле windowsx.h для передачи этих и других сообщений элементу button предусмотрены макросы, назначение которых легко понять из названий:

int R - Button_GetCheck(hwndCtl); Button_SetCheck(hwndCt1. check):

Макросу Button_GetCheck передается дескриптор окна кнопки. Он, в свою очередь, возвращает значение BST_CHECKED или BSTJJNCHECKED. Макросу Button_SetCheck надо передать дескриптор окна и одну из этих констант.

Как известно, операционная система обычно предоставляет возможность имитации действий пользователя программными средствами. Чтобы сымитировать щелчок мышью по кнопке, надо послать ей сообщение BM_CLICK, как это показано в следующем фрагменте кода:

PostMessage(GetDlgItem(hWnd.10001). BM_CLICK.0.0):

В левой части рис. 6.1 показан вид кнопки Продолжить до посылки сообщения BM_CLICK, а в правой части показана кнопка уже после обработки сообщения. Сам процесс нажимания кнопки будет не виден, но можно заметить, что внутри кнопки появилась пунктирная рамка, указывающая, что на нее переместился фокус ввода. Кроме того, оконная функция получит сообщение WM_COMMAND как после настоящего щелчка кнопкой мыши.

Другие, более сложные элементы управления создаются похожим способом. При создании элемента для его настройки указываются дополнительные флаги. Элемент управления посылает родительскому окну сообщения WM_NOTTIFY или WM_COMMAND с кодами извещения. Сама программа посылает сообщения элементу управления для передачи ему команд и получения от него информации. В файле windowsx.h можно найти макросы для передачи сообщений в более компактной и легко запоминающейся форме.


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