대기 중인된 메시지

시스템이 한 번에 윈도 즈의 어떤 숫자를 표시할 수 있습니다. 시스템 메시지 큐를 사용 하는 마우스와 키보드를 적절 한 창 입력 경로를.

시스템은 단일 시스템 메시지 큐 및 각 GUI 스레드에 대 한 스레드 메시지 큐의 수를 유지. 비 GUI 스레드에 대 한 메시지 큐를 만드는 오버 헤드를 방지 하려면 모든 스레드 메시지 큐 없이 처음 생성 됩니다. 스레드가 Win32 사용자 또는 GDI 함수 중 하나를 처음 호출 하는 경우에 시스템 스레드 메시지 큐를 만듭니다.

때마다 사용자 마우스 이동, 마우스 단추를 클릭 하거나 키보드, 마우스 장치 드라이버 형식 또는 키보드 입력 메시지 변환 및 시스템 메시지 큐에 배치 합니다. 시스템은 시스템 메시지 큐에서 메시지를 한 번에 하나씩 제거 대상 창을 확인 하려면 그들을 검사 하 고 대상 창을 만든 스레드의 메시지 큐에 게시. 스레드 메시지 큐 스레드가 만든 창에 대 한 모든 마우스 및 키보드 메시지를 받습니다. 스레드는 큐에서 메시지를 제거 하 고 그들을 보낼에 대 한 적절 한 창 프로시저를 처리 하도록 시스템에 지시.

예외는 WM_PAINT 메시지 시스템은 항상 게시물 메시지 메시지 큐의 끝에. 이렇게 하면 창 적절 한 처음에 first-out (FIFO) 시퀀스에는 입력된 메시지를 받습니다. 그러나 WM_PAINT 메시지를 큐에 보관 하 고 큐 다른 메시지를 포함 하는 경우에 창 프로시저에 전달 됩니다. 같은 창에 대 한 여러 WM_PAINT 메시지는 단일 WM_PAINT 메시지를 단일 영역으로 통합 하는 클라이언트 영역에 대 한 모든 잘못 된 부분으로 결합 됩니다. 창 클라이언트 영역의 내용을 다시 해야 하는 횟수를 줄여 WM_PAINT 메시지를 결합 하 여.

시스템 메시지 구조를 작성 하 고 메시지 큐를 복사 하 여 스레드의 메시지 큐에 메시지를 게시 합니다. 정보 메시지 에 포함 됩니다: 메시지는 의도, 메시지 식별자, 두 메시지 매개 변수, 메시지, 게시 한 시간 창과 마우스 커서 위치 핸들. 스레드 postmessage 를 또는 PostThreadMessage 함수를 사용 하 여 자체 메시지 큐로 또는 다른 스레드가 큐에 메시지를 게시할 수 있습니다.

응용 프로그램 GetMessage 함수를 사용 하 여 큐에서 메시지를 제거할 수 있습니다. 응용 프로그램 PeekMessage 함수 사용 하 여 큐에서 제거 하지 않고 메시지를 검사할 수 있습니다. 이 함수는 메시지에 대 한 정보 메시지 를 채웁니다.

큐에서 메시지를 제거한 후 응용 프로그램 시스템의 처리에 대 한 창 프로시저에 게 메시지를 보낼 직접 DispatchMessage 함수를 사용할 수 있습니다. DispatchMessage GetMessage 또는 PeekMessage 함수를 이전 호출에 의해 채워졌다 MSG 를 포인터를 걸립니다. DispatchMessage 창 프로시저를 창 핸들, 메시지 id 및 두 메시지 매개 변수를 전달 하지만 메시지를 게시 하는 시간을 통과 하거나 마우스 커서 위치 하지 않습니다. 응용 프로그램은 메시지를 처리 하는 동안 GetMessageTimeGetMessagePos 함수를 호출 하 여이 정보를 검색할 수 있습니다.

스레드 메시지 큐의 메시지가 없는 경우 다른 스레드를 제어 항복 WaitMessage 함수를 사용할 수 있습니다. 함수는 스레드를 일시 중단 하 고 새 메시지 스레드의 메시지 큐에 배치 될 때까지 반환 하지 않습니다.

32 비트 값을 현재 스레드 메시지 큐 연결할 SetMessageExtraInfo 함수를 호출할 수 있습니다. GetMessage 또는 PeekMessage 함수에 의해 검색 된 마지막 메시지와 연관 된 값을 가져오는 GetMessageExtraInfo 함수를 호출 하는 다음.

 

Index