게시 및 메시지 보내기

모든 응용 프로그램을 게시 하 고 메시지를 보낼 수 있습니다. 시스템 처럼 응용 프로그램 메시지 대기열에 복사 하 여 게시물을 메시지와 메시지 데이터를 창 프로시저에 인수로 전달 하 여 메시지를 보냅니다. 메시지를 게시 하려면 응용 프로그램 postmessage 를 함수를 사용 합니다. 응용 프로그램 SendMessage, BroadcastSystemMessage, SendMessageCallback, SendMessageTimeout, SendNotifyMessage또는 SendDlgItemMessage 함수를 호출 하 여 메시지를 보낼 수 있습니다.

응용 프로그램는 일반적으로 알리는 작업을 수행 하려면 특정 창 메시지를 게시 합니다. Postmessage 를 메시지에 대 한 메시지 구조를 만들고 메시지 큐에 메시지를 복사 합니다. 응용 프로그램의 메시지 루프는 결국 메시지를 검색 하 고 적절 한 창 프로시저에 전달.

응용 프로그램은 일반적으로 작업을 즉시 수행 하도록 창 프로시저를 알리는 메시지를 보냅니다. SendMessage 함수는 지정한 창에 해당 창 프로시저에 메시지를 보냅니다. 이 함수는 창 프로시저에서 처리를 완료 하 고 메시지 결과 반환 할 때까지 기다립니다. 부모 및 자식 창을 자주 서로 게 메시지를 보냄으로써 통신 합니다. 예를 들어, edit 컨트롤의 자식 창으로 된 부모 창에 메시지를 전송 하 여 컨트롤의 텍스트를 설정할 수 있습니다. 컨트롤 부모 메시지를 전송 하 여 사용자가 실시 하는 텍스트를 변경의 부모 창에 알릴 수 있습니다.

SendMessageCallback 함수는 지정한 창에 해당 하는 창 프로시저를 또한 메시지를 보냅니다. 그러나,이 함수는 즉시 반환합니다. 창 프로시저에서 메시지를 처리 한 후 시스템 지정 된 콜백 함수를 호출 합니다. 콜백 함수에 대 한 자세한 내용은 다음 웹 사이트를 참조 하십시오. SendAsyncProc 함수.

때때로, 하려는 보내거나 시스템에서 모든 최상위 창에 메시지를 게시 합니다. 예를 들어, 응용 프로그램이 시스템 시간을 변경 하는 경우 전송 하 여 변경에 대 한 모든 최상위 창 통지 해야 합니다 그것을 WM_TIMECHANGE 메시지. 응용 프로그램 보내거나 postmessage 를 또는 SendMessage 함수를 호출 하 고 hwnd 매개 변수에서 HWND_TOPMOST를 지정 하 여 모든 최상위 창에 메시지를 게시할 수 있습니다. BroadcastSystemMessage 함수를 호출 하 고 lpdwRecipients 매개 변수에서 BSM_APPLICATIONS를 지정 하 여 모든 응용 프로그램에 메시지를 브로드캐스트할 수 있습니다.

응용 프로그램 창을 지정 하지 않고 메시지를 게시할 수 있습니다. Postmessage를 호출할 때 응용 프로그램이 NULL 창 핸들을 제공 하는 경우 현재 스레드에 연결 된 큐에 메시지가 게시 됩니다. 아무 창 핸들을 지정 하기 때문에 응용 프로그램 메시지 루프에서 메시지를 처리 해야 합니다. 이것은 특정 창 대신 전체 응용 프로그램에 적용 되는 메시지를 만드는 한 가지 방법은.

InSendMessage 또는 InSendMessageEx 함수를 사용 하 여 창 프로시저는 다른 스레드에 의해 보낸 메시지를 처리 하는지 여부를 확인할 수 있습니다. 이 기능은 메시지의 출처에 따라 메시지를 처리 하는 경우에 유용.

일반적인 프로그래밍 오류 postmessage 를 함수는 메시지를 항상 게시물을 생각 하는 것입니다. 메시지 큐가 가득 찬 경우 이것은 사실이 아니다. 응용 프로그램 메시지 게시 여부를 확인 하 고 되지 않은 경우 repost 그것 postmessage 를 함수의 반환 값을 확인 해야.

 

Index