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

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




Меню с вертикальной картинкой


Автор: Dipti Alone.

пример меню

Возможности

  • Пример позволяет показать вертикальную картинку в левой части меню, наподобие стартового меню в Windows.
  • Также в меню могут быть помещены дочерние элементы управления.

Использование:

Чтобы использовать класс CBmpMenu, Вам необходимо использовать стандартные функции включённые в CMenu для отображения всплывающего меню. Вам нужно создать экземпляр CBmpMenu вместо CMenu и затем использовать LoadMenu или CreatePopupMenu сопровождаемые TrackPopupMenu.

Вам необходимо создать обработчики вертикальной картинки в конструкторе.


CBmpMenu(int nBitmapW=0, 
 BOOL bShowBmp4SubMenu=FALSE, 
 HBITMAP hBitmap=0, 
 BOOL StretchBmp=TRUE);

Разборка аргументов

  • nBitmapW - Ширина пустой области, которая будет выделена с лева для отображения вертикальной картинки в меню.
  • bShowBmp4SubMenu - Если TRUE, то чистая область будет показана для всех подменю. Если FALSE, тогда чистая область будет показана только в основном меню.
  • hBitmap - Если создан обработчик, то этот битмап будет показан на месте пустой области
  • bStretchBmp - Если TRUE, тогда битмап рисуется используя StretchBlt. Если False, тогда пустая область заполняется кистью, созданной из битмапа.

Если Вы хотите разместить дочерние элементы управления в меню, то это необходимо сделать в обработчике WM_ENTERMENULOOP.

Параметры для WM_ENTERMENULOOP изменяются в классе CbmpMenu.


WM_ENTERMENULOOP:

// обработчик меню, который вводит модальный цикл
wParam = (HMENU)hMenu;  

//обработчик меню(окно меню типа CBmpMenu)
lParam = (HEND)hWindow; 

Используйте hWindow как родительское окно, и тогда Вы сможете создавать и помещать в меню дочерние элементы управления.

Downloads

Скачать демонстрашку - 40 Kb
Скачать исходник - 14 Kb