掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
次フォーカスコントロール取得方法について (ID:107955)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
例えば、Form上にText1,Text2,Text3を置いて実行し、 Text1からtext3へマウスクリックでFocus移動した場合、 Text1_Validate Text3_MouseDown Text1_LostFocus Text3_GotFocus Text3_MouseUp Text3_Click の順でイベントプロシージャを実行します。 (インタプリタ上での実験結果です。コンパイルや、 配置コントロールなどで変化するかもしれません。) これを見る限りValidate時点で次のFocusはわかりません。 サブクラス化してWM_LBUTTONDOWNを拾ってみると、 Text1_Validate WM_LBUTTONDOWN(SubClass) Text3_MouseDown Text1_LostFocus Text3_GotFocus Text3_MouseUp Text3_Click の順になりますから、サブクラス化でも無理です。 ところが、ローカルフックでWM_LBUTTONDOWNを拾えば、 WM_LBUTTONDOWN(Local Mouse Hook) Text1_Validate Text3_MouseDown Text1_LostFocus Text3_GotFocus Text3_MouseUp Text3_Click の順で発生しますから、 ローカルマウスフックのコールバック関数内で、 押されたコントロールを調べてオブジェクト変数に入れておけば、 Validateで次Focusコントロールを拾うことが可能です。 (ただし、これも1つのモデルのテスト結果にすぎません。 これとは違う結果をもたらすケースがないという保証はありません。) しかし、可能なら仕事上の納品物にフックは使いたくないところです。 SpyWorksのように市販ocxの中にはサブクラス化や一部のフックを 比較的簡単に実現できるものもあるようですから、 調べてみるといいかもしれません。 http://www.grapecity.com/Japan/spyworkspro/
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.