DispatchMessageA Function
USER32.dll
USER32.dll은 창 관리, 입력 처리, UI 컨트롤 및 구성 요소, 대화 상자 및 메뉴, 그래픽 및 페인팅, 사용자 상호 작용 등 필수 기능을 제공합니다.
DispatchMessageA
DispatchMessageA는 USER32.dll 라이브러리에 존재하는 Windows API 함수입니다.
이 함수는 Windows 응용 프로그램의 메시지 루프에서 호출 스레드의 메시지 큐에서 검색된 메시지를 처리를 위해 적절한 창 프로시저로 디스패치하는 데 사용됩니다.
함수 이름의 'A'는 ANSI 문자 집합을 사용함을 나타냅니다.
DispatchMessageW라는 함수의 유니코드 버전도 있습니다.
LRESULT DispatchMessageA(
[in] const MSG *lpMsg
);
파라미터
GetMessage 또는 PeekMessage 함수를 사용하여 메시지 큐에서 검색된 메시지 정보를 포함하는 MSG구조에 대한 포인터인 단일 인수 lpMsg를 사용합니다.
[in] lpMsg
Type: const MSG*
반환값
Type: LRESULT
DispatchMessageA가 호출되면 MSG 구조에 포함된 창 핸들(hwnd)과 연결된 창 프로시저로 메시지를 보냅니다.
윈도우 프로시저는 메시지를 처리하고 결과를 반환한 다음 DispatchMessageA에서 LRESULT값으로 반환합니다..
함수 예제
이 함수를 사용하는 예제는 아래와 같다.
MessageLoop:
invoke GetMessage, ADDR msg, NULL, 0, 0
cmp eax, 0
je ExitLoop
invoke TranslateMessage, ADDR msg
invoke DispatchMessageA, ADDR msg
jmp MessageLoop
위 예제는 TranslateMessage가 사용될때 같이 사용되는 함수들의 예제입니다.
위의 어셈블리 코드에서 메시지 루프는 GetMessage를 사용하여 메시지를 검색하고 TranslateMessage를 사용하여 변환한 다음 DispatchMessageA를 사용하여 적절한 창 프로시저로 디스패치합니다.