国产探花免费观看_亚洲丰满少妇自慰呻吟_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。->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 洛扎县| 邵阳市| 涿州市| 锦州市| 军事| 永昌县| 汉沽区| 江陵县| 台湾省| 读书| 阜平县| 布拖县| 德州市| 扎兰屯市| 柳林县| 河东区| 定安县| 沛县| 九江市| 天台县| 宜兰县| 公主岭市| 九龙城区| 福清市| 延长县| 保德县| 开平市| 论坛| 宝山区| 丰顺县| 宜昌市| 宜城市| 通许县| 北海市| 米易县| 罗江县| 安新县| 恩平市| 台湾省| 盐亭县| 马边|