wm_lbuttondown 예제

Posted by abitou on Αυγ 02, 2019

창은 마우스가 이동할 때 창에 게시된 WM_MOUSEMOVE 메시지 스트림을 처리하여 커서의 위치를 추적합니다. WM_MOUSEMOVE 메시지를 처리하려면 일반적으로 클라이언트 영역에서 반복적인 페인팅 또는 그리기 작업이 포함됩니다. 예를 들어 그리기 응용 프로그램은 마우스가 이동할 때 선을 반복적으로 다시 그릴 수 있습니다. 창은 WM_LBUTTONUP 메시지를 신호로 사용하여 커서 추적을 중지합니다. 커서를 추적하는 것은 일반적으로 WM_LBUTTONDOWN, WM_MOUSEMOVE 및 WM_LBUTTONUP 메시지를 처리해야 합니다. 창은 WM_LBUTTONDOWN 메시지의 lParam 매개 변수에 제공된 커서 위치를 확인하여 커서 추적을 시작할 시기를 결정합니다. 예를 들어 워드 프로세싱 응용 프로그램은 커서가 텍스트 줄에 있는 동안 WM_LBUTTONDOWN 메시지가 발생했지만 문서가 끝난 경우에는 커서를 추적하기 시작합니다. 스크립트가 MsgBox와 같은 시스템 대화 상자를 표시할 때 컨트롤에 게시된 모든 메시지는 모니터링되지 않습니다. 예를 들어 스크립트에 MsgBox가 표시되고 사용자가 GUI 창에서 단추를 클릭하면 모니터 기능을 호출하지 않고 WM_LBUTTONDOWN 메시지가 단추로 직접 전송됩니다. 이 예제에서는 다양한 포함된 개체가 포함된 Microsoft Word 문서를 가정합니다. 다음 예제와 같이 창 클래스를 등록할 때 이 스타일을 설정합니다. 이 섹션의 예제에서는 마우스 커서를 추적하는 방법을 보여 줍니다.

여기에는 사용자가 마우스를 드래그하여 창의 클라이언트 영역에 선을 그릴 수 있는 창 프로시저의 일부가 포함되어 있습니다. 모니터 함수의 마지막으로 찾은 창은 메시지가 전송된 부모 창으로 시작됩니다(컨트롤로 전송된 경우에도). 창이 숨겨져 있지만 GUI 창이 아닌 경우(예: 스크립트의 기본 창) 창을 사용하기 전에 DetectHiddenWindows를 켭니다. 예: 이 섹션의 예제는 간단한 워드 프로세싱 응용 프로그램에서 가져온 것입니다. 여기에는 사용자가 텍스트 줄의 아무 곳이나 클릭하여 캐리트의 위치를 설정하고 줄의 아무 곳이나 두 번 클릭하여 텍스트 줄을 선택(강조 표시)할 수 있는 코드가 포함되어 있습니다. 우선 작업한 마지막 창에 대한 예제 코드를 받아 예상대로 컴파일하고 실행되는지 확인합니다. 그런 다음 다음 에 대해 작업을 계속하거나 수정할 새 프로젝트에 복사할 수 있습니다. 해당 정보가 필요하지 않은 경우 목록 끝에서 하나 이상의 매개 변수를 생략할 수 있습니다. 예를 들어 MyMsgMonitor(wParam, lParam)로 정의된 함수는 처음 두 매개 변수만 수신하고 MyMsgMonitor()로 정의된 함수는 그 중 어느 것도 받지 못합니다. 들어오는 WPARAM 또는 LPARAM이 서명된 정수로 의도된 경우 이 예제: 창에 응답해야 하는 각 외부 이벤트는 메시지를 통해 창으로 전송됩니다. 이제 이러한 메시지 중 일부를 처리하여 창이 행동하는 방식을 제어할 때입니다. 각 CWnd 개체는 WndProc 함수에서 자체 메시지를 처리합니다.

이 예제에서는 왼쪽 마우스 단추 메시지를 처리 하 여 간단한 낙서 프로그램을 만듭니다. 사용자가 마우스 메시지에 응답하여 창에 그릴 수 있습니다. 사용자가 왼쪽 마우스 버튼을 누르는 동안 마우스를 이동할 때 창에 선이 그려집니다.

Comments are closed.

Ο καιρός

ar8ra

advertisement