• ベストアンサー

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を発行しなくなるのを阻止するために何か方法はないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

>プログラムのイニシャライズのために送ったのですが送らないで住むプログラムに変更しました 普通はそんな方法はとりません。 システムが何をするか分からないからです。 自分でメッセージを定義して、初期化処理を行うようするためのメッセージを送るほうが無難です。 WM_CREATEと同じ処理を初期化処理として行わせたいのであれば、初期化処理を関数化して自分で定義したメッセージでも呼び出せばいいのですし。 >作ったプッシュボタンを押してシステムがWM_COMMANDを送ってきた後キー関係のメッセージを送ってくれなくなります プッシュボタンがキーボードフォーカスを持ってのるでは? ボタンがキーボードフォーカスを持っていてもキー関連のメッセージを親ウィンドウが受け取りたいのであれば、サブクラス化をするしかないでしょう。

nubou
質問者

お礼

フォーカスが移ったというのをヒントにして コマンドの処理をしたあとSetFocus(hW)としてシステムに処理を返すようにすれば動くようになりました どうもありがとうございました

その他の回答 (1)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

何のためにそんなものを送るのですか? 通常、WM_CREATEをSendMessageする状況はありえないはずなのですが。 値があるはずのlParamに0を入れているのですから何が起こっても不思議ではありませんよ。

nubou
質問者

お礼

何のためにそんなものを送るのですか?: プログラムのイニシャライズのために送ったのですが送らないで住むプログラムに変更しました 実験の結果どうもSendMessageが悪さしたのではない事がわかりました 作ったプッシュボタンを押してシステムがWM_COMMANDを送ってきた後キー関係のメッセージを送ってくれなくなります ウィンドウサイズを変更してもリカバリされずアイコン化して元に戻したときにやっとWM_CHARを送ってくれるようになります WM_COMMANDをもらうようなことをしたあともWM_CHAR等キー関係のメッセージを受け取ることができるようにするにはどうしたらいいのでしょうか?

関連するQ&A