国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

當前位置:雨林木風下載站 > 技術(shù)開發(fā)教程 > 詳細頁面

順序?qū)R菜單完成辦法

順序?qū)R菜單完成辦法

更新時間:2022-05-06 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

作者:丁健 張萬軍 江南

右順序?qū)R菜單就是菜單在菜單條的最右側(cè)對齊,往左排列。平時,我們能看到很多右順序?qū)R菜單的例子,如“WPS2000集成辦公系統(tǒng)”有文件打開時的“定制界面”菜單、Origin2.5的“Help”菜單等。將右順序?qū)R菜單應(yīng)用于應(yīng)用程序中,可以打破常規(guī)菜單左順序?qū)R的顯示方式,給人耳目一新的感覺;另外,我們可以將一些需要實時更新的消息、提示等顯示在右順序?qū)R菜單中,醒目突出,既符合人體肉眼查詢信息的習慣,又可避免占用窗體或狀態(tài)欄空間。因此,右順序?qū)R菜單具有一定的實用性。
Visual C++環(huán)境下的實現(xiàn)方法
Visual C++的編程環(huán)境支持可視化的菜單設(shè)計,在設(shè)計菜單時可直接將菜單指定為“右順序?qū)R菜單”。具體方法是:選定菜單后雙擊或在右鍵菜單中選“屬性”,打開菜單屬性對話框,選“Extended Styles”標簽,在“Extended Styles”標簽板上只有“右-左順序?qū)R”項,選擇“右-左順序?qū)R”項即可。注意,上述指定只對菜單條上的菜單有效,對子菜單項也可指定但運行時沒有效果。圖1為經(jīng)過Visual C++編譯后的右順序?qū)R菜單應(yīng)用程序運行時的顯示效果。

圖1 VC環(huán)境下右順序?qū)R菜單應(yīng)用程序
Visual Basic環(huán)境下的實現(xiàn)方法
Visual Basic環(huán)境不支持直接指定、創(chuàng)建右順序?qū)R菜單,必須通過編程實現(xiàn)。根據(jù)MSDN對菜單信息數(shù)據(jù)結(jié)構(gòu)、相關(guān)API函數(shù)的解釋,可概括出實現(xiàn)這項功能的四個步驟或稱具體程序流程:  
1.定義菜單信息數(shù)據(jù)結(jié)構(gòu)MenuItemInfo全局對象;
2.用GetMenuItemInfo API函數(shù)取得指定的菜單信息,并將信息存放于定義的MenuItemInfo對象內(nèi);
3.將定義的MenuItemInfo全局對象的fType部分設(shè)為MFT_RIGHTJUSTIFY(設(shè)置右順序?qū)R菜單的關(guān)鍵參數(shù));
4. 用SetMenuItemInfo API函數(shù)重新設(shè)置菜單。
MenuItemInfo的定義
MenuItemInfo存放菜單特征信息如: 類型、狀態(tài)、標識號、句柄指針值等,這些特征信息決定了菜單的標題內(nèi)容、排列順序、響應(yīng)方式等等。適當改變其中某些信息即可實現(xiàn)菜單右順序?qū)R。
MenuItemInfo的定義如下:
typedef struct tagMENUITEMINFO {
UINT cbSize;
UINT fMask;
UINT fType;
UINT fState;
UINT wID;
HMENU hSubMenu;
HBITMAP hbmpChecked;
HBITMAP hbmpUnchecked;
DWORD dwItemData;
LPTSTR dwTypeData;
UINT cch;
} MENUITEMINFO,F(xiàn)AR *
LPMENUITEMINFO。
MenuItemInfo結(jié)構(gòu)中與右順序?qū)R菜單實現(xiàn)密切相關(guān)的是fType參數(shù),fType存放菜單項的類型參數(shù),它可以是預定義值中的一個或幾個。
其中的MFT_RIGHTJUSTIFY常數(shù)可將本菜單項及其隨后的菜單調(diào)整到菜單條的右側(cè)排列。
API函數(shù)GetMenuItemInfo、SetMenuItemInfo簡介
GetMenuItemInfo函數(shù)簡介:
函數(shù)功能:取得一個菜單項的信息。
函數(shù)原型:BOOL GetMenuItemInfo(HMENU hMenu, UINT uItem, BOOL fByPosition, LPMENUITEMINFO Ipmii)。
參數(shù):
hMenu:包含指定菜單項的菜單的句柄。
uItem: 將要取得其信息的菜單項的標識符或位置,此參數(shù)的含義取決于參數(shù)fByPosition的值。
fByPosition: 此值用于指定參數(shù)uItem的含義,如果此參數(shù)是FALSE,則uItem表示菜單項的標識符; 否則,表示菜單項的位置。
Ipmii:指向結(jié)構(gòu)MenuItemInfo的指針,該結(jié)構(gòu)指定要取得的信息并接收菜單項的信息。
返回值:如果函數(shù)調(diào)用成功,返回非零值;如果函數(shù)調(diào)用失敗,返回值是零。
調(diào)用注意點:Windows CE環(huán)境下,由參數(shù)Ipmii指向的MenuItemInfo結(jié)構(gòu)中的fMask不能取MIM_CHECKMARKS。
SetMenuItemInfo函數(shù)簡介:
函數(shù)功能:該函數(shù)改動一個菜單項的信息。
函數(shù)原型:BOOL SetMenuItemInfo(HMENU hMenu, UINT uItem, BOOL fByPosition, LPMENUITEMINFO Ipmii)。
參數(shù):
hMenu: 包含菜單項的菜單的句柄。
uItem: 將被修改的菜單項的標識或位置,此參數(shù)的含義由參數(shù)fByPosition確定。
fByPosition: 此值用于指定uItem的含義。如果此參數(shù)值為FALSE,則參數(shù)uItem是菜單項的標識;否則,表示菜單項的位置。
Ipmii:指向結(jié)構(gòu)MenuItemInfo的指針,該結(jié)構(gòu)含有菜單項的信息,并且指定將被修改的菜單項的屬性。
返回值:如果函數(shù)調(diào)用成功,返回非零值;如果函數(shù)調(diào)用失敗,返回值是零。
調(diào)用注意點:為了使鍵盤加速鍵能控制位圖或自己繪制的菜單項,菜單的擁有者必須處理WM_MENUCHAR消息。Windows CE環(huán)境下,只有下列值對參數(shù)Ipmii指向的MenuItemInfo結(jié)構(gòu)中的fMask成員有效:MIIM_DATA、MIIM_ID和MIIM_TYPE 。如果MIIM_TYPE被指定,結(jié)構(gòu)MenuItemInfo的fType成員必須為菜單項的當前類型,也就是說,該類型不能被改變。
Visual Basic環(huán)境下的源代碼(以實現(xiàn)圖2所示菜單為例):  
’數(shù)據(jù)結(jié)構(gòu)聲明
Public Type menuItemInfo  
cbSize As Long
fMask As Long
fType As Long
……
End Type
’API函數(shù)聲明
Public Declare Function SetMenuItemInfo Lib “user32” Alias “SetMenuItemInfoA” (ByVal hMenu As Long, ByVal un As Long, ByVal bool As Boolean, lpcMenuItemInfo As menuItemInfo) As Long
Public Declare Function GetMenuItemInfo Lib “user32” Alias “GetMenuItemInfoA” (ByVal hMenu As Long, ByVal un As Long, ByVal b As Long, lpMenuItemInfo As menuItemInfo) As Long
Public Declare Function DrawMenuBar Lib “user32” (ByVal hwnd As Long) As Long
Public Declare Function GetMenu Lib “user32” (ByVal hwnd As Long) As Long
’在窗體載入過程(也可放在其他過程)中對菜單設(shè)置進行更改
Private Sub Form_Load()
Dim my_menuItemInfo As menuItemInfo
Dim return_value As Long
my_menuItemInfo.cbSize = 44
my_menuItemInfo.fMask = 16  
’MIIM_TYPE
my_menuItemInfo.cch = 128
my_menuItemInfo.dwTypeData
= Space$(128)  
return_value = GetMenuItemInfo(GetMenu(Me.hwnd), 2, 1, my_menuItemInfo)
my_menuItemInfo.fType = 16384  
’MFT_RIGHTJUSTIFY
return_value = SetMenuItemInfo(GetMenu(Me.hwnd),2, 1, my_menuItemInfo)  
DrawMenuBar GetMenu(Me.hwnd)
End Sub
圖2為Visual Basic環(huán)境下編譯的應(yīng)用程序右順序?qū)R菜單顯示效果。

圖2 Visual Basic編譯的右順序?qū)R菜單應(yīng)用程序
存在的問題
在程序運行過程中,我們常要對菜單標題進行更改,對用上述程序更改為右順序?qū)R后的菜單來說,由此帶來的一個問題是右順序?qū)R顯示效果失效,即已經(jīng)在最右側(cè)的菜單恢復到左側(cè)排列,其原因是菜單標題字符串所在內(nèi)存空間數(shù)據(jù)的更改。我們可以在Visual Basic程序中做實驗,在窗體鼠標單擊事件過程內(nèi)加入如下語句:
Private Sub Form_Click()
location.Caption = “改變”  
’目標位置菜單的名稱為location
End Sub
上述程序?qū)︼@示目標位置的菜單標題作了修改。運行該程序,用鼠標單擊窗體部分,結(jié)果如圖3所示。

圖3 失效的右順序?qū)R菜單
通過摸索,我們提出了一個變通解決方法:在欲將其調(diào)整到右側(cè)的菜單前面加一個空菜單,并在程序中對該空菜單進行右順序?qū)R編程。
仍以Visual Basic編譯環(huán)境下圖2所示應(yīng)用程序的菜單為例,先打開“菜單編輯器”,在“目標位置”菜單前插入一個標題字符為空、名稱為“void_menu”的空菜單,接著編譯該程序。運行時API函數(shù)SetMenuItemInfo將“void_menu”空菜單及其右側(cè)的所有菜單(“目標位置”菜單等)均調(diào)整到菜單條最右側(cè),因為“void_menu”空菜單的標題字符為空,所以該菜單不顯示,程序中接下來可以對“目標位置”菜單的標題字符內(nèi)容作任意修改、更新。圖4為對添加的空菜單進行右順序?qū)R編程后的顯示效果,用前面窗體中的單擊事件過程的代碼進行測試,可以發(fā)現(xiàn)標題更改為“改變”的location菜單仍顯示在右側(cè),完全達到目的。Visual C++編程環(huán)境中也可采用類似方法。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

  • <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        亚洲成a人v欧美综合天堂下载 | 亚洲免费观看视频| 欧美日韩高清不卡| 色悠久久久久综合欧美99| 国产91精品久久久久久久网曝门| 视频一区二区欧美| 亚洲一级电影视频| 一区二区三区欧美日| 亚洲欧美在线另类| 亚洲视频你懂的| 国产精品美女久久久久久久| 久久久www成人免费无遮挡大片 | 国产日韩欧美在线一区| 日韩午夜激情av| 日韩欧美视频一区| 精品国产第一区二区三区观看体验| 日韩一区二区三区视频| 欧美v亚洲v综合ⅴ国产v| 欧美tickle裸体挠脚心vk| 久久蜜桃香蕉精品一区二区三区| 2023国产精品视频| 国产欧美一区二区精品婷婷| 国产精品女同一区二区三区| 1024国产精品| 亚洲国产欧美在线人成| 蜜臀av亚洲一区中文字幕| 韩国精品主播一区二区在线观看| 国产永久精品大片wwwapp| 国产不卡高清在线观看视频| 99精品黄色片免费大全| 欧美日韩极品在线观看一区| 日韩精品一区二区三区视频播放 | 91在线观看下载| 色哟哟国产精品| 欧美久久久久久蜜桃| 51精品视频一区二区三区| 欧美大片在线观看一区二区| 欧美精品一区二区久久久| 成人免费在线视频| 视频一区欧美精品| 福利视频网站一区二区三区| 在线亚洲一区二区| 欧美成人video| 亚洲丝袜制服诱惑| 蜜臀精品一区二区三区在线观看| 国产成人在线免费| 欧美日韩国产一二三| 国产欧美日韩中文久久| 亚洲一区欧美一区| 国产精品亚洲成人| 欧美午夜不卡视频| 日本一区二区成人在线| 日韩高清中文字幕一区| 不卡在线视频中文字幕| 91精品蜜臀在线一区尤物| 国产精品乱人伦| 美女视频一区在线观看| 99精品在线免费| 精品国产伦理网| 亚洲一级不卡视频| 不卡视频一二三| 欧美mv和日韩mv的网站| 亚洲国产日韩综合久久精品| 成人免费观看男女羞羞视频| 欧美va亚洲va在线观看蝴蝶网| 亚洲欧洲av色图| 国产成人av网站| 精品区一区二区| 日本成人超碰在线观看| 色老汉一区二区三区| 国产日本一区二区| 精品亚洲aⅴ乱码一区二区三区| 欧美色图天堂网| 亚洲精品乱码久久久久久黑人| 国产高清精品久久久久| 日韩欧美一区中文| 视频精品一区二区| 欧美三级中文字| 亚洲乱码中文字幕综合| 成人教育av在线| 国产午夜三级一区二区三| 七七婷婷婷婷精品国产| 欧美日韩高清一区| 性久久久久久久久| 欧美网站大全在线观看| 一区二区在线观看视频在线观看| 91网址在线看| 亚洲色图制服丝袜| 色婷婷精品大在线视频| 亚洲免费av在线| 色系网站成人免费| 亚洲精品福利视频网站| 99精品国产热久久91蜜凸| 亚洲猫色日本管| 色94色欧美sute亚洲线路一ni | 91精品国产免费| 亚洲国产精品一区二区久久恐怖片| 一本到一区二区三区| 亚洲精品久久久蜜桃| 欧美日韩免费在线视频| 日日夜夜精品视频免费| 欧美电视剧在线看免费| 国产麻豆精品在线| 中文字幕高清不卡| 91丨porny丨首页| 亚洲一区二区在线观看视频 | 26uuu亚洲婷婷狠狠天堂| 激情六月婷婷久久| 国产人成亚洲第一网站在线播放| 成人免费高清视频| 一区二区高清免费观看影视大全| 欧美又粗又大又爽| 蜜臀久久99精品久久久久久9| 精品久久国产老人久久综合| 国产suv一区二区三区88区| 亚洲欧美在线视频观看| 欧美日韩亚洲不卡| 国内精品伊人久久久久影院对白| 国产欧美视频一区二区| 欧美中文字幕一区二区三区亚洲| 日本不卡视频在线| 中文字幕巨乱亚洲| 欧美福利一区二区| 成人动漫一区二区| 午夜av一区二区三区| 欧美经典一区二区| 欧美三级电影网| 国产成人综合视频| 亚洲v中文字幕| 欧美经典一区二区| 制服.丝袜.亚洲.另类.中文| 成人激情开心网| 美腿丝袜在线亚洲一区| 自拍偷拍亚洲激情| www国产亚洲精品久久麻豆| 欧洲激情一区二区| 国产精品一区二区黑丝| 夜色激情一区二区| 欧美经典三级视频一区二区三区| 91精品综合久久久久久| 9久草视频在线视频精品| 精品一区二区免费看| 亚洲国产综合在线| 欧美激情艳妇裸体舞| 久久综合久久鬼色| 中文字幕在线免费不卡| 国产成人在线观看| 久久精品男人天堂av| 免费精品视频最新在线| 欧美一区二区三区视频免费| 青青草成人在线观看| 欧美成人女星排名| 国产黄色精品网站| 亚洲欧美另类久久久精品2019| 三级亚洲高清视频| 精品理论电影在线| 欧美午夜一区二区三区免费大片| 成人av在线网站| 精品在线播放免费| 日本视频在线一区| 香蕉乱码成人久久天堂爱免费| 中文字幕av一区二区三区免费看| 欧美成人一区二区三区| 欧美一级夜夜爽| 欧美军同video69gay| 在线观看成人免费视频| 色视频一区二区| 91麻豆精品视频| 99国内精品久久| 色猫猫国产区一区二在线视频| 97久久精品人人做人人爽| 99这里都是精品| 成人网男人的天堂| 成人av中文字幕| 91片黄在线观看| 91久久精品国产91性色tv| 色素色在线综合| 欧美日韩国产另类一区| 欧美日韩精品二区第二页| 91麻豆精品国产91久久久久久久久 | 日韩美女天天操| 欧美mv和日韩mv的网站| 欧美精品一区二区精品网| 欧美精品一区二区三区在线 | 韩国欧美国产1区| 成人精品视频网站| 成人免费毛片aaaaa**| 91免费版在线看| 欧美老肥妇做.爰bbww| 日韩精品一区二区三区中文不卡 | 国产一区二区免费在线| 国产一区二区三区久久悠悠色av| 国产一区二区精品久久99| 成人综合在线网站| 在线欧美日韩精品| 欧美成人一区二区| 亚洲欧洲成人av每日更新| 天天操天天色综合| 国产在线精品国自产拍免费| 99精品国产视频|