有BitMap之Menu

在Window API中,有一些名词要先清楚,假设有一功能表如下:

档案  编辑 选项 --> hMenu  (功能表)

+-------+

|复制  |---------> hSubMenu (子功能表)

|贴上  |

|减下 -------------> MenuID  (功能表项目)

|    |

+-------+

如果,我们使用vb的功能表编辑器做出上面的Menu,那 hMenu的取得使用GetMenu() API,而hSubMenu 的取得是 GetSubMenu,而GetSubMenu()的第二个叁数指的是功能表的第几个子功能表,以上例来说,编辑子功能表是第1个子功能表(以0为基准),所以编辑子功能表的取得应用以下的呼叫 :

hMenu = GetMenu(Me.hwnd)

hSubMenu = GetSubMenu(hMenu, 1) '取得编辑子功能表的hSubMenu

而功能表项目则由以下的呼叫取得,第二叁数指的是该子功能表的第几个项目(以0开始),故复制 功能表项目 = 0 减下 = 2

MenuId = GetMenuItemID(hSubMenu, 0) '取得复制 的hMenuId接着便是以ModifyMenu来更动MenuId成BitMap的方式Set Pic1 = LoadPicture("E:\cli.bmp")ModifyMenu hSubMenu, 0, MF_BITMAP Or MF_BYPOSITION, MenuId, pic1.HandleModifyMenu 第二个叁数 表示更动hSubMenu所指的子功能表中第几个功能表项目

第三个叁数 MF_BITMAP 表示用BitMap的方式显示

MF_STRING 表示用字串方式显示

MF_BYPOSITION 表示第二个叁数的值代表是依位置来算

第四个叁数 MenuId

第五个叁数 显示图的hBitMap

另外,如何做到MenuItem的左方有一小Bitmap,右方仍是字串呢,使用以下的API

SetMenuItemBitmaps(
  hSubMenu as Long ,   // handle of 子功能表
  uItem  as Long ,   // 更动第几个Menu Item
  fuFlags as Long,   // menu item flags
  hbmUnchecked as Long, // handle of unchecked bitmap
  hbmChecked as Long   // handle of checked bitmap
  )
Set Pic2 = LoadPicture("e:\cli2.BitMap")
Call SetMenuItemBitmaps(hSubMenu, 1, MF_BYPOSITION,pic2.Handle, Pic2.Handle)

这里有一个地方要特别注意,到底hbmUnchecked/hbmchecked 所指的BitMap图有多大呢,

如果pic2所放入的BitMap太大,那不会出现我们想要的图,那得自己想办法缩图;而使

用以下的API可以取得Menu Item左边Bitmap图的大小(By Pixels)

i = GetMenuCheckMarkDimensions

wd5 = i Mod 2 ^ 16 '宽

hi5 = i / 2 ^ 16  '高

而我们Load进来的图之宽 Me.ScaleX(pic2.Width, vbHimetric, vbPixels)

高 Me.ScaleY(pic2.Height, vbHimetric, vbPixels)

时间: 2024-10-29 08:29:37

有BitMap之Menu的相关文章

[Android] 通过Menu实现图片怀旧、浮雕、模糊、光照和素描效果

    由于随手拍项目想做成类似于美图秀秀那种底部有一排Menu实现不同效果的功能,这里先简单介绍如何通过Menu实现打开相册中的图片.怀旧效果.浮雕效果.光照效果和素描效果.后面可能会讲述如何通过PopupWindow实现自定义的Menu效果.     希望文章对大家有所帮助,如果有错误或不足之处请海涵~ 一. Menu效果展示    Android手机上有个Menu按键,点击他会弹出一个菜单,通常在屏幕底部或右上角,在选项菜单OptionsMenu中最多显示2排每排3个菜单项,可以包含自定义

android-使用 Bitmap 时,图片不能显示

问题描述 使用 Bitmap 时,图片不能显示 请大家帮我看看下面的代码,为什么图像不能在list中显示,然而空间和图像的其他描述却能看得见. public class Test extends ListActivity { Prefs myprefs = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.la

Android学习教程之圆形Menu菜单制作方法(1)_Android

本文实例为大家分享了Android圆形菜单的使用方法,供大家参考,具体内容如下 MainActivity.java代码: package siso.handlerdemo; import android.app.NotificationManager; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.vi

<转>Bitmap Buttons

转自 http://www.functionx.com/visualc/controls/bmpbtn.htm   A bitmap button is a button that display a picture or a picture and text on its face. This is usually used the button a little explicit. There are two ways you can create a bitmap button: with

Android学习教程之圆形Menu菜单制作方法(1)

本文实例为大家分享了Android圆形菜单的使用方法,供大家参考,具体内容如下 MainActivity.java代码: package siso.handlerdemo; import android.app.NotificationManager; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.vi

menu.addIntentOptions 添加动态菜单

 android的一个activity可以再选中某项之后按menu键弹出特定的菜单,也就是动态菜单.动态菜单的实现是靠menu类中的addIntentOptions函数实现的,具体的声明如下: int android.view.Menu.addIntentOptions(             int groupId,             int itemId,             int order,             ComponentName caller,        

在非UI线程处理Bitmap

http://my.oschina.net/ryanhoo/blog/88344 译者:Ryan Hoo 来源:https://developer.android.com/develop/index.html 译者按: 在Google最新的文档中,提供了一系列含金量相当高的教程.因为种种原因而鲜为人知,真是可惜!Ryan将会细心整理,将之翻译成中文,希望对开发者有所帮助.         本系列是Google关于展示大Bitmap(位图)的官方演示,可以有效的解决内存限制,更加有效的加载并显示图

android- java.lang.IllegalArgumentException: x 一定要小于 bitmap.width()

问题描述 java.lang.IllegalArgumentException: x 一定要小于 bitmap.width() 获取屏幕截图,用裁剪图片创建位图的时候出现了错误, 先看看我的代码吧: View v1 = mKittyBGLayer.getRootView(); v1.setDrawingCacheEnabled(true); Bitmap source = v1.getDrawingCache(); int width = source.getWidth(); int heigh

TrueType和Bitmap字体的区别

只要标签的文本从不变化,在cocos2D中渲染TrueType和bitmap字体的性能是相同的.它们都仅仅像精灵那样绘制. 如果你希望大量的标签使用相同字体,则bitmap字体将更快.因为bitmap字体可以从相同的纹理中绘制所有的象形符号,然而TrueType字体为每个标签使用不同的纹理. 它们对内存的使用量需求也不同:对于少量标签,TrueType字体可能请求少量的内存,但是每添加额外的TrueType字体标签将比额外添加bitmap字体标签蚕食显著更多的内存. 同样,如果TrueType字