MoveToEx

MoveToExは、現在の描画位置を指定された新しい描画位置に更新するWindowsAPI・・・。

MoveToEx 関数

基本的には、後で登場するWindowsAPIのLineToで線を引いたりする場合に、LineToは始点をセットすることができないので、これで始点をセットしてから、LineToで終点をセットして線を引くといったような時に使う・・・。
(なぜ、こんな仕様になってるんだろう・・・。)

第4引数にPOINT構造体変数のアドレスをおくと、更新前の位置座標が格納されるので、今回は左クリックで押された座標を新しい現在位置としてMoveToExで更新し、古い座標と新しい座標を表示することでクリックしたときの位置座標の変遷を見れるようにする・・・。

BeginPaintだと、描画時に毎回デバイスコンテキストハンドルを取得しに行くが、そのたびにあたらしいハンドルとなるので、以前の描画位置を取得できない・・・。
ここはGetDCで取得して、スタティック変数に保存しておき、それを使い続けるようにする・・・。

WM_LBUTTONDOWNで更新と描画を行う・・・。

lParamから座標を取得したら、MoveToExで位置を更新、TextOutで古い位置(ptの中身)と新しい位置(x, y)を表示し、新しい位置にSetPixelで点を打っている・・・。

実行すると、

f:id:BG1:20150330152621p:plain

最初は何も表示されない・・・。
左クリックすると、

f:id:BG1:20150330152658p:plain

最初は(0, 0)だったようで、それが新しい位置(111, 85)に切り替わってる・・・。
さらに今度はちょっと下のほうをクリックすると、

f:id:BG1:20150330152849p:plain

新しい座標が(148, 348)に切り替わる・・・。

Sample/MoveToEx.cpp at master · bg1bgst333/Sample · GitHub