SendMessage

SendMessageは、ウィンドウメッセージを送信するWindowsAPI・・・。

SendMessage 関数

指定したウィンドウハンドルのウィンドウに、指定のメッセージと2つのパラメータ(wParamとlParam)を送る・・・。
そして、送信したウィンドウメッセージに対する処理が完了するまで、制御を返さない(次の処理に行かずブロッキングする)ことが特徴・・・。

実際にSendMessageが送信先の処理が完了するまで待っているのかを確認する・・・。

Button1(ID_BUTTON1)が押された時、

ダイアログ自身のウィンドウハンドルhwndDlgに、WM_LBUTTONDOWNを送信し、WM_LBUTTONDOWNの時の処理が終わるまで待つ・・・。
その後、Rectangleで矩形(80, 60, 240, 180)を描画する・・・。

WM_LBUTTONDOWNでの処理は、

Rectangleで矩形(0, 0, 160, 120)の矩形を描画するということになっている・・・。

つまり、SendMessageがWM_LBUTTONDOWNの処理を待つなら、矩形(0, 0, 160, 120)が描画されてから、矩形(80, 60, 240, 180)が描画されるはずである・・・。

f:id:BG1:20150901110047p:plain

Item1-1で、

f:id:BG1:20150901110204p:plain

Button1を押してみる・・・。

f:id:BG1:20150901110220p:plain

矩形(0, 0, 160, 120)の上に、矩形(80, 60, 240, 180)が描画されているので、
矩形(0, 0, 160, 120)が描画された後に、矩形(80, 60, 240, 180)が描画されたことがわかる・・・。
つまり、SendMessageが送信先の処理を待ってから、その後の処理をしていることがわかる・・・。

Sample/SendMessage.cpp at master · bg1bgst333/Sample · GitHub
Sample/resource.h at master · bg1bgst333/Sample · GitHub
Sample/SendMessage.rc at master · bg1bgst333/Sample · GitHub