新しく質問する

SendMessage(hW,WM_CREATE,0,0);を

役に立った:0件
  • 質問者:nubou
  • 投稿日時:2003/01/25 07:13
  • 困り度:暇なときに回答をください
  • 友達に紹介
  • ブログに書く
  • 教えて!gooお気に入り

SendMessage(hW,WM_CREATE,0,0);
を実行するとシステムがWM_DOWNやWM_CHARを発行しなくなるみたいです
というのはそれ以降キー入力を無視するようになるのです
いったんアプリをアイコン化してウィンドウ化するとWM_DOWNやWM_CHARを発行するようになります
WM_CREATEを送ってもWM_DOWNやWM_CHARを発行しなくなるのを阻止するために何か方法はないでしょうか?

この質問への回答は締め切られました。
このQ&Aは役に立ちましたか?(役に立った:0件)
  • 参考になった:0件

No.2ベストアンサー20pt

  • 回答者:taka_tetsu
  • 回答日時:2003/01/26 02:00

>プログラムのイニシャライズのために送ったのですが送らないで住むプログラムに変更しました

普通はそんな方法はとりません。
システムが何をするか分からないからです。

自分でメッセージを定義して、初期化処理を行うようするためのメッセージを送るほうが無難です。
WM_CREATEと同じ処理を初期化処理として行わせたいのであれば、初期化処理を関数化して自分で定義したメッセージでも呼び出せばいいのですし。


>作ったプッシュボタンを押してシステムがWM_COMMANDを送ってきた後キー関係のメッセージを送ってくれなくなります

プッシュボタンがキーボードフォーカスを持ってのるでは?

ボタンがキーボードフォーカスを持っていてもキー関連のメッセージを親ウィンドウが受け取りたいのであれば、サブクラス化をするしかないでしょう。

通報する

この回答へのお礼

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

  • 参考になった:0件
  • 回答者:taka_tetsu
  • 回答日時:2003/01/25 11:57

何のためにそんなものを送るのですか?

通常、WM_CREATEをSendMessageする状況はありえないはずなのですが。

値があるはずのlParamに0を入れているのですから何が起こっても不思議ではありませんよ。

通報する

この回答へのお礼

何のためにそんなものを送るのですか?:
プログラムのイニシャライズのために送ったのですが送らないで住むプログラムに変更しました

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

  
このQ&Aは役に立ちましたか?(役に立った:0件)

このページのトップへ

Facebook公式ページ

公式Twitter