C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 Как определить текущее состояние кнопки в CToolbar / ToolBar / Элементы управления

Как определить текущее состояние кнопки в 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
                                    // Кнопка отпущена и доступна

      }