SendMessage(hW,WM_CREATE,0,0);を
SendMessage(hW,WM_CREATE,0,0);
を実行するとシステムがWM_DOWNやWM_CHARを発行しなくなるみたいです
というのはそれ以降キー入力を無視するようになるのです
いったんアプリをアイコン化してウィンドウ化するとWM_DOWNやWM_CHARを発行するようになります
WM_CREATEを送ってもWM_DOWNやWM_CHARを発行しなくなるのを阻止するために何か方法はないでしょうか?
回答(2件)
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示
No.2ベストアンサー20pt
>プログラムのイニシャライズのために送ったのですが送らないで住むプログラムに変更しました
普通はそんな方法はとりません。
システムが何をするか分からないからです。
自分でメッセージを定義して、初期化処理を行うようするためのメッセージを送るほうが無難です。
WM_CREATEと同じ処理を初期化処理として行わせたいのであれば、初期化処理を関数化して自分で定義したメッセージでも呼び出せばいいのですし。
>作ったプッシュボタンを押してシステムがWM_COMMANDを送ってきた後キー関係のメッセージを送ってくれなくなります
プッシュボタンがキーボードフォーカスを持ってのるでは?
ボタンがキーボードフォーカスを持っていてもキー関連のメッセージを親ウィンドウが受け取りたいのであれば、サブクラス化をするしかないでしょう。
この回答へのお礼
フォーカスが移ったというのをヒントにして
コマンドの処理をしたあとSetFocus(hW)としてシステムに処理を返すようにすれば動くようになりました
どうもありがとうございました
何のためにそんなものを送るのですか?
通常、WM_CREATEをSendMessageする状況はありえないはずなのですが。
値があるはずのlParamに0を入れているのですから何が起こっても不思議ではありませんよ。
この回答へのお礼
何のためにそんなものを送るのですか?:
プログラムのイニシャライズのために送ったのですが送らないで住むプログラムに変更しました
実験の結果どうもSendMessageが悪さしたのではない事がわかりました
作ったプッシュボタンを押してシステムがWM_COMMANDを送ってきた後キー関係のメッセージを送ってくれなくなります
ウィンドウサイズを変更してもリカバリされずアイコン化して元に戻したときにやっとWM_CHARを送ってくれるようになります
WM_COMMANDをもらうようなことをしたあともWM_CHAR等キー関係のメッセージを受け取ることができるようにするにはどうしたらいいのでしょうか?
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示











