考試大編輯整理:為了學(xué)習(xí)方便,下面先給出源碼,并且已經(jīng)作了詳細(xì)的中文注釋:
-------------------------------------------
使窗體右上角的X按鈕失效
-------------------------------------------
程序說明:
本例利用API函數(shù)GetSystemMenu得到系統(tǒng)菜單的句柄
X按鈕是系統(tǒng)菜單的一菜單項,然后用RemoveMenu函數(shù)
刪去這一菜單項,也就是使X按鈕失效了。
-------------------------------------------
【VB聲明】
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
【說明】
取得指定窗口的系統(tǒng)菜單的句柄。在vb環(huán)境,“系統(tǒng)菜單”的正式名稱為“控制菜單”,即單擊窗口左上角的控制框時出現(xiàn)的菜單
【返回值】
Long,如執(zhí)行成功,返回系統(tǒng)菜單的句柄;零意味著出錯。如bRevert設(shè)為TRUE,也會返回零(簡單的恢復(fù)原始的系統(tǒng)菜單)
【備注】
在vb里使用:系統(tǒng)菜單會向窗口發(fā)送一條WM_SYSCOMMAND消息,而不是WM_COMMAND消息
【參數(shù)表】
hwnd ----------- Long,窗口的句柄
bRevert -------- Long,如設(shè)為TRUE,表示接收原始的系統(tǒng)菜單
Private Declare Function GetSystemMenu Lib "user32" ( _
ByVal hwnd As Integer, _
ByVal bRevert As Integer _
) As Integer
【VB聲明】
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
【說明】
刪除指定的菜單條目。如刪除的條目屬于一個彈出式菜單,那么這個函數(shù)不會同時刪除彈出式菜單。首先應(yīng)該用GetSubMenu函數(shù)取得彈出式菜單的句柄,再在以后將其刪除
【返回值】
Long,非零表示成功,零表示失敗。會設(shè)置GetLastError
【備注】
強(qiáng)烈建議大家使用vb菜單的visible屬性從菜單中刪除條目,而不要用這個函數(shù),否則會造成指定菜單中其他菜單條目的visible屬性對錯誤的菜單條目產(chǎn)生影響
【參數(shù)表】
hMenu ---------- Long,菜單的句柄
-------------------------------------------
使窗體右上角的X按鈕失效
-------------------------------------------
程序說明:
本例利用API函數(shù)GetSystemMenu得到系統(tǒng)菜單的句柄
X按鈕是系統(tǒng)菜單的一菜單項,然后用RemoveMenu函數(shù)
刪去這一菜單項,也就是使X按鈕失效了。
-------------------------------------------
【VB聲明】
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
【說明】
取得指定窗口的系統(tǒng)菜單的句柄。在vb環(huán)境,“系統(tǒng)菜單”的正式名稱為“控制菜單”,即單擊窗口左上角的控制框時出現(xiàn)的菜單
【返回值】
Long,如執(zhí)行成功,返回系統(tǒng)菜單的句柄;零意味著出錯。如bRevert設(shè)為TRUE,也會返回零(簡單的恢復(fù)原始的系統(tǒng)菜單)
【備注】
在vb里使用:系統(tǒng)菜單會向窗口發(fā)送一條WM_SYSCOMMAND消息,而不是WM_COMMAND消息
【參數(shù)表】
hwnd ----------- Long,窗口的句柄
bRevert -------- Long,如設(shè)為TRUE,表示接收原始的系統(tǒng)菜單
Private Declare Function GetSystemMenu Lib "user32" ( _
ByVal hwnd As Integer, _
ByVal bRevert As Integer _
) As Integer
【VB聲明】
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
【說明】
刪除指定的菜單條目。如刪除的條目屬于一個彈出式菜單,那么這個函數(shù)不會同時刪除彈出式菜單。首先應(yīng)該用GetSubMenu函數(shù)取得彈出式菜單的句柄,再在以后將其刪除
【返回值】
Long,非零表示成功,零表示失敗。會設(shè)置GetLastError
【備注】
強(qiáng)烈建議大家使用vb菜單的visible屬性從菜單中刪除條目,而不要用這個函數(shù),否則會造成指定菜單中其他菜單條目的visible屬性對錯誤的菜單條目產(chǎn)生影響
【參數(shù)表】
hMenu ---------- Long,菜單的句柄

