たびたび申し訳ありません。
イベントの取得方法についてご教授いただきたいです。
例えば、操作上にて「コンボボックス内のデータが切り替わった時」や
「テキストボックスにフォーカスが当たった時」などを拾い、見合った処理を
行ないたいのですが。VisualC++でいうなればWindowプロシージャに当たる記述方法についてご教授宜しくお願いいたします。
すいません、ちょっと内容を改めます。
当初の投稿内容に、「テキストにフォーカスが・・・」というのは省いて下さい。
「コンボボックス内のデータが切り替わった時」のプロシージャについて
ご教授ください。
用意してあるイベントに対応していないメッセージを拾いたいということでいいですよね?
それならば、SetWindowLong APIを使って、ウィンドウをサブクラス化することで行えます。
ただし、その間はデバッグがうまくできなくなる上(ブレークポイントなどで止めると、そのまま強制終了することがある)、エラーが一つ起こるたびに、いきなり強制終了することもあります。
あえて言うのなら、最終手段といったところかもしれません。
この手の操作はできれば、他の言語でやることをおすすめしますが、できない場合はそれを覚悟の上でやってください。
あと、サブクラス化中は開発環境の終了ボタンが使えません。
上と同じように強制終了します。
"デバッグ中はサブクラス化しない"という方法もありますけどね。
あ、確認はしてませんけど、SetWindowsHookExを使っても、できるのかもしれません。
理由はDelphiの非ウィンドウコントロール(Delphiにはウィンドウコントロールではないが、ウィンドウを持っているかのように動作できるグラフィックコントロールがある)で、このAPIを使って親ウィンドウのメッセージをもらっているという話を、聞いたことがあるからです。
あんまり話を理解できてないので、間違った解釈をしているかもしれませんが。
>SetWindowLong APIを使って、ウィンドウをサブクラス化することで行えます。
>SetWindowsHookExを使っても、できるのかもしれません。
どちらでも可能ですが、サブクラス化で対応できるなら、
フックする必要はないでしょう。
>あえて言うのなら、最終手段といったところかもしれません。
納品物として作っているのなら、SpyWorksのような
市販のサブクラスコントロールを使ったほうがいいかもしれません。
検証時間が無いため、とりあえず解決とします。
Sayさん、たかみちえさん、またよろしくお願いします。
ツイート | ![]() |