- ベストアンサー
ドラッグしたときにマウスカーソルを変更するには?
こんにちは。 VC6.0 MFCで開発しています。 マウスカーソルの形状をウィンドウをドラッグしているときとしていないときで 違ったものに変更したいのですが、うまくいきません。 ソースはこんなふうにしています。 ↓ void CTest::OnLButtonDown(UINT nFlags, CPoint point) { //変更する SetCursor(AfxGetApp()->LoadCursor( IDC_CUR2 )); CDialog::OnLButtonDown(nFlags, point); } void CTest::OnLButtonUp(UINT nFlags, CPoint point) { //元に戻す SetCursor(AfxGetApp()->LoadCursor( IDC_CUR1 )); CDialog::OnLButtonUp(nFlags, point); } どうぞ宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
「OnLButtonDown」や「OnLButtonUp」ではなくて、「OnMouseMove」だとうまくいきましたよ。 -------------------------------------------------------------- void CTestDlg::OnMouseMove(UINT nFlags, CPoint point) { if(nFlags==MK_LBUTTON) { // カーソルファイルを読む込む場合 SetCursor(AfxGetApp()->LoadCursor( IDC_CURSOR1 )); } CDialog::OnMouseMove(nFlags, point); } -------------------------------------------------------------- ちなみに、Windows標準のカーソルの場合はこうです。 SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT)); では。
その他の回答 (2)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
あのう、OnSetCursor()でカーソル変更しないと・・・
- uratan
- ベストアンサー率30% (38/124)
#1補足です。 条件式でみてるのは、CWndクラス の OnMouseMove の引数である UINT nFlags(現在仮想キーの状態)です。 この場合は「MK_LBUTTON=マウスの左ボタン」が押されているかです。 このメンバを使えば、ドラッグしてる最中だけカーソルが変わります。 試してみてください。
お礼
早速試してみたらうまくいきました!! ドラッグしている間ずっとカーソルを変えるには、常にSetCursorしないといけなかったんですね。 だからOnLButtonDownだとダメなんですね。 (1回ずつ切り替えで出来ると思っていた) ただ、ドラッグ中にウィンドウが少しちらついてしまいました。 (これはウィンドウの方に原因がありそうですね。 ウィンドウのほうでBMPのアニメーションや 座標移動を頻繁にしているので) もし、ちらつきが解消されたら、すごく見栄えがよくなります。 このまま調べてみますね。 (もしなにかありましたらアドバイスお願いします。) とりあえず、目標の問題は解消されました。 感謝感謝です(^^) それでは!!
お礼
ありがとうございます!! まだ試していないので、ひとまずのお礼です。 OnMouseMoveだとうまくいくのですかぁ。 なぜOnLButtonDownなどではダメなのか・・・・ う~ん、ウィンドウズ、よく分からないです(笑)。 これから試してみてもう一度お礼をのべますね。 本当にありがとうございました。