
No.1ベストアンサー
- 回答日時:
★またお会いしましたね。
・『GetCursorInfo』API関数でグローバル・カーソルに関する情報を取得できます。
typedef struct {
DWORD cbSize; ←構造体サイズ
DWORD flags; ←表示状態
HCURSOR hCursor; ←カーソルのハンドル
POINT ptScreenPos; ←カーソルの位置
} CURSORINFO, *PCURSORINFO, *LPCURSORINFO;
上記の構造体と関数を使って『hCursor』を取得します。
その後に『LoadCursor』関数か、『LoadImage』関数であらかじめ定義されている
マウスカーソルのハンドルを取得します。このハンドルを使ってチェックすれば
どのカーソル状態か分かると思います。
下にサンプルを載せますが、試していませんので参考にして下さい。
サンプル:
static int table[] = {
IDC_APPSTARTING,
IDC_ARROW,
IDC_CROSS,
IDC_HAND,
IDC_HELP,
IDC_IBEAM,
IDC_ICON,
IDC_NO,
IDC_SIZE,
IDC_SIZEALL,
IDC_SIZENESW,
IDC_SIZENS,
IDC_SIZENWSE,
IDC_SIZEWE,
IDC_UPARROW,
IDC_WAIT,
0,
};
CURSORINFO ci = { sizeof(CURSORINFO) };
GetCursorInfo( &ci );
if ( ci.flags ){ ←カーソル表示あり
for ( int *nID = table ; *nID != 0 ; nID++ ){
if ( ci.hCursor == LoadCursor(NULL,*nID) ){
return( *nID ); ←カーソル定数(IDC_XXXX)を返す
}
}
return( -1 ); ←不明なカーソル(自作カーソル,リソースなど)
}
return( 0 ); ←カーソル非表示
解説:
・上記の戻り値で判定できます。
『-1』...カーソル定数以外
『0』....カーソルは非表示
上記以外は『IDC_XXXX』定数を返す。
・『LoadCursor』のハンドルも最初の1回だけ取得して static な変数に保存しておけば
毎回 LoadCursor しなくても良いかもしれません。
いろいろと改良してみて下さい。
・それから『ci.hCursor』ハンドルで HBITMAP ハンドル同様に画像が取れると思います。多分。
・念のため、この方法で出来るか試していません。あくまでも参考に!
余談:
・前回の質問の『ウインドウ位置の自動移動の解除』で問題は解決したようですが、
『WM_NEXTSIZE』というメッセージは『WM_EXITSIZEMOVE』のことですか?
・ウインドウ・メッセージを探しましたが『WM_NEXTSIZE』は見つかりませんでした。
・もしよければ教えて下さい。お願いします。
いつも丁寧にありがとうございます。
なるほど!
HCURSORからどうやったら取れるのか調べても
ダメなはずです。
普通にハンドルからとろうとしてました。
頭固いですね(*´д`)
追伸:
WM_EXITSIZEとは、WM_EXITSIZEMOVEの間違いです。
指摘ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- マウス・キーボード マウスのないパソコン 9 2022/03/30 10:53
- マウス・キーボード マウスカーソルの変更について 1 2022/11/05 20:03
- Visual Basic(VBA) VBA 画面上のカーソルに文字数字を入力するコードを教えて下さい 1 2022/10/30 10:31
- Windows 10 パソコンの起動時、画面が黒いままのトラブルにつきまして。 4 2022/10/02 18:02
- 雇用保険 雇用保険の基本手当ての資格取得に関して。 資格取得自体は、離職した時点で勝手に取得されている状態にな 8 2023/01/18 14:08
- その他(OS) OSとは 14 2023/04/07 19:03
- 教師・教員 教員免許取得について 2 2022/09/29 10:03
- Windows 10 (緊急)windowsのタスクバーやアプリ?が反応しない 3 2023/03/28 05:03
- PostgreSQL 投稿記事と関連付けているテーブルがわからない 1 2022/04/27 20:29
- Excel(エクセル) クリップボードの件 2 2022/11/05 12:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SetWindowText関数について
-
VBでRegisterWindowMessage関数...
-
メッセージボックスの選択ボタ...
-
VBAでコントロールのハンドルを...
-
WM_CLEARなど使えないメッセー...
-
16進数入力制限方法
-
点滅で知らせる方法
-
マウスの左クリックの内容を知...
-
Sendkeysのタイミング
-
windowsメールスロットについて...
-
CloseHandle()
-
デスクトップ上のアイコンの位...
-
グラフの交点の求め方(Excel)
-
エクセルで作った新しいウイン...
-
コントロールの書式設定で、“コ...
-
コンボボックス内の文字サイズ変更
-
「アイテムは収集されました」...
-
エクセルのコントロールツール...
-
ラジオボタンの初期指定
-
Minecraft 統合版(PC)の描画距...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vbaから他のアプリを終了
-
msgboxの表示位置
-
メッセージボックスの選択ボタ...
-
SetWindowText関数について
-
他のウィンドウのボタンを自動...
-
VB.netでFindWindowExやると・...
-
デスクトップ上のアイコンの位...
-
メッセージハンドラ
-
VBAでコントロールのハンドルを...
-
システム例外のメッセージを変...
-
VBでRegisterWindowMessage関数...
-
VC++(MFC)でタスクバーに常駐し...
-
VBA 複数セルが空白なら印刷さ...
-
16進数入力制限方法
-
グローバルフック(SetWindowsH...
-
マウスホイールをフックしたい
-
WM_NCLBUTTONUPについて
-
キーボード入力をHSPでさせたい...
-
点滅で知らせる方法
-
チェックボックスのキーダウン...
おすすめ情報