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 프로그램 설계에 도움이 되었으면 합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.