Visual Basic 6. Руководство разработчика



         

Динамическое изменение элементов меню


В процессе работы программы можно изменить элементы меню. Эти возмож­ности показаны на примере программы MenuMod (созданной на основе программы MenuBMP).

VB6 в действии: проект MenuMod

Приложение MenuMod позволяет организовать переключение отображения элементов меню либо в виде растрового изображения, либо в виде текста. Меню приложения MenuMod соответствует меню приложения MenuBMP, но, кроме того, добавлен третий пункт Display Graphics (вывести изображение, если элемент меню содержит текст) или Display Text (вывести текст, если элемент меню содержит графику). Обработчик события Click этого пункта меню вызывает функцию DisplayTextMenu()

или DisplayBitmap Мепи(), что позволяет переключаться из одного режима в другой. В процедуре ModifyMenu() для организации замены графики на текст в элементе меню следует использовать флаг MF_STRING, а для обратной замены — флаг MF_BITMAP.

Программа 13.6. Приложение MenuMod

Option Explicit

Private Declare Function GetMenu Lib "user32" _

(ByVal hwnd As Long) As Long

Private    Declare Function GetSubMenu Lib "user32" _

           (ByVal hMenu As Long, ByVal nPos As Long) As Long

Private    Declare Function GetMenuItemID Lib "user32" _

(ByVal hMenu As Long, ByVal nPos As Long) As Long

Private Declare Function ModifyMenu Lib "user32" _

Alias "ModifyMenuA" (ByVal hMenu As Long,

ByVal nPosition As Long, ByVal wFlags As Long, _

ByVal wIDNewItem As Long, ByVal IpString As Any) As Long

Private Declare Function CreateCompatibleDC Lib "gdi32" _

(ByVal hdc As Long) As Long

Private Declare Function CreateCompatibleBitmap Lib "gdi32"_

(ByVal hdc As Long, ByVal nWidth As Long,_

ByVal nHeight As Long) As Long

Private Declare Function Select0b]ect Lib "gdi32"_

(ByVal hdc As Long, ByVal hObject As Long) As Long

Private Declare Function BitBIt Lib "gdi32" _

(ByVal hDestDC As Long, ByVal x As Long, ByVal у As Long, _

ByVal nWidth As Long, ByVal nHeight As Long, _




Содержание  Назад  Вперед