web-dev-qa-db-ja.com

メッセージの送信とメッセージの送信の違いは何ですか?また、これらがC#、WPF、および純粋なWindowsプログラミングにどのように関係するのですか?

メッセージの送信とメッセージの送信(純粋なWindowsプログラミングの観点から)の違いと、これらがC#、WPF、および純粋なWindowsプログラミングにどのように関連するか?

私はスレッディングと関連するものすべてに慣れていないので、明らかな質問をしてください。スレッドの外部を掘り下げる必要があります.. win32プログラミングからWPFへの概念を構築するのに役立つリンクを教えてください。

Invok/Begin InvokeをDispatcherに委任するには、PostメッセージからAfxへの呼び出し(新しいスレッドを開始するための呼び出し)を理解する必要があります。

69
user407269

PostMessage(「純粋なWindowsプログラミング」、別名win32 API)は 非同期 です。つまり、ドキュメントを引用します。

指定されたウィンドウを作成したスレッドに関連付けられたメッセージキューにメッセージを配置(ポスト)し、スレッドがメッセージを処理するのを待たずに戻ります。

スレッドに関連付けられたメッセージキューにメッセージを投稿するには、PostThreadMessage関数を使用します。

SendMessage同期 です。つまり、再び引用しています:

指定されたメッセージを1つまたは複数のウィンドウに送信します。 SendMessage関数は、指定されたウィンドウのウィンドウプロシージャを呼び出し、ウィンドウプロシージャがメッセージを処理するまで戻りません。

メッセージを送信してすぐに戻るには、SendMessageCallbackまたはSendNotifyMessage関数を使用します。スレッドのメッセージキューにメッセージを投稿してすぐに戻るには、PostMessageまたはPostThreadMessage関数を使用します。

これらの2つの関数とその使用法に関する優れたチュートリアルは here です。

WPFへの接続については、 this SO question で説明しています。

88
Alex Martelli