国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

VB中實現菜單分割

2019-11-18 17:32:53
字體:
來源:轉載
供稿:網友
當一個菜單下子菜單項較多時,一打開菜單就出現了長長的菜單項,如果其他的菜單項下子菜單較少,就顯得很不協調。現在的一些軟件還允許用戶在已有的菜單中添加菜單項,這都會造成子菜單項過多的情況,如果能像某些軟件那樣將較多的子菜單項分成兩列顯示就顯得美觀多了。在VB中要實現這一功能還是比較方便的,下面舉例說明。

實現菜單分割這一功能需要使用API函數,思路是:首先獲得菜單句柄,從而可得到其子菜單項數,然后將子菜單項數除以2,若子菜單項數為奇數,則將多余的一項劃到第一部分,然后利用API函數SetMenuItemInfo重新設定菜單顯示形式即可。

下面是一個例子。首先用菜單生成器制做一個包括9個子菜單項的菜單,然后,在總體聲明部分聲明用到的API函數和常數,這些可以從API說明文件中復制。

OptionExplicit

′菜單信息結構說明

PRivateTypeMENUITEMINFO

cbSizeAsLong

fMaskAsLong

fTypeAsLong

fStateAsLong

wIDAsLong

hSubMenuAsLong

hbmpCheckedAsLong

hbmpUncheckedAsLong

dwItemDataAsLong

dwTypeDataAsString

cchAsLong

EndType

′所需的API函數和常數

PrivateDeclareFunctionGetMenuLib″user32″-

(ByValhwndAsLong)AsLong

PrivateDeclareFunctionGetMenuItemCountLib″user32″-

(ByValhMenuAsLong)AsLong

PrivateDeclareFunctionGetSubMenuLib″user32″-

(ByValhMenuAsLong,ByValnPosAsLong)AsLong

PrivateDeclareFunctionGetMenuItemInfoLib″user32″-

Alias″GetMenuItemInfoA″(ByValhMenuAsLong,ByValunAsLong,-

ByValbAsBoolean,lpmiiAsMENUITEMINFO)AsLong

PrivateDeclareFunctionSetMenuItemInfoLib″user32″-

Alias″SetMenuItemInfoA″(ByValhMenuAsLong,ByValuItemAsLong,-

ByValfByPositionAsLong,lpmiiAsMENUITEMINFO)AsLong

ConstMIIM—TYPE=&H10

ConstRGB—STARTNEWCOLUMNWITHVERTBAR=&H20&

ConstMFT—STRING=&H0&

在窗體中添加一個命令按鈕,Caption=“分割菜單”,雙擊寫如下代碼:

PrivateSubCommand1—Click()

DimrvAsLong

DimhSubMenuAsLong

DimmnuItemCountAsLong

DimmInfoAsMENUITEMINFO

DimpadAsLong

′獲取菜單項句柄和子菜單項數

hSubMenu=GetSubMenu(GetMenu(Me.hwnd),0)

mnuItemCount=GetMenuItemCount(hSubMenu)

′將子菜單項分成兩部分

IfmnuItemCountMod2<>0Thenpad=1

′取得當前菜單信息

mInfo.cbSize=Len(mInfo)

mInfo.fMask=MIIM—TYPE

mInfo.fType=MFT—STRING

mInfo.dwTypeData=Space$(256)

mInfo.cch=Len(mInfo.dwTypeData)

rv=GetMenuItemInfo(hSubMenu,(mnuItemCount/2)+pad,True,mInfo)

′按新格式顯示菜單

mInfo.fType=RGB—STARTNEWCOLUMNWITHVERTBAR

mInfo.fMask=MIIM—TYPE

rv=SetMenuItemInfo(hSubMenu,(mnuItemCount/2)+pad,True,mInfo)

IfrvThenMsgBox″分割完畢″

EndSub

運行后按命令按鈕,將發現子菜單項分成了兩部分,左邊五項,右邊四項。

程序運行環境:中文WIN95,VB5.0。->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安义县| 孝义市| 南江县| 景泰县| 鄂尔多斯市| 江山市| 广水市| 新平| 吕梁市| 泰州市| 阿勒泰市| 洮南市| 涟水县| 姜堰市| 济阳县| 桦川县| 普兰店市| 新余市| 永靖县| 博爱县| 青海省| 五莲县| 定西市| 龙海市| 忻城县| 陇南市| 成都市| 旺苍县| 龙州县| 三门县| 仙游县| 湘阴县| 鄢陵县| 疏附县| 临安市| 桑日县| 福海县| 台北县| 华容县| 山东| 南开区|