В листинге 8.4 приведен код функции UpdatelmageC ).

Листинг 8.4

void UpdatelmageCHWND hDlg) {

//При увеличении iHeight остается след колеса - очищаем область текста HDC de - GetDCCGetNextWindow(hDlg.GW_0WNER)); продолжение т&

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

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

Rectangle(dc.О.rCli ent.bottom-i Hei ght,rCli ent.ri ght.rClient.bottom); ReleaseDC(GetNextwi ndow(hDlg.GW_0WNER).de); if(bObod) //Отображение признака рисования обода

{CheckDlgButton(hDlg.IDC_RADI01.BST_CHECKED);
CheckDlgButton(hDlg.IDC_RAD102.BSTJJNCHECKED):
}
eise
{CheckDl gButton(hDlg.IDC_RADI02.BST_CHECKED); CheckDl gButton(hDlg,IDC_RADI01.BSTJJNCHECKED); }

sprintf(s.*W .1); //Вывод значения радиуса SetDlgItemText(hDlg.RADIUS.s);

sprintf(s."*d".iHeight); //Вывод высоты текстовой области SetDlgItemText(hDlg.HEIGHT.s); if(Height) //Отображение доступности поля высоты {CheckDlgButton(hDlg.IDC_RADI03.BST_CHECKED ); EnableWi ndow(GetDlgltem(hDlg.HEIGHT).TRUE);

}
else
{
CheckDlgButton(hDlg.IDC_RADI03.BSTJJNCHECKED ); Enablewi ndow(GetDlgItem(hDlg.HEIGHT),FALSE): }
}

Функция UpdateDataO копирует в память состояние всех управляющих элементов, как это показано в листинге 8.5.

Листинг 8.5

void UpdateDataCHWND hDlg) {
char s[80]; int Res;
GetDlgltemText (hDlg.RADIUS . s. strlen(s)-l): sscanfCs." Sd".&l);
if (IsDlgButtonChecked (hDlg. IDC_RAD101)~BST_CHECKED) bObod - 1; else bObod-O;
i Hei ght-GetDlgltemlnt(hDlg.HEIGHT.&Res.FALSE);
if (IsDlgButtonChecked (hDlg. IDC_RADI03)-BST_CHECKED) bHeight - 1;
else bHeight-0;
}

Можно сравнить этот код с предыдущим проектом, в котором при вводе значения радиуса функцией GetDlgltemTextO выполнялась дополнительная проверка значения. Если длина введенной строки была равна нулю, то было понятно, что поле не заполнено. При вводе высоты функцией GetDl gltemlnt () так сделать нельзя, поэтому программа работала некорректно, и если пользователь не изменял высоту текстовой области, то ее высота становилась нулевой.

Для хранения состояния переключателя IDC_RADI03 можно было не выделять отдельной переменной bObod, так как его можно получить функцией I sDl gButtonChecked (). При этом изменять состояние тоже можно было довольно легко, что иллюстрирует код, приведенный в листинге 8.6.


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