カーソルの変化

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: カーソルの変化

by 雷電 » 2006年12月16日(土) 15:51

できました。
7さん、ありがとうございます。
こんな計算をしているのかと、コードを見ながら考えています。
色の変化は、以前に質問したのでそれを見ながら考えます。

by 7 » 2006年12月16日(土) 00:37

> この件についてはOKですが、アイテム(Static1)の座標を計算して、その上にカーソル(ポインタ)が触れたら変えるというのはまだ実装できていません。
>
> どのように実装したらよいでしょう? コメント書いてないので分かり難いかもしれません...。

スタティックコントロールに関連付けられているマウスカーソルのハンドルを、SetClassLong・SetClassLongPtr関数を使ってIDC_HANDに変更してしまえばもっと簡単なんじゃないかと思ったんですけど、どうやら無理みたいです。

by 雷電 » 2006年12月15日(金) 22:56

できました。
この件についてはOKですが、アイテム(Static1)の座標を計算して、その上にカーソル(ポインタ)が触れたら変えるというのはまだ実装できていません。

どのように実装したらよいでしょう?

Re: カーソルの変化

by Tomorrow » 2006年12月15日(金) 07:20

WM_SETCURSORメッセージにて

コード: 全て選択

SetCursor(LoadCursor(NULL, IDC_HAND))
で、いいのでは?

by OverTaker » 2006年12月14日(木) 23:24

検索すればすぐに出てきますよ。
OCR_HAND=32649みたいです。

by 雷電 » 2006年12月14日(木) 23:05

置き換えてやってみましたが、
OCR_HAND
が無効な識別子になってしまいます。
定数かなにか、加えるものがありそうな気がするのですが・・・

by イグトランス » 2006年12月14日(木) 22:54

CreateCorsor(...)の部分をLoadImage(0, OCR_HAND, IMAGE_CURSOR, 0, 0, LR_DEFAULTSIZE)にしたら良いと思います。
ただしこれはcomctl32.dllのアイコンではなく,ユーザが(マウスのプロパティから)設定したアイコンになるはずです。

またこの方法で指差しのカーソルを読み込む方法は,Windows 2000以上で使えることになっていますが,
インターネットを検索してみたところ,Windows 9xでも使えると言う話も見かけます。
Windows 2000以前でも確実に対応したいのでしたら,レジストリの設定を読み込んでやることになるでしょう。

by 雷電 » 2006年12月14日(木) 21:29

やってみたところ、ちゃんと動きますね。
ですが、指を刺しているカーソル(こんな感じ)が表示したいのですが、system32のフォルダを調べてみると、comctl32.dllこのライブラリの中のリソース108が僕の望むカーソルなのですが・・・どうやって取り出すのか・・・

by 雷電 » 2006年12月14日(木) 20:52

7さん、ゆちボンさん、コード提供ありがとうございます。
一応、ゆちボンさんのだけやってみたんですが、?が分からないため、NULLで試したところ、エラーが出てコンパイルが止まりました。
GetModuleHandleのパラメータがおかしいとか?
・・・なぜこんなエラーが出るのか不思議です。

スタッティックの文字の上にあると色とポインタ(カーソル)を変更するようにしたいんです。
7さんのコードも今からやってみようと思います。

Re: カーソルの変化

by 7 » 2006年12月14日(木) 20:42

ウィンドウズ内臓?のカーソルに限られますけど。

> 最近、カーソルをある位置に移動させると、カーソルが変わるように設定しようとたくらんでいます。
カーソルが移動する度にメインウィンドウ内のある位置にカーソルが存在するか判定し、カーソルが存在する場合イメージを変更するようにするといいと思います。

Re: カーソルの変化

by MML » 2006年12月14日(木) 16:15

こんにちは。ゆちボンです。
> http://www.winapi-database.com/Graphics ... ursor.html
ちなみに、僕もこのサイトにお世話になってます(^^;

そういうことはおいといて、早速ですが、
引数の1個目は「カーソルのハンドル」、つまり、
「CreateCursor」でカーソルを作って返ってくる、ハンドルを指定します。

引数の2個目はIDの指定つまり、
普通に使っているときのカーソルと指定したハンドルのカーソルを入れ替える
というものです。
だから、Iビーム(文字入力時にでるカーソル)を指定したカーソルハンドルと
入れ替えます。

コード: 全て選択

'定義
Dim hMouse As DWord
Const IDC_IBEAM = 32513

'取得
'hMouse = CreateCursor(GetModuleHandle(),0,0,13,20,?,?)

'Iビームカーソルをハンドル「hMouse」のものと入れ替える。
SetSystemCursor(hMouse,IDC_IBEAM)

'開放
DestroyCursor(hMouse)
使うときは取得の下で、hMouseに「CreateCursor」で取得してください。
「CreateCursor」はABのヘルプに乗っているのでわかると思うのですが
僕は?の部分がよくわからなかったので一応その行をコメントアウトしています。
注意として、必ず開放することと、
カーソルはウィンドウズのアプリケーション全部と共有しているので、一部分だけの変更にしたほうがいいと思います。

あとは、かなり詳しい方にお願いします。

カーソルの変化

by 雷電 » 2006年12月13日(水) 22:05

最近、カーソルをある位置に移動させると、カーソルが変わるように設定しようとたくらんでいます。
しかし、関数しか見つからず、細かいことは載っていません。
ご教授願えますか?

探したサイトはVBのやつでしたが、移植すれば問題ないので・・・

http://www.winapi-database.com/Graphics ... ursor.html

ページトップ