access VBA で、マウスカーソルを変更する方法を教えてください。斜め左下がりの両方向矢印カーソル や 斜め右下がりの両方向矢印カーソル さらに 4 方向矢印カーソルに変更したいのです。標準設定のマウスカーソル形状がそれぞれ異なる複数のPCで実行する予定なので、API関数の LoadCursorFromFile で直接ファイルからイメージを読み込む方法ではなく、Windows標準に設定されているカーソルを指定したいのです。LoadCursor(NULL, ・・・ 等も試しましたが、なんだかよく使い方が分からなくてうまくいきませんでした。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633

http://www.loadsystem.net/api/api26.htm

Accessで使えるAPI:ロードシステム(Loadsystem Inc.)

Windows標準のシステムカーソルはシステムディレクトリ下(拡張子 *.cur)にあるので、それをLoadCursorFromFileとすればよいのでは。

id:toru_kanno

すみません、私の説明が悪かったようです。Windows標準に設定されている・・・というのは、 コントロールパネルのマウスからユーザーが System に設定しているアイコンのことです。(恐らく)これはPCごとに違うので、 LoadCursorFromFile を使って設定すると、本来ユーザーが設定しているマウスカーソルとは違うものになってしまう可能性があるわけです。

分かりづらくて申し訳ありませんでした。

2003/06/02 23:05:20
id:shootingstar No.2

回答回数4ベストアンサー獲得回数0

Screen.MousePointer = 7

とかでだめでしょうか?

代入する値はURLを参考に(少し違うかもしれませんが)してください。

id:toru_kanno

Screen.MousePointer = 7 は 上下 2 方向を指している矢印のポインタを指定する場合です。VB の MousePointer プロパティを例えに使うならば、MousePointer の設定値が5,6,8等のものです。Access VBA の MousePointer プロパティにはこの設定値がありません。

2003/06/02 23:29:22
id:shootingstar No.3

回答回数4ベストアンサー獲得回数0

ポイント70pt

それでは、こんな感じでどうでしょうか?

Private Declare Function LoadCursor Lib ”user32” Alias ”LoadCursorA” (ByVal hInstance As Long, ByVal lpCursorName As Long) As Long

Private Declare Function SetCursor Lib ”user32” (ByVal hCursor As Long) As Long

Private Const IDC_ARROW = 32512&

Private Const IDC_WAIT = 32514&

Private Const IDC_SIZENESW = 32643&

Private Const IDC_SIZENWSE = 32642&

Private Const IDC_SIZEALL = 32646&

Public Sub SetCursorNESW()

Dim hCur As Long, lWait As Long

hCur = LoadCursor(0&, IDC_SIZENESW)

Call SetCursor(hCur)

’’ 重たい処理(この間だけ斜め左下がりの両方向矢印)

For lWait = 0 To 1000

Me.Caption = hCur & ” ” & lWait

Next

End Sub

id:toru_kanno

解決しました。

shootingstar さんのコードが参考になりました。

私も、LoadCursor(NULL, ・・・ を使おうと思っていたのですがうまくいかなくて質問したのです。

APIビューアからコピペしてくると、

Public Declare Function LoadCursor ・・・ lpCursorName As String) As Long

となってしまうんですね。

第2引数のTypeを String から Long に直さないとだめだったんです。

Public Declare Function LoadCursor ・・・ lpCursorName As Long) As Long

ありがとうございました。

2003/06/04 07:08:54

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません