ダイアログを離れたウィンドウ上での描画

[戻る]
ジョージア 2007/03/02(金) 19:18:28
開発環境はVC++2005 MFC-SDIです。


マウスカーソルに連動してビットマップを描画しているのですが、
ダイアログ上は問題なく描画できるのですが、ダイアログ上から離れると描画できませ
ん。

マウスのキャプチャは行っているのですが、デバイスコンテキストがダイアログ上
のものしか取得していないのが原因のようなが気がします。

ダイアログ上を離れても描画を続けるにはどうすればよいのでしょうか?

申し訳ありませんが、ご教授いただけないでしょうか?

Ban 2007/03/02(金) 22:37:27
単一モニタならGetDC(NULL)あたり?

ジョージア 2007/03/05(月) 09:59:17
GetDC(NULL)でも駄目でした。

貯○愛 2007/03/05(月) 11:05:28
SetCapturesした場合に、ダイアログを離れたOnMouseMoveのイベントが拾えません。

ジョージア 2007/03/05(月) 11:06:32
そうなんです、まさにその状態みたいです。

状況的には
@OnLButtonDownでSetCaptures
Aダイアログを出るとOnMouseMoveイベントが拾えない
BOnLButtonUpはダイアログの外でも拾えて、リリースは出来ている。

申し訳ありませんOnMouseMoveは拾えているようでした
ただ、ダイアログを離れた場合のビットマップの表示が解決できてません。
なんとか描画は解決いたしました。

ぬふや 2007/03/05(月) 13:56:38
どう解決したのか書いたほうがいいと思う。

シャノン 2007/03/05(月) 16:08:56
GetDCじゃなくてCreateDCなら描けた気がする。

ジョージア 2007/03/05(月) 16:19:14
dcDesktop.CreateDC("DISPLAY", NULL, NULL, NULL);
dcMem.CreateCompatibleDC(&dcDesktop);
として書き込みました。が、残像が残る問題が出てしまい。苦しんでおります。
クライアント領域ハンドル取得 HWND hwnd = ::WindowFromPoint(pt);
として、現在のオブジェクトハンドルを取得して、そこの座標に変換して
前回の座標を更新しようとしているのですがうまくいきません。
前回の座標からクライアントの座標に直したときにタイトルバーの分
おかしくなっている気がします。

シャノン 2007/03/05(月) 16:52:45
できれば掲示板の修正を待ってほしい。雑談ラウンジに書くのもありだろう。

古いスレッドには追加発言できません。