本文實(shí)例講述了VB屏蔽文本框中的右鍵菜單、復(fù)制、粘貼等功能的實(shí)現(xiàn)方法。該功能就是禁止文本框的右鍵功能,造成點(diǎn)擊鼠標(biāo)右鍵無(wú)效。是非常常見(jiàn)的一類實(shí)用功能。
具體的功能模塊代碼如下:
'=========================================================='| 模 塊 名 | TextBoxDisableAbility'| 說(shuō) 明 | 禁止文本框的功能'==========================================================Option ExplicitPrivate Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As LongPrivate 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 LongPrivate Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As LongPrivate Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPrivate Const GWL_WNDPROC = (-4)Private Const WM_CUT = &H300 '-------------剪切消息Private Const WM_COPY As Long = &H301 '-------------復(fù)制消息Private Const WM_PASTE As Long = &H302 '-------------粘貼消息Private Const WM_CLEAR = &H303 '-------------刪除消息[右鍵菜單的刪除]Private Const EM_UNDO = &HC7 '-------------撤銷消息Private Const WM_CONTEXTMENU = &H7B '-------------右鍵菜單Private prevWndProc As LongPrivate Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Select Case Msg Case WM_CUT, WM_COPY, WM_PASTE, WM_CLEAR, EM_UNDO, WM_CONTEXTMENU '這里處理自定義的事件,最好為空 Case Else '回調(diào)系統(tǒng)函數(shù)處理 WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam) End SelectEnd FunctionPublic Sub DisableAbility(TargetTextBox As TextBox) '程序啟動(dòng)時(shí)調(diào)用這個(gè) prevWndProc = GetWindowLong(TargetTextBox.hwnd, GWL_WNDPROC) SetWindowLong TargetTextBox.hwnd, GWL_WNDPROC, AddressOf WndProcEnd Sub
本代碼的功能屏蔽文本框的右鍵菜單、復(fù)制、粘貼等,在不少的程序中都可以見(jiàn)到這些功能。共享給各位VB愛(ài)好者,希望能對(duì)大家有所幫助!
新聞熱點(diǎn)
疑難解答
圖片精選