Статические элементы управления это надписи для других органов управления. Создается на основе класса “static”.
Рис.8 Окно со статическим текстом
Для создания такого элемента надо объявить переменную типа HWND (идентификатор окна) и после создания главного окна прило ж ения hWnd вызывать функцию CreateWindow:
HWND hStatic= CreateWindow("static", // класс
"текст текст текст текст",//текст
WS_CHILD | WS_VISIBLE,
15,10,//х и у,
145, 20,//ширина и высота
hWnd,// родитель
NULL,
hInstance, NULL);
Орган управления выводит текст (используя для этого функцию DrawText), выравнивая его влево и выполняя свертку слов. Текст, который не поместился в окне, обрезается. Выполняется замена символов табуляции на пробелы.
Стили указываются третьим параметром при создании элемента.
SS_LEFT, SS_RIGHT, SS_CENTER – выравнивание текста.
SS_BLACKRECT, SS_GRAYRECT и SS_WHITERECT – различные рамки.
Изменить текст в элементе hStatic – вызвать SetWindowText(hStatic, lpszString), где вторым параметром указать новый текст.
Кнопки
Кнопки – это органы управления, которые уведомляют родительское окно о том, что пользователь выбрал этот орган управления. Для создания кнопки, приложение должно создать дочернее окно на базе класса "button". Для этого надо объявить переменную для сохранения идентификатора окна и определить идентификатор органа управления.
#define IDB_Help 1// идентификатор элемента управления (кнопки)
HWND hWnd, hHelpButton; // идентификаторы окон
hHelpButton = CreateWindow("button",// класс окна
"Help",,// надпись на кнопке
WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON,// стиль кнопки
10, 30, //координаты левого верхнего угла кнопки
40, 20, //ширина и высота
hWnd, //родительское окно, которое будет получать сообщения от кнопки
(HMENU)IDB_Help,// идентификатор кнопки
hInstance, NULL);
После этого родительское окно будет получать от кнопки сообщение WM_COMMAND. Этим сообщением кнопка информирует родительское окно о том, что с ней что-то сделали, например, нажали.
В младшем слове wParam передается идентификатор органа управления (IDB_Help).
Старшее слово содержит код извещения от органа управления (notification code), по которому можно судить о том, какое действие было выполнено над органом управления.
Для кнопки это – BN_CLICKED – «нажали».
lParam содержит идентификатор дочернего окна (HWND hHelpButton).
В функции окна в операторе switch добавляется обработка сообщения WM_COMMAND.
case WM_COMMAND: {if(LOWORD(wParam) == IDB_Help) {// обработчик нажатия кнопки }Стиль кнопки влияет на ее внешний вид и поведение.
Таблица 16 Константы для создания кнопокСтиль кнопки | Описание | |
BS_PUSHBUTTON | Стандартная кнопка. | |
BS_DEFPUSHBUTTON | Стандартная кнопка, срабатывает по нажатию клавиши Enter. | |
BS_AUTO3STATE | 3 состояния (выключено, включено, не активно), квадратная форма, текст размещается справа, перерисовываются автоматически. | |
BS_CHECKBOX | 2 состояния (выключено/включено), квадратная форма, НЕ перерисовываются автоматически. | |
BS_AUTORADIOBUTTON | 2 состояния (выключено/включено), круглая форма, перерисовываются автоматически. | |
BS_RADIOBUTTON | 2 состояния (выключено/включено), круглая форма, НЕ перерисовываются автоматически. | |
BS_OWNERDRAW | Внешний вид определяется родителем. | |
BS_GROUPBOX | Рамка, не получает сообщений. |
Управление кнопкой из приложения возможно через функции или через посылку соответствующих сообщений.