Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Уроки по Visual C++ (MFC, платформа .NET)


Информационный Канал Subscribe.Ru

Уроки по Visual C++.NET. Рассылки сайта progs.biz
Рассылка № 93
 
Начало > Visual C++.NET > MFC > Урок 36

Бьерн Страуструп. Язык программирования С++. Специальное издание.
Бьерн Страуструп. Язык программирования С++. Специальное издание
Заказать на Озоне

Подробнее


Полные версии уроков (с картинками): урок 36.

Visual C++.NET
Урок 36. Меняем рисунок у кнопки со списком

Очередное наше занятие посвящено изменению рисунка на кнопке со списком (как делать такую кнопку, см. урок 30). Необходимость использования такой кнопки с разными изображениями может возникнуть, например, при переключении между разными видами одного документа или же, скажем, при задании цвета для шрифта (как это сделано для соотвествующей кнопки в Word'е) - в последнем случае на кнопке может показываться выбранный цвет.

Создайте обычное SDI-приложение с установками по умолчанию. Добавьте кнопку со списком (см. урок 30). В списке задайте 2 пункта, для каждого создайте пустой обработчик в классе вида (так как обычно именно в этом классе и добавляются обработчики для разных команд). Также добавьте пару новых изображений к Toolbar'у - именно они и будут использоваться у для нашей кнопки со списком.

Далее перенесите переменную m_wndToolBar в классе окна-рамки в public-секцию (так как к ней нужен будет доступ из класса вида).

И, наконец, код, который вы должны написать в обработчике для щелчка для каждого пункта нашей кнопки со списком:

void CmfctoolbarView::OnButtonmenuItem1()
{
    // Меняем рисунок у кнопки.

    // Получаем указатель на экземпляр CMainFrame.
    CMainFrame* pFrame=(CMainFrame*)AfxGetMainWnd();
    // Получаем toolbar.
    CToolBarCtrl &toolbar = pFrame->m_wndToolBar.GetToolBarCtrl();
    TBBUTTONINFO bi;
    bi.cbSize = sizeof(TBBUTTONINFO);
    bi.dwMask = TBIF_IMAGE;
    toolbar.GetButtonInfo(ID_CBBUTTON, &bi);
    // Устанавливаем новое изображение.
    bi.iImage = 10;
    toolbar.SetButtonInfo(ID_CBBUTTON, &bi);

    // Выполняем действие, связанное с нажатием кнопки.
    ...
}

Кроме этого кода для смены изображения вы долны написать и код, который должен выдполняться при выборе нашей команды.

Логика кода довольно-таки проста - сначала мы добираемся до toolbar'а в классе окна-рамки, потом с помощью структуры для описания кнопки TBBUTTONINFO устанавливаем по номеру новое изображение (разумеется, номер изображения мы указываем в обработчиках для разных команд разный).

Результат будет такой, как мы и ожидали - изображение на кнопке будет меняться при выборе соответствующей команде.

Рассылки сайта progs.biz
Visual C++, MFC
C# и .NET
VB.NET
ASP.NET
Win API
C/C++
Delphi
Java
HTML, PHP, mySQL, WEB-дизайн
Flash MX
C++ Builder
Ассемблер
SQL Server
DirectX
Обзор книг
Обзор программ
Новости сайта progs.biz


PARKING.RU. Качественный ВИРТУАЛЬНЫЙ ХОСТИНГ на платформе Windows(r): поддержка NET, многофункциональная панель управления, аренда бизнес-приложений, сертифицированные специалисты. Управляемый ВЫДЕЛЕННЫЙ ХОСТИНГ на платформе Windows(r): производительные серверы, профессиональная поддержка, аренда ПО Microsoft(r), безопасность, гарантии. http://www.parking.ru


Копирование любых материалов сайта без разрешения авторов и владельцев сайта запрещено.
© 2002-2006 сайт progs.biz
© 2002-2006 Игорь Алексеев

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.lessonsfromai
Архив рассылки
Отписаться Вебом Почтой
Вспомнить пароль

В избранное