Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Залипание кнопки

4.5K
18 октября 2006 года
e-XperT
127 / / 04.07.2006
Подскажите, как в диалоговом окне сделать залипание кнопки(осталась в нажатом положении)? Делаю через SetState. Все хорошо кнопка залипает, но после потери фокуса происходит опять вызов кнопочной процедуры (обрабатывается нажатие кнопки). Можно конечно поставить счетчик чтобы смотреть какой случай нажатия кнопки сработал. Но этот метод как то криво смотрится. Может есть какой то более нормальный способ это сделать?
З.Ы. В файле приведен наглядный пример этой проблемы.
22K
18 октября 2006 года
shad0w
2 / / 17.10.2006
Для того чтобы обработчик нажатия кнопки не вызывался повторно при вызове SetState() нужно "отключить" эту кнопку функцией EnableWindow(FALSE) перед установкой состояния и включить после.

Код:
void CCheckTestDlg::OnButton1()
{
    static BOOL bIsPressed = FALSE;

    CButton* pBtn = (CButton*)GetDlgItem(IDC_BUTTON1);
    ASSERT (pBtn != NULL);
   
        AfxMessageBox("OK");
    pBtn->EnableWindow(FALSE);
    pBtn->SetState(bIsPressed ^= TRUE);
    pBtn->EnableWindow(TRUE);  
}
4.5K
19 октября 2006 года
e-XperT
127 / / 04.07.2006
Да. Так работает. Спасибо.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог