Windows API を使用してウィンドウのみのアプリケーションを作成しているため、このウィンドウ内のすべてが Direct2D を使用して描画されます。
今、ウィンドウのクライアント領域の特定の部分にいくつかのファイルをドロップしたいので、メッセージを処理していますWM_DROPFILES
。ここでは問題ありません。これらの特定の領域にファイルがドロップされた場合、それらを正しく処理でき、すべてが正常に機能しています。ところで、私のウィンドウはDragAcceptFiles(hWnd, true)
、常にドラッグ/ドロップを受け入れます。
マウスがあるウィンドウの領域に応じてマウスカーソルを変えたい. ドロップを扱わない領域では、カーソルを無効なアイコンにしたい.私はドロップを処理します。正しいドロップ アイコンが必要です。
私が最初に気付いたのは、ファイルがウィンドウにドラッグされているときにメッセージが生成されないことです。このため、マウス フック ( WH_MOUSE_LL
using SetWindowsHookEx
) を追加しました。フックが処理されると、WM_MOUSEMOVE
メッセージだけを見るので、マウスがいる領域に応じてカーソルを変更できます。
問題はSetCursor
、ウィンドウがファイルのドラッグを受け入れるように構成されている場合、 が何もしないことです。何回呼び出しても、カーソルは常にドラッグ/ドロップ カーソルSetCursor
です。
このようにカーソルを変更することは不可能に思えますが、私が達成しようとしていることを行う他の方法はありますか?