VB中使窗體右上角的X按鈕失效

字號:

考試大編輯整理:為了學(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,菜單的句柄