No.2ベストアンサー
- 回答日時:
>したがって、好きなボタンをクリックした時に選んだ種類によりマウスポインタを変更し
>マウスポインタを自由に動かし、好きな位置で再度クリックした時に、その場所に
>その種類を表示させ、マウスポインタを通常に戻す必要があります。
>イメージファイルは、curファイルにすることはできます。
>ボタンクリックで変更したりが可能な方法が知りたいのです。
コントロールの上にカーソル乗っかったらどうなるのか?
とか、まぁいろいろ考慮する必要はあるかと思いますが……。
VS2010EEでWin32プロジェクトのスケルトンをいぢってみました。
カーソルファイルは適当に。
# 当たり前ですがちゃんとファイルアクセスできるように。
WndProc()にstatic変数を用意。
# 他の方法でもかまいません。任意の期間寿命が保証される変数であればよい。
static HCURSOR hCursor[2];
WM_CREATEでカーソル読み込み。
case WM_CREATE:
hCursor[0] = LoadCursor(NULL, IDC_ARROW);
hCursor[1] = LoadCursorFromFile(_T("ドラゴンの手.Cur"));
break;
ボタン押下の代わりのイベントとしてメニュー操作を書き換え。
# ここでウィンドウクラスに登録されたカーソルを変更。
case IDM_EXIT:
//DestroyWindow(hWnd);
SetClassLong(hWnd, GCL_HCURSOR, (LONG)hCursor[1]);
break;
左クリック時にカーソルを戻すように追加。
case WM_LBUTTONDOWN:
SetClassLong(hWnd, GCL_HCURSOR, (LONG)hCursor[0]);
break;
ウィンドウクラスを変更しているので、「クライアント領域内」でしか有効ではありません。
他のコントロールや子ウィンドウの上に移動するとそのウィンドウクラスに設定されたカーソルに戻るでしょう。
また、戻すための契機として左クリックを設定していますが、これも「クライアント領域で」左クリックした場合のみになります。
他の子ウィンドウなどの場合は通知が来ないでしょうからよろしく処理してください。
想定しているボタンをクリックした後にマウスキャプチャーを設定したり移動可能な範囲を制限した上でシステムカーソルを変更する。という方法もあるでしょう。
大本の質問の
「curファイルにしなくてはいけないことは、わかりましたがそのファイルをどのように」については、APIで読み込むのもヨシ、実行ファイルのリソースとして登録してLoadCursor()で読み込むもヨシ、自由に使ってください。
# リソースから読み込む方法はキーワード検索すれば出てくるでしょう。
# もっともExpressEditionにはリソースエディタがありませんから実行ファイルのリソースにするにはちょっと面倒かも知れませんが。
質問者です。
当方、C++初心者のためなかなか難しいと思いますが
なんとなく理解できますので、ネットなど参考に
挑戦してみたいと思います。
誠にありがとうございました。
No.1
- 回答日時:
やりたいことがイマイチ見えませんが…
http://msdn.microsoft.com/ja-jp/library/cc411027 …
ですかね?
まぁ、SetCursor()APIだけだとおそらく期待している動作はしないと思いますけどね。
カーソル動かした瞬間にウィンドウクラスに定義されているマウスカーソルに戻されるでしょう。
またはシステムに登録されている標準のマウスカーソルに戻される。
http://exe.tyo.ro/2007/01/post_1.html
SetClassLong()APIでGCL_HCURSORを設定し直すか、SetSystemCursor()APIでシステムカーソルの変更を行うか…でしょう。
システムカーソルの変更にはそれなりの権限が必要になる…かも知れません。
# ユーザーごとの設定なので権限関係が要求されることは無いような気もしますけどね。
# コントロールパネルのマウス=>ポインタタブで設定できる内容だし。
この回答への補足
やりたいことは、以下のようなためです。
ゲームでたとえた方が判りやすいと思いますので、例えばとして書きます。
ボタンには色々な種類があって、花、とかケーキとか、イヤリングとかの種類があります。
例えば、花のボタンをクリックして、自分の好きなウィンドウ内の好きな位置に配置
したい時に、どのボタンを押したのかがわかり、マウスで配置位置まで持って行き
好きな位置でクリックしたら、その位置に花を配置します。
他のアイテムも同じように配置することができるようにしたいのです。
その時、押したボタンの種類をマウスポインタにすれば、通常のマウスポインタである
矢印などより、UI的にいいかと思います。
したがって、好きなボタンをクリックした時に選んだ種類によりマウスポインタを変更し
マウスポインタを自由に動かし、好きな位置で再度クリックした時に、その場所に
その種類を表示させ、マウスポインタを通常に戻す必要があります。
イメージファイルは、curファイルにすることはできます。
ボタンクリックで変更したりが可能な方法が知りたいのです。
以上、よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ボタンの表示の色、フォントを...
-
メッセージボックスを大きくす...
-
フォーム上のリストボックスに...
-
SetWindowLong()でタイトルバー...
-
VC++で「手のひらカーソル」を...
-
MFCダイアログボックスを最前面...
-
vbscriptで、ファイル選択ダイ...
-
ボタンの配置を変更したい
-
C# ボタンコントロール内で文字...
-
VC++ MFC エラーコード C2248 ...
-
ダイアログの表示位置の保存
-
ツールチップの表示
-
メッセージボックスのボタン文...
-
エクセル VBA 「Sub Auto_Open(...
-
リソースファイルとは・・・
-
ダイアログの一部を半透明化す...
-
ダイアログにプレビュー表示
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
グラフの交点の求め方(Excel)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
メッセージボックスを大きくす...
-
フォーム上のリストボックスに...
-
コンボボックスのドロップダウ...
-
ボタンの表示の色、フォントを...
-
メッセージボックスのボタン文...
-
vbscriptで、ファイル選択ダイ...
-
リソースファイルとは・・・
-
ダイアログの表示位置の保存
-
ダイアログボックスで指定した...
-
ダイアログの上のテキストボッ...
-
'int' から 'LPCSTR' に変換で...
-
confirmダイアログの表示文字に...
-
C# ボタンコントロール内で文字...
-
MFC ポップアップメニューのチ...
-
エディットコントロールの色の...
-
MFCダイアログボックスを最前面...
-
ボタンの配置を変更したい
-
ツールチップの表示
-
ダイアログにプレビュー表示
-
VC(Ver6.0)でダイアログサイズ...
おすすめ情報