9年前お世話になります。WINAPIで色々とツールを作っているんですが、ボタンを押下させるには、ボタンをマウスでクリックするか、フォーカスをボタンに移動させてエンターキーを押せば動作すると思ってました。エンターキーではボタンは標準では押せないようになってました。そこで、サブクラス化を使って、専用のウィンドウプロシージャを用意し、ボタンコントロールのウィンドウプロシージャを、そのプロシージャにすげ替えて,WM_KEYDOWNメッセージが発生したときに、SendMessage(hwnd,BM_CLICK,NULL,NULL);でメッセージを投げて、ボタンを押下するようにしました。問題なく動くんですが、たったこれだけのためにサブクラス化までしなくちゃいけないのかなぁと、ほかに方法があるのではないかと思い、質問させていただきました。9年前>>kimuchiさん、ありがとうございます。調べてみると、特定のキーと組み合わせて使う必要があるそうですね。ctrlとかのボタンを押しながらとなると、ちょっと面倒臭いので、それなら今一応動いているサブクラス化の方を使いますねぇ。申し訳ないですが、アクセラレータキー以外の方法が良いですね。なければ、以降はスルーで結構ですので。私のところではエンターキー単体で動作できるのですが・・・リソースで設定する方法ですがそれでは問題がありますか?一応コードを載せておきます。9年前あれ?wできましたか?wすいません。9年前フォーカスが合っているボタンならENTERできるはずですよ。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。9年前>>kimuchiさんこれってボタンが複数あるときには不可能じゃないですかね?一つ一つ違うキーを割り当てないといけない気がするのですがどうでしょう?>>softyaさんフォーカスをあわしてやっているんですが、できなかったんです。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。体調悪いので、続きは明日にします。>>softyaさんタブキーでもあわせてみましたし、クリックでも合わせてみましたがダメでした。マウスでクリックしたときはWM_COMMANDメッセージを受け取って、WPARAMの下位ワードからIDを調べて処理をしています。追記:00:39エンターキーを押しただけでは、何も反応無かったので、WM_COMMANDは発生していないと思われます。風邪が流行ってみるので無理なさら無いように。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。自分のところではボタンに振ったIDを設定しています。9年前>>KIMUCHIさんそれは理解していたので大丈夫です。BM_CLICKはボタンを押させるためのメッセージです。これを投げるとWM_COMMANDが発生するので、ボタン押下時の処理をさせることができます。