Windows에서 프로그래밍할 때 Windows 시스템에 이미 구현된 기능이 많이 있다는 것을 종종 발견합니다. 이러한 기능을 직접 호출할 수 있으면 프로그램 작성 시간을 많이 절약하고 프로그램 실행 효율성을 향상시킬 수 있습니다. 대부분의 경우 "Ctrl +"를 사용할 수 있습니다. 프로그램에서 시스템의 이러한 기능을 호출할 수 있으면 이러한 작업을 어떻게 구현해야 할지 걱정할 필요가 없습니다. 끊임없는 탐색 끝에 마침내 SendMessage와 PostMessage가 이 중요한 작업을 수행할 수 있다는 것을 발견했습니다. 그래서 빨리 이 기능을 모든 친구들에게 소개하고 싶습니다.
이 두 가지 API 기능은 VB5의 "API 브라우저"를 사용하여 쉽게 찾을 수 있습니다.
DeclareFunctionSendMessageLib "user32" 별칭 "SendMessageA"_(ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsLong,_lParamAsAny)AsLong
DeclareFunctionPostMessageLib "user32" 별칭 "PostMessageA"_(ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsLong,_ByVallParamAsLong)AsLong
SendMessage가 메시지를 보내기 위해 Windows 함수를 직접 호출한다는 점을 제외하면 이 두 함수의 기능은 거의 동일합니다. 이 함수는 메시지가 완전히 처리된 후에만 반환되는 반면 PostMessage는 메시지를 양식의 메시지 대기열에 추가합니다. 향후 정상적인 이벤트 처리 중에 처리될 예정입니다. 다음은 SendMessage를 예로 들어 설명합니다.
함수에는 4개의 매개변수가 있지만 핵심 매개변수는 처음 두 개, 즉 hwnd와 wMsg입니다. Hwnd는 핸들입니다. Microsoft Windows 응용 프로그램의 각 폼과 컨트롤에는 함수의 작업 개체를 나타낼 수 있습니다. wMsg는 함수에서 보낼 특정 메시지를 나타내는 16진수입니다.
다음은 특정 예를 사용하여 SendMessage를 사용하여 "잘라내기", "복사", "붙여넣기", "실행 취소" 및 "삭제" 기능을 구현하는 방법을 보여줍니다.
위의 5가지 기능을 각각 수행하기 위해 텍스트 상자 Text1과 5개의 버튼을 폼에 배치하고 다음 프로그램을 작성합니다.
OptionExplicit
PRivateDeclareFunctionSendMessageLib "user32" 별칭 "SendMessageA"_(ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsLong,lParamAsAny)AsLong
ConstWM_CUT=&H300
ConstWM_COPY=&H301
ConstWM_PAST=&H302
ConstWM_CLEAR=&H303
ConstWM_UNDO=&H304
DimfbAsLong
PrivateSubcmdClear_Click()
fb=포스트메시지(Text1.hwnd,WM_CLEAR,0,0)
EndSub
PrivateSubcmdCopy_Click()
fb=SendMessage(Text1.hwnd,WM_COPY,0,0)
EndSub
PrivateSubcmdCut_Click()
fb=SendMessage(Text1.hwnd,WM_CUT,0,0)
EndSub
PrivateSubcmdPast_Click()
fb=SendMessage(Text1.hwnd,WM_PAST,0,0)
EndSub
PrivateSubcmdUndo_Click()
fb=SendMessage(Text1.hwnd,WM_UNDO,0,0)
EndSub
TextBox 외에도 SendMessage는 hwnd 매개변수가 적절하게 변경되는 한 RitchTextBox 및 ComboBox 등에서도 작동할 수 있습니다. ->