アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは。
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);
}

どうぞ宜しくお願いします。

A 回答 (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));

では。
    • good
    • 0
この回答へのお礼

ありがとうございます!!
まだ試していないので、ひとまずのお礼です。

OnMouseMoveだとうまくいくのですかぁ。
なぜOnLButtonDownなどではダメなのか・・・・
う~ん、ウィンドウズ、よく分からないです(笑)。

これから試してみてもう一度お礼をのべますね。
本当にありがとうございました。

お礼日時:2002/11/12 19:36

#1補足です。



条件式でみてるのは、CWndクラス の OnMouseMove の引数である
UINT nFlags(現在仮想キーの状態)です。
この場合は「MK_LBUTTON=マウスの左ボタン」が押されているかです。

このメンバを使えば、ドラッグしてる最中だけカーソルが変わります。
試してみてください。
    • good
    • 0
この回答へのお礼

早速試してみたらうまくいきました!!

ドラッグしている間ずっとカーソルを変えるには、常にSetCursorしないといけなかったんですね。
だからOnLButtonDownだとダメなんですね。
(1回ずつ切り替えで出来ると思っていた)

ただ、ドラッグ中にウィンドウが少しちらついてしまいました。
(これはウィンドウの方に原因がありそうですね。
 ウィンドウのほうでBMPのアニメーションや 座標移動を頻繁にしているので)

もし、ちらつきが解消されたら、すごく見栄えがよくなります。
このまま調べてみますね。
(もしなにかありましたらアドバイスお願いします。)

とりあえず、目標の問題は解消されました。
感謝感謝です(^^)

それでは!!

お礼日時:2002/11/12 20:18

あのう、OnSetCursor()でカーソル変更しないと・・・

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!