在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

在系統菜單上添加自定義菜單項

在系統菜單上添加自定義菜單項

更新時間:2022-05-07 文章作者:未知 信息來源:網絡 閱讀次數:

作者:馬鞍山鋼鐵總公司職工大學 王加龍

---- 本文題目所說的系統菜單不是指應用程序系統的菜單,而是指當用戶用鼠標左鍵單擊應用程序窗體左上角的圖標時彈出的菜單。同樣,當用戶用鼠標右鍵單擊應用程序窗體的標題欄,或系統任務欄中的應用程序標題時,彈出的也是這個菜單。系統菜單與應用程序菜單不一樣,系統菜單不受應用程序控制,它是由Windows系統直接控制的。因此,在系統菜單上添加自定義菜單項,就顯得比較困難。以下便是本人利用VB實現在系統菜單上添加自定義菜單項的方法。

---- 首先需要知道一點是系統菜單的工作過程。當我們單擊系統菜單中某一項時,應用程序窗口會收到一條WM_SYSCOMMAND消息,該消息包含了系統菜單中所單擊那一項的標識符ID。此時,應用程序窗口的默認窗口函數會根據WM_SYSCOMMAND消息以及菜單標識符ID執行相應的操作,完成菜單命令。如果我們能攔截到達窗口的WM_SYSCOMMAND消息,并且識別出菜單的標識符ID,我們就能夠在系統菜單上添加自己的菜單項,并且執行指定的動作。下面的例子就是在系統菜單上添加一條分隔符和"關于…"菜單項。

---- 啟動Visual Basic,新建標準EXE工程,在工程中添加一標準模塊,名稱可以是默認的。在標準模塊的聲明部分加入下列代碼:

'菜單API函數聲明
Public Declare Function GetSystemMenu Lib "user32"
(ByVal hwnd As Long, ByVal bRevert As Long) As Long
Public Declare Function AppendMenu Lib "user32" Alias
"AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long,
ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long
'菜單API函數常數聲明
Public Const MF_BYCOMMAND = &H0&
Public Const MF_SEPARATOR = &H800&
Public Const MF_STRING = &H0&
'有關窗口函數的API函數聲明
Public Declare Function SetWindowLong Lib
"user32" Alias "SetWindowLongA" (ByVal hwnd
As Long, ByVal nIndex As Long, ByVal
dwNewLong As Long) As Long
Public Declare Function CallWindowProc Lib "user32"
Alias "CallWindowProcA" (ByVal lpPrevWndFunc
As Long, ByVal hwnd As Long, ByVal Msg As Long,
ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Function DefWindowProc Lib
"user32" Alias "DefWindowProcA" (ByVal
hwnd As Long, ByVal wMsg As Long,
ByVal wParam As Long, ByVal lParam As Long) As Long
'消息
Public Const GWL_WNDPROC = (-4)
Public Const WM_NCLBUTTONDOWN = &HA1
Public Const WM_NCRBUTTONDOWN = &HA4
Public Const WM_USER = &H400
Public Const WM_SYSCOMMAND = &H112
Public Const HTSYSMENU = 3
Public Const HTCAPTION = 2
'自定義菜單項的標識號偏移量
Public Const IDM_SEPARATOR = 1
Public Const IDM_MYABOUT = 2
'其他變量
Dim sHwnd As Long
Dim OldProc As Long

接著可向標準模塊添加下面兩個過程:
Public Sub AddMenu(frm As Form)
'置換窗口函數過程

sHwnd = frm.hwnd
OldProc = SetWindowLong(frm.hwnd,
GWL_WNDPROC, AddressOf AddCallBack)

End Sub

Public Sub Release()
'釋放自定義窗口函數過程

SetWindowLong sHwnd, GWL_WNDPROC, OldProc

End Sub

最后向標準模塊中添加一自定義窗口函數過程:
Public Function AddCallBack(ByVal hwnd As Long,
ByVal wMsg As Long, ByVal wParam As Long,
ByVal lParam As Long) As Long
Select Case wMsg
Case WM_SYSCOMMAND '系統消息
Select Case wParam '測試
Case WM_USER + IDM_MYABOUT '
"關于..."菜單項
'此處可加入用戶需要自己處理
"關于…"菜單項的代碼
MsgBox "單擊了添加的菜單條目", vbOKOnly
Case Else '其它菜單項交換系統處理
AddCallBack = DefWindowProc(hwnd,
wMsg, wParam, lParam)
End Select
Exit Function
Case Else
AddCallBack = CallWindowProc(OldProc,
hwnd, wMsg, wParam, lParam)
End Select

End Function
關閉標準模塊的代碼窗口,
打開窗體的代碼窗口,
在Form_Load()過程中加入下列代碼:
'加載自定義窗口過程
AddMenu Me
'獲得系統菜單的句柄
Dim hMenu As Long
hMenu = GetSystemMenu(Me.hwnd, 0)
'在系統菜單中添加自定義2條菜單項
AppendMenu hMenu, MF_SEPARATOR
Or MF_BYCOMMAND,
IDM_SEPARATOR, vbNullString
'分隔符
AppendMenu hMenu, MF_BYCOMMAND
Or MF_STRING,
WM_USER + IDM_MYABOUT, "關于..."
'
"關于…"菜單項
在Form_Unload過程中加入下列代碼:
Release '釋放自定義窗口過程

---- 到此,代碼的輸入工作完成,接下來的是進行測試。單擊啟動按鈕或按F5,啟動工程,用鼠標單擊窗體左上角的圖標彈出系統菜單,看看是否如愿。千萬要注意的一點是,在結束工程時,一定要用窗體右上角的關閉按鈕或者系統菜單中的關閉菜單項,否則的話,會造成Visual Basic系統崩潰,出現非法操作的錯誤,所以在測試工程前,最好對工程進行保存。
---- 以上程序在Windows95,Visual Basic6.0環境下調試通過。 

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

本類教程下載

系統下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 亚洲精品视频导航| 欧美专区第二页| 伊人五月天婷婷| 999精彩视频| 欧美日韩亚洲第一| 人妻有码中文字幕| 成年人网站大全| 三级在线视频观看| 中文字幕精品一区二区三区在线| 自拍偷拍21p| 午夜免费福利网站| 热久久最新地址| 青青青免费在线| 亚洲国产精品久久久久爰色欲| 欧美久久久久久久久久久久久| 黑森林福利视频导航| 999精彩视频| 黄色网络在线观看| 成人免费在线小视频| 国产日韩成人内射视频| 美女少妇一区二区| 中文字幕日韩精品无码内射| 日本a视频在线观看| 青青在线免费观看视频| 激情文学亚洲色图| 久久黄色片视频| 羞羞的视频在线| 黄色网在线视频| 91日韩视频在线观看| 一区二区三区四区久久| 精品无码国产一区二区三区av| 啊啊啊一区二区| 欧美性受xxxx黑人猛交88| 亚洲美免无码中文字幕在线| 在线观看的毛片| 男人天堂av片| 中国黄色片一级| 欧美日韩成人免费视频| 超碰在线资源站| 成熟老妇女视频| 欧美久久在线观看| 一级黄色高清视频| 成人精品小视频| 久久成人福利视频| 99中文字幕在线观看| 超碰在线播放91| 男人操女人免费软件| 六月婷婷激情网| 成人性生交视频免费观看| avav在线看| ww国产内射精品后入国产| 久久久国产精华液999999 | 国产精品无码免费专区午夜| 久久九九国产视频| 久久成人免费观看| 男人添女荫道口喷水视频| 亚洲一区二区福利视频| 50路60路老熟妇啪啪| 国产肉体ⅹxxx137大胆| 无码人妻精品一区二区三区99v| 欧美午夜性生活| 老头吃奶性行交视频| 干日本少妇首页| 免费日韩视频在线观看| 欧美a v在线播放| 成人在线免费在线观看| 六月婷婷在线视频| 成人免费观看cn| 日日鲁鲁鲁夜夜爽爽狠狠视频97 | 黄色特一级视频| 欧美一二三不卡| 人妻av中文系列| 欧美国产亚洲一区| 欧美日韩一区二区在线免费观看| 隔壁人妻偷人bd中字| av在线播放天堂| 成人在线免费观看av| 茄子视频成人免费观看| 簧片在线免费看| 97人人模人人爽人人澡| 成人午夜免费剧场| 黄色av网址在线播放| 欧美在线观看视频网站| 在线能看的av网站| 好色先生视频污| 黄色www网站| 中文字幕一区二区三区四区在线视频| 污视频网站观看| 日本福利视频在线观看| 91国视频在线| 在线视频一二区| 久在线观看视频| 亚洲综合av在线播放| japanese在线播放| 黄色片久久久久| 人人妻人人澡人人爽精品欧美一区| 在线观看三级网站| 久久久精品麻豆| 毛片在线视频播放| 91n.com在线观看| 中文字幕第22页| 国产性生活免费视频| 水蜜桃色314在线观看| 天天色综合天天色| 久久香蕉视频网站| 美女黄色片视频| 国产片侵犯亲女视频播放| 激情综合网俺也去| 亚洲熟妇无码av在线播放| 青青在线视频免费| 人妻久久久一区二区三区| 91性高潮久久久久久久| 国产又黄又猛视频| 黄色一级大片免费| 久久久国产精华液999999 | 国产xxxx振车| 亚洲色图偷拍视频| 男女日批视频在线观看| 国产精品宾馆在线精品酒店| 中文字幕av导航| 一级黄色香蕉视频| 激情内射人妻1区2区3区| 人人妻人人添人人爽欧美一区| 91免费网站视频| 中文字幕中文在线| 一区二区三区视频在线观看免费| 国产精品一区二区免费在线观看| 黄色a级片免费看| 污免费在线观看| 亚洲精品国产久| 成人高清在线观看视频| 国产精品视频中文字幕| 国产小视频精品| 一区二区三区欧美精品| 污污网站在线观看视频| 亚洲精品性视频| 国产无遮挡猛进猛出免费软件| 日韩中文字幕免费在线| 激情五月亚洲色图| 免费看涩涩视频| 国产又黄又爽免费视频| 色呦呦网站入口| 97超碰国产精品| 久久久999视频| 三级a在线观看| 四虎1515hh.com| 免费看欧美黑人毛片| 国产特级淫片高清视频| 色一情一乱一伦一区二区三区日本| 男人透女人免费视频| jizz大全欧美jizzcom| 中文字幕第22页| 9色porny| 日本www.色| 影音先锋成人资源网站| 日本免费黄视频| 在线播放黄色av| www.射射射| 一级黄色录像在线观看| 亚洲国产精品无码av| 久久久999免费视频| gogogo高清免费观看在线视频| 三上悠亚免费在线观看| 十八禁视频网站在线观看| 亚洲天堂av免费在线观看| 男人添女人下面高潮视频| 中文字幕 91| 日本丰满少妇xxxx| 中文字幕 欧美日韩| 日日橹狠狠爱欧美超碰| 日日噜噜噜夜夜爽爽| 欧美 激情 在线| 欧美日韩激情四射| 欧美日韩亚洲一二三| 农民人伦一区二区三区| www.国产视频.com| 日本免费不卡一区二区| 国产卡一卡二在线| 黄色av免费在线播放| 高清欧美精品xxxxx| 国产系列第一页| 无遮挡又爽又刺激的视频| 亚洲一区二区三区av无码| 波多野结衣网页| 中文字幕第100页| 婷婷丁香激情网| 男女av免费观看| www.浪潮av.com| 黄页免费在线观看视频| 乱熟女高潮一区二区在线| 天天久久综合网| 亚洲xxx在线观看| 国产又大又黄又粗又爽| 啊啊啊国产视频| 一本色道无码道dvd在线观看| 日本国产在线播放| 欧美亚洲国产成人| 成人免费观看cn| 免费无码不卡视频在线观看| 男女视频网站在线观看|