15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Кнопка с выпадающим меню

Автор: Norm Almond

Описание

Пример показывает использование красивого эффекта, применяемого в Office 2000. Исходник построен на базе классов MFC. Класс кнопки наследуется от CButton, и, соответственно, сохраняет в себе все свойства родительского класса.

В классе находятся три ключевые функции: создания кнопки, добавления битмап картинки и добавления к кнопке выпадающего меню

BOOL Create( LPCTSTR lpszCaption, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );
BOOL SetButtonImage(UINT nResourceId, COLORREF crMask);
BOOL AddMenuItem(UINT nMenuId,const CString strMenu, UINT nFlags);

Картинку можно добавить в проект как обычный ресурс (обычно для кнопок используют размер 16х15 пикселей, маска RGB(255,0,255) (Magenta))

Из примера видно, что кнопка конструируется в функции
OnInitDialog диалога. В классе добавлены такие функции как RemoveMenuItem и ModifyMenuItem позволяющие на ходу удалять и модифицировать пункты выпадающего меню, а так же можно модифицировать функцию SetButtonImage, чтобы можно было изменять картинку на кнопке.