No.5ベストアンサー
- 回答日時:
>EnterキーのKeyDown/Keyupと連動させればいいのだが、
>そのイベントが何故か拾えないのが辛い。
良く考えたら、API関数でEnterキーを判定すればよかった。
---
Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" _
(ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long
Private Declare Sub Sleep _
Lib "kernel32" ( _
ByVal dwMilliseconds As Long _
)
Private Declare Function GetAsyncKeyState Lib "user32.dll" _
(ByVal vKey As Long) As Integer
Private Const BM_SETSTATE = &HF3
Private Sub Command1_Click()
'Enterキーが押された?
If (GetAsyncKeyState(vbKeyReturn) And &H8000) Then
'ボタンを凹ます
Call SendMessage(Command1.hwnd, BM_SETSTATE, 1, ByVal 0&)
'Enterキーが放されるまで待つ
While GetAsyncKeyState(vbKeyReturn) And &H8000
Sleep 100
Wend
'ボタンを戻す
Call SendMessage(Command1.hwnd, BM_SETSTATE, 0, ByVal 0&)
End If
'ここにイベント処理
Beep
End Sub
# APIの勉強方法については↓を参考にして下さい
参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=162410
todo36さまになんて感謝の言葉を述べればよいのか、、、本当に本当にありがとうございます。教えていただいたコードを埋め込んだところ、Enterキーを押すと凹むようになりました。感激です、、、
昨日、教えていただいたサイトのコードもいろいろ試してみました。おっしゃる通りにコマンドボタンのkeydownイベントでは他のキーは受け付けても、Enterキーだけは認識することができませんでした。これはどうしてかは今後の悩みの種とし、今回はAPIを埋め込みんでみようと思います。
まだ基本的な部分が中途半端な段階でAPIをこなせるか不安ですが、教えていただいたサイトで確認しつつ、少しずつ身につけていこうと思います。
本当にありがとうございました。今後もよろしくお願いします。
No.4
- 回答日時:
BM_SETSTATEによってボタンを凹ます事は出来ます。
凹ます
Call SendMessage(Command1.hwnd, BM_SETSTATE, 1, ByVal 0&)
戻す
Call SendMessage(Command1.hwnd, BM_SETSTATE, 0, ByVal 0&)
EnterキーのKeyDown/Keyupと連動させればいいのだが、
そのイベントが何故か拾えないのが辛い。
参考URL:http://www.mvps.org/vbnet/code/intrinsic/buttonp …
この回答への補足
前回に続き、回答していただき本当にありがとうございます。しかも前回は、お名前の打ち間違えまでしてしまい、大変申し訳ありませんでした。(^-^;)ゝ
「BM_SETSTATE」は、APIというものなのでしょうか?todo36さんに教ていただいたサイトの内容に挑戦してみようと思います。
APIはまだ手をつけたことがないために時間がかかると思いますが、必ず結果報告させていただきます。
No.3
- 回答日時:
コマンドボタンで、凹んだ感じのイメージ処理は誰が行っているのかを考えてみましょう。
まず、コマンドボタンのMouseDownやMouseUpイベントって取れませんよね。また、Enterキーを押してもClickイベントが発生しますよね。
ということは、そこらへんのイベントの処理はすべてコマンドボタン自身が処理を行って、描画もしているということになります。
なので、普通は動作を変更することはできないと考えてください。
(WinAPIを駆使して標準ではないことをやれば可能だとは思いますが)
で、Pictureといったのは、PictureBoxコントロールのことです。
つまり、自分でボタンが出ているとき、へこんでいるときの画像を準備してあげれば、マウスイベントやキーボードイベントが受け取れるPictureBoxなら、任意のタイミングで画像を変更することでボタンを凹ませられますよ。
ということです。
この回答への補足
無事、解決に至りました。
コマンドボタンのkeydownイベントで「Enterキー」だけが認識できず、苦しんでいました。今回はtodo36様に教えていただいたコードを使うことにしました。
以後のプログラム作成時にはPictureBoxコントロールも頭に入れつつ、コードを組んでみようと思います。
ありがとうございました。今後もよろしくお願いします。
二度にわたり回答を頂くことができ、とても感謝しています。ありがとうございます。
とても親切な説明をしていただいたおかげで、だいぶ理解することができました。APIですか、、、これはちょっと難しい操作ですね(苦笑)
PictureBoxコントロールはまだ使ったことがないので、今後の課題とさせていただきます。
もう少し試し、結果報告させていただきます。
No.2
- 回答日時:
通常Enterキーではへこみません。
「スペース」キーを押している間のみへこむのではないですか?
どうしてもEnterでへこませたいのであればKeyDownで
Enterキーを判断して「スペース」キーを送るとか
OptionボタンのStyleプロパティをグラフィックスにして
代用するぐらいしか思いつきませんが。
この回答への補足
無事、解決に至りました。
コマンドボタンのkeydownイベントで「Enterキー」だけが認識できず、苦しんでいました。今回はtodo36様に教えていただいたコードを使うことにしました。
ありがとうございました。今後もよろしくお願いします。
回答していただき、本当にありがとうございます。
実は、、、「スペース」キーが使えることを全く知らず、「スペース」キーでのクリック状態のような動きを「エンター」キーに求めてしまっていました。(苦笑)
KeyDownを試してみましたが、「スペース」キーのように扱うことはできませんでした。KeyCodekの使い方が分からなかったので、アスキーコードも使ってみました。
Private Sub Command2_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then
KeyCode = vbKeySpace
End If
End Sub
あとはOptionボタンを使うという手もあったんですね。勉強になりました。
No.1
- 回答日時:
普通はへこみませんが・・・
メッセージボックスが出てきたとき、Enter押してへこみますか?
どうしてもへこませたいのであれば、Pictureなどで、押される前のイメージ、押されたときのイメージを準備し、マウスイベントやキーボードイベントでイメージを入れ替えることが必要です。
この回答への補足
早速の回答をしていただき、本当にありがとうございます。
私の相談の書き方がまずかったですね(苦笑)分かりにくい質問内容になってしまい、申し訳ありませんでした、、、
コマンドボタンをマウスでクリックした時、凹んだ感じのイメージ処理があると思います。Enterキーを押しても、マウスで押したようなイメージにしたかったのですが、これはPictureプロバディ(?)を使うしかないのでしょうか?ちょっと試してみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Android(アンドロイド) AQUOS sense6sの物理ボタン(アシスタントキー)に再生・一時停止を割り当てる方法 2 2022/08/09 00:37
- Word(ワード) IMEパッドがショートカットキーで開かないのですが。。。 5 2023/06/11 09:23
- オープンソース コマンドプロンプトのコードの実行方法を教えて欲しい 2 2022/11/26 20:45
- Windows 10 Windows10の再起動について 3 2022/09/21 21:30
- マウス・キーボード テンキーの設定がおかしくなっています。 5 2023/08/09 15:35
- マウス・キーボード win7 文字変換選択確定をテンキーでさせない 3 2023/03/05 16:29
- Visual Basic(VBA) VBA 登録ボタンを省略してエンターキーで作業 4 2022/07/09 22:29
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- その他(パソコン・周辺機器) チャレンジタッチ3 改造 アプリインストールできない 1 2022/07/01 14:43
- Windows 10 エクスプローラで希望の場所が表示できない 2 2023/06/29 15:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
フォームの再読み込み
-
Access VBA でデータペーストを...
-
ユーザーフォームに別シートか...
-
セルをマクロのボタンにしたい。
-
.NET(VB)でボタンの連打を防止...
-
プロシージャからイベントをコ...
-
VBA(エクセル)で自動的にボタン...
-
F10ボタンでMsgboxを開くとwind...
-
他フォームのクリックイベント取得
-
エクセルVBAでユーザーフォーム...
-
オプションボタンによっての表...
-
Excel マクロ 閉じるボタン
-
動的に作成したボタンオブジェ...
-
ボタンの状態
-
button をクリックしてもへこま...
-
ボタンコントロールの改行(Win...
-
【vb2005】 動的に作成されたCo...
-
初歩の質問です。
-
[Excel VBA]コマンドボタンの入...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
フォームの再読み込み
-
ユーザーフォームに別シートか...
-
VBA CommandButtonの文字ずれ
-
セルをマクロのボタンにしたい。
-
コマンドボタンやイメージにマ...
-
Excel VBA Application.caller...
-
VBAのボタンの位置が変わって困...
-
Access VBA でデータペーストを...
-
プロシージャからイベントをコ...
-
他のアプリケーションとの連携
-
閉じると「+」になり開くと「-...
-
C#で動的に作ったtextboxを消す。
-
ボタンをマウスで押し続けたと...
-
VBA でのボタンの移動について
-
ボタン
-
CommandButtonのCaptionを変化...
-
TextBoxでEnterキーを押すと、...
-
VB.net でトグルボタンを実現し...
おすすめ情報