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

ВИДЕОКУРС ВЗЛОМ
выпущен 28 января!


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

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



Возможности языков семейства Си по истине безграничны, однако, в этой свободе кроются и недостатки: всегда нужно программисту держать ухо востро и контроллировать "переполнение буфера", чтобы потом программа не вылетала в "синий экран" на массе разнообразных версий Windows и железа у пользователей. Те же крэкеры и реверсеры специально ищут в коде программ на Си уязвимости, куда можно подсадить любой вирусный код, об этом более подробно автор рассказывал в своём видеокурсе здесь. Я там многое узнал и теперь мой код стал значительно более безопасный.

Visual C++.NET
Урок 30. Кнопка со списком на панели инструментов - создание

Если вы делаете заготовку для вашего приложения мастером, то все кнопки на панели инструментов самые обычные - их можно только нажимать и все. Но, как вы знаете, кнопки бывают разными - со списком, образующие группу радиокнопки, кнопки, которые имеют два состояния - обычное и вдавленное и т. д.

На сегодняшнем уроке мы посмотрим, как добавить в ваше приложение кнопку со списком. Также мы посмотрим, как добавить обработчик к такой кнопке.

Создайте SDI-заготовку (MFC, естественно) с помощью мастера. Все остальные параметры приложения можно оставить без изменений - значения по умочанию нам вполне подходят. Имя проекта задайте как combobox.

Добавьте на панель инструментов еще одну кнопку и что-нибудь нарисуйте на ней. Именно эту кнопку мы и превратим в кнопку со списком. Для тех, кто забыл - для этого переходим на вкладку Resource View, затем раскрываем дерево combobox.rc->Toolbar и двойным щелчком на IDR_MAINFRAME показываем редактор для панели инструментов. Идентификатор ID в окне свойств для этой кнопки задайте в ID_CBBUTTON.

Теперь займемся непосредственно кодом. Внесите в конец метода OnCreate класса CMainFrame такой код:

  ...
 
   //Задаем стиль для панели инструментов.
 
   m_wndToolBar.GetToolBarCtrl().SendMessage(TB_SETEXTENDEDSTYLE, 0,
 
     (LPARAM)TBSTYLE_EX_DRAWDDARROWS);
 
   //Получаем стиль нашей кнопки.
 
   DWORD dwStyle = m_wndToolBar.GetButtonStyle(m_wndToolBar.CommandToIndex(ID_CBBUTTON));
 
   //Прибавляем к стилю кнопки флаг TBSTYLE_DROPDOWN.
 
   dwStyle |= TBSTYLE_DROPDOWN;
 
   //Устанавливаем новый стиль для кнопки.
 
   m_wndToolBar.SetButtonStyle(m_wndToolBar.CommandToIndex(ID_CBBUTTON), dwStyle);
 
   return 0;
 
 }

Смысл кода более-менее понятен из комментариев. Обратите внимание, что в коде мы пишем идентификатор нашей добавленной кнопки - ID_CBBUTTON. Ведь именно ее мы хотим превратить в кнопку со списком.

Откомпилируйте теперь проект. У вас последняя кнопка получилось с правой частью с треугольничком, на котором по идее можно щелкать. Правда, кнопка пока серая:

Серая кнопка со списком.

То, что кнопка серая - понятно: обработчика для нее пока нет. Добавим обработчик мы на следующем уроке.



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

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




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



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


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