本文详细介绍用VB创建位图菜单
在通常的程序中,菜单总是以文本方式存在,显得非常单调乏味。 如果能够在菜单中加入位图图形,将会极大地增加用户的使用兴趣。 本文介绍如何使用位图制作菜单选项。
创建位图菜单
创建位图菜单其实非常简单,需要用到Windows应用程序编程接口 (API)的一些菜单函数和位图函数,将这些函数的声明包含在应用程序 的标准模块中,具体的内容请参见样例程序。步骤如下:
1.使用函数GetSubMenu来提取子菜单项的句柄,并通过使用函数C reateCompatibleD C来创建一个兼容的设备环境描述表;
2.在一个循环过程中通过使用CreateCompatibleBitmap函数、Se lectObject函数以及BitBlt函数来分别将各个菜单项所载入的位图选 入到兼容设备环境中;
3.通过ModifyMenu函数绘制真正的位图菜单选项;
4.使用DeleteDC函数来释放设备环境,以便其他的程序可以使用 它们。
提取位图可以有多种方法,在本样例程序中在窗体上设置了四个 图形框控件,使用它们载入4个预设的图标来作为菜单选项位图的源文 件。当然也可以使用其他的方法,例如使用LoadPicture函数来从磁盘 装载位图。
样例程序
1. 在Visual Basic中开始一个新项目工程(project),用缺省的 方法建立Form1。
2. 创建一个新的模块,采用缺省的方法建立Module1.Bas。
3. 将如下声明语句和常量添加到Module1.Bas模块中:
Option Explicit
Declare Function GetMenu Lib "user32" (ByVal hwnd As Lon g) As Long
Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPo s As Long) As Long
Declare Function GetMenuItemID Lib "user32" (ByVal hMenu As Long, ByValn Pos As Long) As Long
Declare Function ModifyMenu Lib "user32" Alias "ModifyMe nuA" (ByVal hMen u As Long, ByVal nPosition As Long, ByVal w Flags As Long, ByVal wIDNewItemAs Long, ByVal lpString As An y) As Long
Declare Function CreateCompatibleDC Lib "gdi32" (ByVal h dc As Long) AsLo ng
Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long ) As Long
Declare Function CreateCompatibleBitmap Lib "gdi32" (ByV al hdc As Long,B yVal nWidth As Long, ByVal nHeight As Long) As Long
Declare Function S ctObject Lib "gdi32"(ByVal hdc As L ong, ByVal hObje ct As Long) As Long
Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Lo ng, ByVal x AsLo ng, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrc DC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) AsL ong
Public Const SRCCOPY = &HCC0020
Public Const MF_BYPOSITION = &H400&
Public Const MF_BITMAP = &H4&
责编:豆豆技术应用