이 문서에서는 VB 보호 텍스트 상자에 마우스 오른쪽 버튼 클릭 메뉴, 복사 및 붙여넣기와 같은 기능을 구현하는 방법을 설명합니다. 이 기능은 텍스트 상자의 오른쪽 클릭 기능을 비활성화하여 마우스 오른쪽 클릭 기능을 무효화시키는 것입니다. 매우 일반적인 유형의 실용적인 기능입니다.
특정 기능 모듈 코드는 다음과 같습니다.
'================================================ = ========='| 모듈 이름| TextBoxDisableAbility'| ==== =================================옵션 ExplicitPrivate 선언 함수 SetWindowText Lib "user32" 별칭 " SetWindowTextA"(ByVal hwnd As Long, ByVal lpString As String) As LongPrivate 선언 함수 CallWindowProc Lib "user32" 별칭 "CallWindowProcA"(ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) 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 dwNewLong As Long) As LongPrivate Const GWL_WNDPROC = (- 4) 개인 상수 WM_CUT = &H300 '-------------메시지 잘라내기 Private 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, AddressOf WndProcEnd Sub
이 코드의 기능은 텍스트 상자의 오른쪽 클릭 메뉴, 복사, 붙여넣기 등을 차단합니다. 이러한 기능은 많은 프로그램에서 볼 수 있습니다. 모든 VB 매니아들과 공유하여, 모두에게 도움이 되기를 바랍니다!