Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 августа!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Давно заметил, что всё-таки языки С/C++ это не самый лучший вариант программирования под Windows. Сейчас появилась масса более современных и удобных языков, например тот же Python - кроссплатформенный язык, очень легок в изучение. Я его изучил буквально за несколько дней по этому курсу - ссылка. Автор постарался, там видеоуроки на удивление легкие и понятные.

Как определить текущее состояние кнопки в CToolbar

Хотя MFC и предоставляет полезный и простой способ хранения состояния меню и/или кнопок панели инструментов совместно в CControlBar, однако, простого способа определения текущего состояния кнопок не существует.

Для нахождения текущего состояния команд меню или кнопок панели интструментов в классе, наследованном от CControlBar, можно использовать следующий кусок кода:

      UINT iButtonID;
       UINT iButtonStyle;
       int iButtonImage;
 
       // Если Toolbar не основан на значении константы по умолчанию
       // "AFX_IDW_TOOLBAR", то замените константу Toolbar на нужное
       // значение.
 
       // Если следующая строка вызывается из фреймового окна (Frame Window)
       // то удалите "GetParentFrame()->":
       CToolBar* pBar =
       (CToolBar*)GetParentFrame()->GetDescendantWindow(AFX_IDW_TOOLBAR);
 
       // Если данная часть кода вызывается из сгенерированной визардом
       // (AppWizard) функции фреймового окна (Frame Window) в Visual C++ 4.0,
       // то замените предыдущую строку на следующую. Повторно вызовите,
       // чтобы фреймовое окно, наследованное от CMDIFrameWnd и
       // сгенерированное визардом (AppWizard) имело переменную-член
       // m_wndToolBar для CToolBar.
       CToolBar* pBar = &m_wndToolBar;
 
       if (pBar != NULL) {
 
            // в следующей строке используйте нужный ID кнопки:
            int iButtonIndex = pBar->CommandToIndex(ID_MY_BUTTON);
 
            pBar->GetButtonInfo(iButtonIndex, iButtonID, iButtonStyle,
       iButtonImage);
 
            // Следующий код проверяет все возможные состояния.
            // На практике, проверяйте только те состояния, которые нужны.
 
            if (iButtonStyle & TBBS_PRESSED)
                 // Кнопка нажата
            else
                 if (iButtonStyle & (TBBS_CHECKED & TBBS_DISABLED))
                      // Кнопка нажата и недоступна
                 else
                      if (iButtonStyle & TBBS_DISABLED)
                           // Кнопка запрещена
                      else
                           if (iButtonStyle & TBBS_INDETERMINATE)
                                // Неопределённое состояние кнопки
                           else
                                if (iButtonStyle & TBBS_CHECKED)
                                     // Кнопка отмечена (Checked)
                                else
                                     // Кнопка отпущена и доступна
 
       } 


<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS