位图菜单的制作

原创 2004年05月29日 15:52:00

*******************************************************
实用环境:pb6.5/pb70/pb80/pb90
功    能:位图菜单的制作
方    法:如下
*******************************************************
第一步,首先要建立一个menu对象,命名为:m_bitmap。设计格式有
一个主菜单 File,下面有4个子菜单new/open/save/exit,如下:
 ----File-----
  -new
  -open
  -save
  -exit
第二步,找4个位图文件,放到exe所在的目录下,命名为:new.bmp/open.bmp/save.bmp/exit.bmp
第三步,编代码
主窗体w_main,窗体类型main,加入主菜单m_menu。
实例变量声明:
//Win32常量
CONSTANT Integer IMAGE_BITMAP    = 0
CONSTANT Integer LR_LOADFROMFILE = 16
CONSTANT Integer SM_CXMENUCHECK  = 71
CONSTANT Integer SM_CYMENUCHECK = 72
CONSTANT Integer MF_BITMAP = 4
CONSTANT Integer MF_BYPOSITION = 1024
全局外部函数引入API:
FUNCTION ulong LoadImageA(ulong hintance, string filename,uint utype,&
    int x,int y,uint fload)  LIBRARY "USER32.DLL"
FUNCTION boolean SetMenuItemBitmaps(ulong hmenu,uint upos,uint flags,&
    ulong handle_bm1,ulong handle_bm2)  LIBRARY "USER32.DLL"
FUNCTION int GetSystemMetrics(  int nIndex ) LIBRARY "USER32.DLL"
FUNCTION ulong GetMenuItemID(ulong hMenu,uint uItem) LIBRARY "USER32.DLL"
FUNCTION int GetSubMenu(ulong hMenu,int pos) LIBRARY "USER32.DLL"
FUNCTION ulong GetMenu(ulong hWindow) LIBRARY "USER32.DLL"
FUNCTION boolean ModifyMenu(ulong  hMnu, ulong uPosition, ulong uFlags, &
    ulong uIDNewItem, long lpNewI) alias for ModifyMenuA LIBRARY "USER32.DLL"

open事件中:
long  ll_MainHandle
long  ll_SubMenuHandle
integer li_MenuItemID
long  ll_X
long  ll_Y
long  ll_BitmapNew
long  ll_BitmapOpen
long  ll_BitmapSave
long  ll_BitmapExit

//取得菜单句柄
ll_MainHandle = GetMenu(Handle(this))

//取得第一个菜单项的句柄
ll_SubMenuHandle = GetSubMenu(ll_MainHandle,0)

//装入图像数据
ll_BitmapNew = LoadImageA(0,'new.bmp',IMAGE_BITMAP,0,0,LR_LOADFROMFILE)
ll_BitmapOpen = LoadImageA(0,'open.bmp',IMAGE_BITMAP,0,0,LR_LOADFROMFILE)

//取得第一个子菜单项的ID并修改菜单
li_MenuItemID = GetMenuItemID(ll_SubMenuHandle,0)
ModifyMenu(ll_SubMenuHandle,li_MenuItemID,MF_BITMAP,li_MenuItemId,ll_BitmapNew)

//取得第二个子菜单项的ID并修改菜单
li_MenuItemID = GetMenuItemID(ll_SubMenuHandle,1)
ModifyMenu(ll_SubMenuHandle,li_MenuItemID,MF_BITMAP,li_MenuItemId,ll_BitmapOpen)


//取得菜单缺省check-mark位图的尺寸
ll_x = GetSystemMetrics(SM_CXMENUCHECK)
ll_y = GetSystemMetrics(SM_CYMENUCHECK)
//按系统尺寸装入图像
ll_BitmapSave = LoadImageA(0,'save.bmp',  IMAGE_BITMAP ,ll_x,ll_y,LR_LOADFROMFILE)
ll_BitmapExit = LoadImageA(0,'exit.bmp',  IMAGE_BITMAP ,ll_x,ll_y,LR_LOADFROMFILE)
//设置菜单位图
SetMenuItemBitmaps(ll_SubMenuHandle,2,MF_BYPOSITION,ll_BitmapSave,ll_BitmapSave)
SetMenuItemBitmaps(ll_SubMenuHandle,3,MF_BYPOSITION,ll_BitmapExit,ll_BitmapExit)

感兴趣的,还不快试试。

BMFont位图制作工具的使用

在游戏中常常会使用艺术字体,所以这个时候我们就需要BMFont制作字体了,BMFont自身内置了很多字体,如果没有自己喜欢的字体,那么可以下载ttf后导入,好了,今天要讨论的是如果使用美术资源生成美术...
  • mitu405687908
  • mitu405687908
  • 2016年04月08日 12:17
  • 3948

三、MFC中给子菜单添加位图,并添加响应函数

首先建立一个子菜单,修改菜单的ID号:ID_MENU 其次,在导入位图资源,修改位图资源ID号IDM_BITMAP 最后再cmainframe类里添加CBitMap类型变量,保存位图资源 最后就...
  • jiangyingfeng
  • jiangyingfeng
  • 2015年11月05日 20:57
  • 1056

【MFC】位图操作

SDK方法  /************************************************************************A:首先载入位图 1:通过资源载入Lo...
  • cmdhack
  • cmdhack
  • 2010年04月19日 16:33
  • 948

如何制作简易菜单?

实现一个菜单组件包括下拉菜单和弹出菜单,实现框图如下:      创建下拉菜单的基本过程:    1).新建一个JFrame框架.JFrame frame=new JFrame();    2).新...
  • qq_34328833
  • qq_34328833
  • 2016年11月22日 18:27
  • 688

Unity中位图字体Font的制作

第一步我就不细说了: 就是用BMFont或是GlyphDesigner制作.fnt和.png文件,网上教程很多,你就问度娘吧。 我用的是GlyphDesigner: 你可以把fnt文件...
  • liujunjie612
  • liujunjie612
  • 2015年05月13日 16:22
  • 2206

【PB】带位图的菜单项实现

当读者在使用 Microsoft Word 97 时,是否曾注意到 Word 的部分菜单项旁有一个小巧的图标 (如图1所示),初次见到时,是否有耳目一新的感觉,是否想过让 PowerBuilder 创...
  • keyssoft
  • keyssoft
  • 2007年01月11日 23:55
  • 1530

1.1图像基础知识-位图与矢量图

位图:也称点阵图,它有许多点组成的,这些点称为像素。当许多不同颜色的点组合在一起后,便构成了一副完整的图像。 像素是组成图像的最小单位,而图像又是以行和列的方式排列的像素组合而成的,像素越高,文件就...
  • taoge1024
  • taoge1024
  • 2017年03月29日 13:33
  • 221

免费的位图字体制作工具Bitmap Font Generator使用教程

转载请保留原地址 http://www.cocos2dres.com/post/87.html 谢谢!!   首先 下载安装windows下免费的位图字体制作工具Bitmap Font Gen...
  • windeer
  • windeer
  • 2013年04月09日 11:56
  • 1562

win32编成入门-位图

由于我需要做个显示二值化摄像头图像的上位机程序,因此用到了VC++中的位图,下面是这样使用的: static BITMAP bitmap={0,24,8,4,1,1};  //定义位图,这个BITM...
  • Calcular
  • Calcular
  • 2015年07月25日 13:20
  • 921

CSS制作简单的纵向菜单

用CSS制作简单的纵向菜单
  • Jolly_1127
  • Jolly_1127
  • 2015年12月07日 16:35
  • 973
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:位图菜单的制作
举报原因:
原因补充:

(最多只允许输入30个字)