ハンスの答えは、リンクされた MSDN のドキュメントと異なることを言っているわけではありません。
メッセージは、標準キューと同じように先入れ先出しの順序で処理されますが、メッセージなどのいくつかの特別な例外がWM_TIMERありWM_PAINTます。Hans は、このクラスのメッセージを「ウィンドウ状態から合成された」ものと呼んでいます。MSDN はそれらを明示的に呼び出すだけです。
WM_PAINTメッセージ、WM_TIMERメッセージ、およびメッセージを除いてWM_QUIT、システムは常にメッセージ キューの最後にメッセージをポストします。これにより、ウィンドウが適切な先入れ先出し (FIFO) シーケンスで入力メッセージを受け取ることが保証されます。ただし、メッセージWM_PAINT、WM_TIMERメッセージ、およびWM_QUITメッセージはキューに保持され、キューに他のメッセージが含まれていない場合にのみ、ウィンドウ プロシージャに転送されます。さらにWM_PAINT、同じウィンドウの複数のメッセージが 1 つのWM_PAINTメッセージに結合され、クライアント領域のすべての無効な部分が 1 つの領域に統合されます。メッセージを結合するとWM_PAINT、ウィンドウがクライアント領域の内容を再描画しなければならない回数が減ります。
問題は、 で送信されたメッセージはSentMessageキューに入れられず、 で投稿されたメッセージはキューに入れられることPostMessage です。MSDN の同じ記事は、次のセクションで同じことを述べています。
キューに入れられていないメッセージは、システム メッセージ キューとスレッド メッセージ キューをバイパスして、すぐに宛先ウィンドウ プロシージャに送信されます。
[...]
非キュー メッセージを送信する関数には、、、、、およびBroadcastSystemMessageがあります。BroadcastSystemMessageExSendMessageSendMessageTimeoutSendNotifyMessage
「優先順位」はありません。ただし、説明する動作は簡単に説明できます。ほとんどの場合、WM_USERメッセージは関数の呼び出しによって送信されSendMessage、メッセージ キューをバイパスして、宛先ウィンドウのウィンドウ プロシージャにメッセージを直接送信します。SendMessage関数が戻る前にすぐに処理され、残りのキューを効果的にバイパスするため、より高い「優先度」で処理されているように見えます。
これにより、クリック イベントの処理に時間がかかる理由が説明されます。これは、クリック イベントが他のすべての入力メッセージと共にキューに押し込まれるため、ウィンドウはメッセージを処理するまで処理に取り掛からないためです。への呼び出しで直接送信されますSendMessage。
重要な警告:私は Windows CE について何も知りません。あなたの質問は、あなたが具体的に話していることを示しています。ここで説明する動作は、Windows のデスクトップ バージョンでは正確ですが、その動作と Windows CE の動作に違いがあるかどうかはわかりません。何か問題があった可能性があります。