この記事では、VB のシールドされたテキスト ボックスに右クリック メニュー、コピー、貼り付けなどの機能を実装する方法について説明します。この機能はテキストボックスの右クリック機能を無効にし、マウスの右クリック機能を無効にするものです。これは非常に一般的なタイプの実用的な関数です。
特定の機能モジュールのコードは次のとおりです。
'================================================ = ========='| モジュール名| TextBoxDisableAbility'| テキストボックスの機能を無効にする'============= ==== =================================オプション ExplicitPrivate 宣言関数 SetWindowText Lib "user32" エイリアス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 関数 GetWindowLong Lib "user32" エイリアスを宣言"GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As LongPrivate 宣言関数 SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPrivate Const GWL_WNDPROC = (- 4)プライベート定数 WM_CUT = &H300 '---------------メッセージのプライベート Const WM_COPY As Long = &H301 '---------------メッセージのコピー 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 'コールバック系関数処理 WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam) End SelectEnd FunctionPublic Sub DisableAbility(TargetTextBox As TextBox) 'プログラム起動時に呼び出します prevWndProc = GetWindowLong(TargetTextBox.hwnd, GWL_WNDPROC) SetWindowLong TargetTextBox.hwnd 、 GWL_WNDPROC、WndProcEnd Sub のアドレス
このコードの機能は、テキスト ボックスの右クリック メニュー、コピー、貼り付けなどをブロックします。これらの機能は多くのプログラムで見られます。すべての VB 愛好家と共有して、皆さんのお役に立てれば幸いです。