サイズが128x128のカーソルがありますが、LoadCursorを使用してロードして表示すると、32x32しかありません。どの API が正しく作成できますか? MSがサイズを変更しているようです。ありがとう。
3 に答える
Windows XP には、32x32 より大きいシステム カーソルは含まれていません。(より大きなカーソルが含まれている場合、標準 API がカーソルをロードするときに 32x32 に引き伸ばされます。)
高 DPI システムの場合、Windows XP は SM_CXCURSOR と SM_CYCURSOR の値を 64x64 ピクセルに調整しました。このサイズ調整は、マウス ポインタが小さすぎて有効に使用できないために事実上消えないようにするためのものです。システムのその他の側面は DPI に合わせてスケーリングされますが、マウス ポインターはスケーリングされません。Microsoft は、マウス ポインターに DPI に依存しないサイズを適用しようとはしていません。
システムは、特定のカテゴリのシステム カーソルを変更するために使用できる SetSystemCursor API 関数も提供します。この関数を使用して、任意のサイズのカーソルを設定できます。ただし、プログラムで関数を呼び出す必要があり、特定のカテゴリのカーソルを設定するためにのみ使用できます。システム上のすべてのカーソルを同じサイズにするために使用することはできません。
LoadCursor を使用しないでください。代わりに LoadImage() を使用してください。
SM_CXCURSORbySM_CYCURSORは、システムが現在使用できる唯一のカーソル サイズです。GetSystemMetricsこれらの値を見つけるために使用します。