Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Как сделать кнопку Enabled


Автор: Paradox 3.12.2002, 23:31
Хочу на MSVC сделать до поры до времени кнопку Enabled (потом наоборот). На билдере просто button1.enabled = false, а как на MSVC ?
И еще как можно менять размер и вид шрифта компонентов.

Автор: Rimas 3.12.2002, 23:59
Это элементарно. Если IDC_BUTTON это ID кнопки в ресурсах то код будет выглядеть так:

GetDlgItem(IDC_BUTTON)->EnableWindow(FALSE); //или TRUE если нужно сделать ее активной

Автор: Данкинг 24.1.2007, 17:18
А в чём здесь ошибка?! Знаю, что тупой вопрос - видимо, как-то процедуру к окну привязать надо? smile 

Код

void en()
{
GetDlgItem(IDC_BUTTON16)->EnableWindow(FALSE); 
}


 

Автор: zkv 24.1.2007, 17:29
Данкинг, во первых вопрос по Визуалу, во вторых ни о чем код ваш не говорит, в третьих ошибки какие? А в четвертых заведите control variable для вашей кнопки и не морочьте себе голову smile

Автор: _hunter 24.1.2007, 17:34
Цитата(Данкинг @  24.1.2007,  17:18 Найти цитируемый пост)
А в чём здесь ошибка?

это у тебя спрашивать нужно... (точнее симпотомы этой ошибки)
навскидку: проверка успешности:
if (GetDlgItem(IDC_BUTTON16))
GetDlgItem(IDC_BUTTON16)->EnableWindow(FALSE); 
совсем не лишней будет...

Автор: Данкинг 24.1.2007, 17:36
Я просто тему про кнопки нашёл...
По нажатию на кнопку я хочу вызвать процедуру, в которой данная кнопка блокируется (disabled). 
Ошибки вот такие вылезают:

Код

с:\dkg\CCCC\calcul\calculDlg.cpp(18) : error C2660: 'GetDlgItem' : function does not take 1 parameters
c:\dkg\CCCC\calcul\calculDlg.cpp(18) : error C2227: left of '->EnableWindow' must point to class/struct/union


А  переменную я завёл, но, во-первых, с ней та же фигня, а, во-вторых, не могу понять, где там в свойствах enable находится?...
 smile 

Автор: zkv 24.1.2007, 17:42
Цитата(Данкинг @  24.1.2007,  17:36 Найти цитируемый пост)
А  переменную я завёл, но, во-первых, с ней та же фигня, а, во-вторых, не могу понять, где там в свойствах enable находится?...

если ваша переменная называется m_myBtn, то так:
m_myBtn.EnableWindow( FALSE );
Цитата(Данкинг @  24.1.2007,  17:36 Найти цитируемый пост)
Ошибки вот такие вылезают:

уверен что не из метода класса диалога вызываете GetDlgItem()

Автор: threef 24.1.2007, 20:17
Функция en() у вас не связана с классом окна, поэтому ей требуется 2 параметра: указатель на окно-диалог и индекс управляющего элемента(кнопки). Лучше ее сделать методом класса диалогового окна. Иначе 
Код

void en()
{
   AfxGetMainWnd()->GetDlgItem(IDC_BUTTON16)->ModifyStyle(WS_DISABLED,0); 
}


Автор: Данкинг 24.1.2007, 20:53
Цитата(threef @ 24.1.2007,  20:17)
Функция en() у вас не связана с классом окна, поэтому ей требуется 2 параметра: указатель на окно-диалог и индекс управляющего элемента(кнопки). Лучше ее сделать методом класса диалогового окна. Иначе 
Код

void en()
{
   AfxGetMainWnd()->GetDlgItem(IDC_BUTTON16)->ModifyStyle(WS_DISABLED,0); 
}


Вот нечто подобное я имел в виду, спасибо! smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)