マウスカーソルを移動させるプログラムですがうまく動きません。
どこがおかしいか、ご指摘ください。
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 );
}
上手くいかなくてどうなるのか。
とりあえず、
・自分のWindowにフォーカスがないとカーソルは動かない。
・自分のウィンドウでも子ウィンドウにフォーカスがあってもカーソルは動かない。
・キーを押した瞬間以外でもこのメッセージは飛んでくる。
は分かるけど。
回答ありがとうございます!
実行で現われたウインドウをクリック。(一応フォーカスのつもりです。)
それから、↑→↓← キーを押す(カーソルなど何も現われない。)
GetCursorPos()で現在の位置を取得し、
SetCursorPos()でカーソル位置を移動してるはずですがうまくいきません。
解る方お願いします!
教えてください!
関数の説明読んでますか?
>マウスカーソル( マウスポインタ)の位置を、指定されたスクリーン座標に
>移動します。ただし、ClipCursor 関数によって設定された長方形よりも
>外側を指定すると、システムは座標を自動的に調整して、この長方形の中に
>とどまらせます。
「ClipCursor 関数によって設定」は、行っていますか?
そうでしたか!
本当にどうもありがとうございました!