새소식

공부/dll

USER32.dll DispatchMessageA Function

  • -

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를 사용하여 적절한 창 프로시저로 디스패치합니다.

'공부 > dll' 카테고리의 다른 글

USER32.dll GetDlgItemTextA Function  (0) 2023.03.16
USER32.dll GetMessageA Function  (0) 2023.03.16
USER32.dll TranslateMessage Function  (1) 2023.03.16
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.