いつもお世話になります。VC++6.0 MFCで開発を行っています。先日 フックについて
質問させて頂きました。それを利用してマウスフックを行っています。その際に現在
マウスのデスクトップ上の位置に十字線や矩形を描きたいのですが、どうようにすれば
いいのでしょうか?? キャプチャーソフトなどではよく付加されている機能です。
また、指定色でラインを描画させることもできるのでしょうか??
ご教授よろしくお願いします。
ウィンドウ内に描画する方法はご存知でしょうか?
それが分かれば、CClientDC の代わりに CWindowDC を使うだけです。
CWindowDC dc(NULL); // NULLはデスクトップ
dc.MoveTo(100,100);
dc.DrawTo(200,200);
十字線というのはカーソルのことでしょうか。
LoadCursorでIDC_CROSSを指定すれば
十字カーソルのハンドルが返ります。
>LoadCursorでIDC_CROSSを指定すれば
>十字カーソルのハンドルが返ります。
MFCでした。
LoadStandardCursorかな。
dairygoods さん。subaruさん。ありがとうございます。
>CClientDC の代わりに CWindowDC を使うだけです。
おかげさまで うまくいきました。以前に少しだけですがCDCを利用したことがありま
したので、そこから調べていけばよかったのかと思いました。
>十字線というのはカーソルのことでしょうか。
いえ 現在のマウスのあるところに十字線を描くということです。
しかしながら 一つ疑問があります。フック時に WM_MOUSEMOVE メッセージの受け取
ると 現在のマウスのポジションにラインを描くという処理をしていますが このまま動
かすとずっとラインが残ってしまい デスクトップ上が十字線だらけになってしまいま
す。
いろいろ調べていくと ラインをXORで書きながら 以前のラインを消せばいいみたい
なのですが、ラインを XORモードみたいなを決めるメソッドってあるのですか??
また これを応用して矩形を書きたいのですが、矩形領域を塗りつぶさないブラシのモ
ードなどはあるのでしょうか??
長々と質問させていただきましたが よろしくお願いします。
>いろいろ調べていくと ラインをXORで書きながら 以前のラインを消せばいいみたい
>なのですが、ラインを XORモードみたいなを決めるメソッドってあるのですか??
線を引くならCDC::SetROP2が使えます。
塗りつぶすならCDC::InvertRectが使えます。
>また これを応用して矩形を書きたいのですが、矩形領域を塗りつぶさないブラシのモ
>ードなどはあるのでしょうか??
ついスルーしてしまいましたがRectangleで描くって意味かな?
NULL_BRUSHを使いたいならCreateStockObjectっていうのがありますけど・・・
subaruさん。dairygoods さん。ありがとうございます。
>線を引くならCDC::SetROP2が使えます。
はい。無事にラインおよび矩形を描くことができました。ありがとうございます。
今後もよろしくお願いします。