| imho.ws |
![]() |
|
|
|
# 1 |
|
Newbie
Регистрация: 13.10.2004
Сообщения: 28
![]() |
Проблема с RadioButton
Начал писать GUI евый интерфейс, и столкнулся с написанием диалога настроек, и тут такое дело - во первых - как их сгруппированить - должно быть 16 групп по 3 штуки, во вторых как брать их статус (включена, не включена ) БЕЗ управляющих переменных. Я делал так -
{ int tmp=GetCheckRadioButton(IDC_FIRST,IDC_LAST); fwrite(&tmp,4,1,filename); } Таким макаром брал 16 раз и вот так пробовал ставить { fread(tmp,4,1,filename); CheckRadioButton(IDC_FIRST,IDC_LAST,tmp); } Фиг- работает только на двух из 16 (процедура чтения и записи для всех одинаковая). От чего зависит так и не понял, мудрые люди подскажите плиз. А то создавать управляющие переменные для 16*3 это для меня слишком. |
|
|
|
|
# 2 |
|
Junior Member
Регистрация: 19.04.2002
Адрес: Дом
Пол: Male
Сообщения: 187
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Можно завести переменную типа long long (int64) - это будет 64 бита триггеров. в ней и хранить состояния всех батонов. ее и записывать и считывать в/из файла
После, завести один обработчик OnClick для все радиобатонов. В нем узнавать ID контрола для которого вызвано событие и в зависимости от события менять соотв бит в нашей мега переменной. в обработчике код примерно такой, может что и попутал, но концепция думаю ясна. Код:
int64 bitmask=((int64(0x1))<<(curid-IDC_FIRST+1));
if (((CRadioButton *)GetDlgItem(curid))->Checked())
{
Flags|=bitmask;
}
else
{
Flags~=bitmask;
}
__________________
Дураки не динозавры - они не вымрут... |
|
|