Применение переключателей Листинг 8.6

if (IsDlgButtonChecked (hDlg. IDC_RADI03)--BST_CHECKED) {
CheckDlgButton(hDlg.IDC_RADI03.BSTUNCHECKED ): EnableWi ndow(GetDlgltemChDlg.HEIGHT).FALSE);
}
else
{
CheckDlgButton(hDlg.IDC_RADI03.BST_CHECKED ); Enabl eWindow(GetDlgItem(hDlg.HEIGHT).TRUE);
}

Значение высоты текстовой области можно получить только при включенном поле ввода. Состояние поля ввода высоты проверяется при помощи функции IsWindowEnabledO. Но учет всех подобных особенностей конкретного диалога не дает практического выигрыша в загрузке процессора, замедляет разработку и усложняет отладку программ.

Диалоговая процедура для показанного на рис. 8.2 окна приведена в листинге 8.7.

Листинг 8.7

#include <windows.h> #include <stdio.h> #include "resource.h"

RECT rClient; //Размер рабочей области int iHeight - 32; //Высота области сообщений, int 1: //Радиус колеса.

bool bObod: //Признак необходимости рисования обода и ступицы,

bool bHeight; //Признак активности поля «Высота» BOOL DialogEdit(HWND hDlg. UINT message.WPARAM wParam.LPARAM lParam) {static HWND hWnd; switch(message) {

case WMJNITDIALOG: {RECT R.D;
hWnd - GetNextWi ndow(hDlg.GW_HWNDNEXT); GetWindowRect(GetNextWindow(hDlg.GW_HWNDNEXT).&R); GetWindowRect(hDlg.&D):
MoveWi ndow(hDlg.R.1eft.R.bottom.D.ri ght-D.1eft.D.bottom-D.top.TRUE); if(l--O) 1 - (R.bottom-R.top)/6;

SaveParamO; //Запоминаем параметры для обеспечения отказа Updatelmage(hDlg); //Задаем текущие значения параметров }

return TRUE: case WM_CL0SE:
DestroyWindow(hDlg);
return TRUE; case WM_COMMAND:
switch(LOWORD(wParam)) {
BOOL Res:

case IDC_RADI03: //Сообщение от переключателя окна высоты //Состояние группы переключателей изменяет пользователь, //а этот переключатель обрабатывается приложением продолжение &

Элементы управления в диалоговых окнах

Листинг 8.7 {продолжение)

if (IsDlgButtonChecked (hDlg. IDC_RADI03)--BST_CHECKED) {
CheckDlgButton(hDlg.IDC_RADI03.BSTJJNCHECKED ): //EnableWindow(GetDlgItem(hDlg.HEIGHT).FALSE): }

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