Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Программное управление Radio Button 
:(
    Опции темы
NiJazz
  Дата 11.1.2005, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 2
Всего: 23



Как можно программно управлять Radio Button'ами на форме?
CRadioButton - нет такого типа. smile
PM MAIL   Вверх
Domestic Cat
Дата 11.1.2005, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 2
Всего: 172



BS_RADIOBUTTON


--------------------

PM   Вверх
NiJazz
Дата 11.1.2005, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 2
Всего: 23



Это ж константа.
Как с ней работать?
PM MAIL   Вверх
Domestic Cat
Дата 11.1.2005, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 2
Всего: 172



Ну так она и задает стиль баттона
http://msdn.microsoft.com/library/default....3a3a.create.asp
(dwStyle)


--------------------

PM   Вверх
NiJazz
Дата 13.1.2005, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 2
Всего: 23



Как, например, выделить одну из радиокнопок на форме?
PM MAIL   Вверх
Gazon
Дата 14.1.2005, 06:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 9.1.2005

Репутация: 4
Всего: 8



Цитата(NiJazz @ 13.1.2005, 16:24)
Как, например, выделить одну из радиокнопок на форме?

Код
CButton *pcb = (CButton *)(this->GetDlgItem(IDC_RADIOBTN));
pcb->SetCheck(true); //On

--------------------
Чем больше узнаешь, тем больше не знаешь, но до истины всегда можно добраться.
PM MAIL   Вверх
Druid
  Дата 30.4.2005, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 21.4.2005

Репутация: нет
Всего: нет



ВОПРОС ПО ТЕМЕ:

smile smile smile Gazon, (и не только).

Сделал кнопку недоступной при помощи:

Код

pcb->SetButtonStyle(BS_CHECKBOX,WS_DISABLED);

Как сделать её опять доступной?

smile smile smile И второй вопрос:
Как сделать, чтобы имена переменных-членов класса, связанные с кнопками при помощи окна ClassWizard->Member Variables, были доступны в пользовательских функциях?
И я почему-то не заметил, что бы их значения менялись автоматически при изменении состояния флажков... Я ошибаюсь или где-то надо что-то дописать?

Это сообщение отредактировал(а) Druid - 2.5.2005, 00:47
PM MAIL   Вверх
Gazon
Дата 2.5.2005, 02:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 9.1.2005

Репутация: 4
Всего: 8



Цитата
Как сделать её опять доступной?

Код

CButton *pcb = (CButton *)(this->GetDlgItem(IDC_RADIOBTN));
pcb->EnableWindow(TRUE);

Цитата
Как сделать, чтобы имена переменных-членов класса, связанные с кнопками при помощи окна ClassWizard->Member Variables, были доступны в пользовательских функциях?

Каким ф-иям? Если тем, которые являются членами того же класса, в котором объявляются эти переменные, то переменные и так должны быть доступны.
Чтобы эти переменные были доступны из другого класса, необходимо их объявить как public.
Цитата
Я ошибаюсь или где-то надо что-то дописать?

Чтобы данные в элементах управления передались связанным с ними переменным, надо вызвать ф-ию CWnd::UpdateData(TRUE) .

Это сообщение отредактировал(а) Gazon - 2.5.2005, 02:12
--------------------
Чем больше узнаешь, тем больше не знаешь, но до истины всегда можно добраться.
PM MAIL   Вверх
Coocky
Дата 2.5.2005, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 25
Всего: 62



Цитата
Как сделать, чтобы имена переменных-членов класса, связанные с кнопками при помощи окна ClassWizard->Member Variables, были доступны в пользовательских функциях?

Они всегда доступны в том классе ,где ты их обьявил.Естественно соблюдая концепцию С++. smile
Цитата
И я почему-то не заметил, что бы их значения менялись автоматически при изменении состояния флажков... Я ошибаюсь или где-то надо что-то дописать?

Сделай свойство Group,кажется,все меняется



--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Druid
Дата 2.5.2005, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 21.4.2005

Репутация: нет
Всего: нет



Цитата(Coocky @ 2.5.2005, 21:09)
Естественно соблюдая концепцию С++.

А можно объяснить примером кода?
PM MAIL   Вверх
bel_nikita
Дата 2.5.2005, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 2
Всего: 47



Цитата
Как сделать её опять доступной?

Вот, в таком духе управляешь свойствами:
Код

  DWORD Style  = GetDlgItem(IDC_RADIOBTN)->GetStyle();
  // если в дизэбле, то врубаем
  if ( Style & WS_DISABLED )
    GetDlgItem(IDC_RADIOBTN)->ModifyStyle(WS_DISABLED, Style & ~WS_DISABLED, 0);

  RedrawWindow();



--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
Druid
Дата 3.5.2005, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 21.4.2005

Репутация: нет
Всего: нет



bel_nikita, местерски! Действительно мощное средство! ... навид... : )
Но у меня почему-то не заработало. : (

Код

void CzzzDlg::OnCheck3() 
{DWORD Style;  
    
 CButton *cb3 = (CButton *)(this->GetDlgItem(IDC_CHECK3)); // флаг, для которого написано событие
 CButton *cb8 = (CButton *)(this->GetDlgItem(IDC_CHECK8)); //флаг, который должен
// становиться недоступным по состоянию первого флага == 1, 
// и становиться доступным при 1й флаг == 0    

 CWnd::UpdateData(TRUE);

 if(cb3->GetCheck())
 {cb8->SetCheck(0);  //  =0;
  cb8->SetButtonStyle(BS_CHECKBOX,WS_DISABLED);    // работает хорошо - дисаблит как надо
 }
 else
 {Style = cb8->GetStyle();
  cb8->ModifyStyle(WS_DISABLED, Style & ~WS_DISABLED, 0); // всё равно недоступно : (
        //cb8->EnableWindow(TRUE);  -- тоже не работает
  RedrawWindow();            
 }
}


smile Может есть другой, более простой способ менять доступность флажка? (или здесь что-нибудь добавить нужно?)

Это сообщение отредактировал(а) Druid - 3.5.2005, 20:02
PM MAIL   Вверх
Lion
Дата 4.5.2005, 07:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 25.3.2002

Репутация: 2
Всего: 2



Устанавливать Enable при помощи ModifyStyle это действительно мощно. Внушаить! smile

Можно и проще. Я, если позволите, по следам вашего кода:
Код

void CzzzDlg::OnCheck3() 
{
  CButton *cb3 = (CButton *)(this->GetDlgItem(IDC_CHECK3));
  CButton *cb8 = (CButton *)(this->GetDlgItem(IDC_CHECK8));
  if(cb3->GetCheck()==1)
  {
    cb8->EnableWindow(FALSE);
  }
  else
  {
    cb8->EnableWindow(TRUE);
  }
}


Все пляски с CWnd::UpdateData(), RedrawWindow(),ModifyStyle() – нафиг не надо. smile

Это сообщение отредактировал(а) Lion - 4.5.2005, 07:37
PM MAIL   Вверх
Druid
Дата 5.5.2005, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 21.4.2005

Репутация: нет
Всего: нет



Lion, да так значительно проще! smile А главное --работает! smile

Хотя странно, почему мой пример с ModifyStyle не работает? Навид всё правильно и должно изменяться... smile
PM MAIL   Вверх
bel_nikita
Дата 5.5.2005, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 2
Всего: 47



Druid
Цитата
Хотя странно, почему мой пример с ModifyStyle не работает? Навид всё правильно и должно изменяться...

Строки:
Код

CButton *cb3 = (CButton *)(this->GetDlgItem(IDC_CHECK3));
CButton *cb8 = (CButton *)(this->GetDlgItem(IDC_CHECK8)); 
не нужны smile

Там же черным по-белому написано:
Код

GetDlgItem(IDC_CHECK3)->ModifyStyle(WS_DISABLED, Style & ~WS_DISABLED, 0); 
smile

Не надо приводить ни к какому указателю


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.1036 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.