VC에서 SendMessage와 PostMessage의 차이

1420 단어
본고의 실례는 VC에서 SendMessage와 PostMessage의 차이를 설명했다.여러분에게 참고하도록 공유하다.구체적인 분석은 다음과 같다.
1. 우선 반환값의 의미의 차이점을 살펴보고 MSDN의 성명을 살펴보자.

   LRESULT SendMessage (  HWND hWnd, 
  
        UINT Msg,
        WPARAM wParam,
        LPARAM lParam );

   BOOL PostMessage(  HWND hWnd, 
  
        UINT Msg,
        WPARAM wParam,
        LPARAM lParam);

 
그중 4개의 매개 변수의 의미는 같고 반환값의 유형이 다르다(사실 데이터로 볼 때 그들은 32자리의 수이지만 의미는 다르다). LRESULT는 메시지가 처리된 후의 반환값을 나타내고 BOOL은 메시지가 포스트에 성공했는지 여부를 나타낸다.
 
2、
PostMessage는 비동기적이며 SendMessage는 동기화됩니다.
PostMessage는 정보를 대기열에 넣고 메시지가 처리되었든 안 되었든 되돌려줍니다. 메시지가 처리되지 않을 수도 있습니다.SendMessage는 메시지가 처리된 후에야 되돌아옵니다. 메시지가 처리되지 않으면 메시지를 보내는 루트가 계속 막힙니다.3,sendmessage 발송 메시지는 메시지 대기열을 거치지 않고 직접 처리됩니다.그러나sendmessage는 메시지가 처리된 것을 알고 되돌아오기를 기다리고 있습니다.4. 시스템은 시스템 메시지(0-WM USER 사이의 메시지)만 정리하고 번호를 매기며 사용자 메시지(WM USER 이상)를 다른 프로세스로 보낼 때 스스로 정의해야 한다.
Post Message, Send Notify Message, Send Message Callback 등 비동기 함수로 시스템 메시지를 보낼 때 매개 변수에서 바늘을 사용할 수 없다. 발송자가 메시지의 처리를 기다리지 않고 되돌아오기 때문에 수신자가 처리하지 않았는데 바늘이 풀렸다.5, Windows 2000/XP에서 매 메시지 대기열은 최대 10000개의 포스트 메시지만 저장할 수 있으며, 초과된 것은 처리되지 않은 것은 처리되지 않고 바로 잃어버릴 수 있다.이 값은 더 크게 바꿀 수 있습니다: [HKEY LOCAL MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Windows] USERPostMessageLimit, 최소 4000입니다.
본고에서 서술한 것이 여러분의 VC 프로그램 설계에 도움이 되었으면 합니다.

좋은 웹페이지 즐겨찾기