カーソル

[戻る]
初心者 2007/01/27(土) 14:30:16
マウスカーソルを移動させるプログラムですがうまく動きません。
どこがおかしいか、ご指摘ください。


LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
    POINT pt;    
    switch( msg )
    {
    case WM_KEYDOWN:
        GetCursorPos(&pt);
        if(wp==VK_UP) pt.y -=5;
        if(wp==VK_DOWN) pt.y +=5;
        if(wp==VK_RIGHT) pt.x +=5;
        if(wp==VK_LEFT) pt.x -=5;
        
        SetCursorPos(pt.x,pt.y);
    return 0;

    case WM_DESTROY:  
        PostQuitMessage(0);
        return 0;
    }
    return DefWindowProc( hWnd, msg, wp, lp );
}

ぬふや 2007/01/27(土) 16:22:20
上手くいかなくてどうなるのか。
とりあえず、
・自分のWindowにフォーカスがないとカーソルは動かない。
・自分のウィンドウでも子ウィンドウにフォーカスがあってもカーソルは動かない。
・キーを押した瞬間以外でもこのメッセージは飛んでくる。
は分かるけど。

初心者 2007/01/27(土) 21:49:51
回答ありがとうございます!

実行で現われたウインドウをクリック。(一応フォーカスのつもりです。)
それから、↑→↓← キーを押す(カーソルなど何も現われない。)

GetCursorPos()で現在の位置を取得し、
SetCursorPos()でカーソル位置を移動してるはずですがうまくいきません。

解る方お願いします!
教えてください!

ITO 2007/01/27(土) 22:00:13
関数の説明読んでますか?
>マウスカーソル( マウスポインタ)の位置を、指定されたスクリーン座標に
>移動します。ただし、ClipCursor 関数によって設定された長方形よりも
>外側を指定すると、システムは座標を自動的に調整して、この長方形の中に
>とどまらせます。
「ClipCursor 関数によって設定」は、行っていますか?

初心者 2007/01/28(日) 00:21:07
[[解決]]
そうでしたか!
本当にどうもありがとうございました!

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