ON_CONTROL_RANGEでKILLFOCUSをする方法

[戻る]
クリリン 2002/04/19(金) 17:53:11
いつもお世話になっています。
環境は、Win2000(SP2), VC6(SP5), MFC です。

現在、コントロールを配列番号で処理するコードを記述中なのですが、メッセージ毎に各コント
ロールのメンバ関数を記述するとコードが増えるばかりではなく、解りにくくなるので、VBの
ようしています。
で、ボタンの[OnClickedButton]処理はちゃんと動作するのですが、エディットボックスのロ
ストフォーカス処理が機能しません。何故なのでしょうか?
コーディングが悪いのであれば、指摘してください。よろしくお願いします。
下記にコードを記します。

ヘッダー側
  //{{AFX_MSG(CHogeDlg)
  //}}AFX_MSG
  afx_msg void OnClickedButton( UINT nID );
  afx_msg void OnKillfocusEdit( UINT nID );
  DECLARE_MESSAGE_MAP()

ソース側
  //{{AFX_MSG_MAP(CHogeDlg)
  //}}AFX_MSG_MAP
  ON_CONTROL_RANGE(BN_CLICKED, IDC_BTN, IDC_BTN, OnClickedButton)
  ON_CONTROL_RANGE(BN_KILLFOCUS, IDC_EDIT, IDC_EDIT, OnKillfocusEdit)

void CHogeDlg::OnKillfocusEdit( UINT nID ) 
{
  ここでブレイクポイントを設けて、フォーカスを移動してもブレイクしません。
}

Bun 2002/04/19(金) 18:11:51
ソース側
>BN_KILLFOCUS

エディットですよね。

クリリン 2002/04/19(金) 18:19:58
はい、エディットボックスです。
やはり、メッセージが違いますか?
でも、コンパイルでは何も指摘されないのですが・・・

sara 2002/04/19(金) 18:33:08
コンパイラは型チェックはしても値の妥当性まではチェックしてくれないと思います。
エディットコントロールなら EN_* を使います。

クリリン 2002/04/19(金) 18:37:07
Bunさん、saraさん、レスありがとうございます。
早速、
ON_CONTROL_RANGE(EN_KILLFOCUS, IDC_EDIT, IDC_EDIT, OnKillfocusEdit)
としてみたのですが、やはり、ブレイクしてくれません。
どうしてなのでしょうか?

Bun 2002/04/19(金) 18:39:29
>やはり、メッセージが違いますか?

エディットですから。

EN_KILLFOCUS = エディットノティファイ_KILLFOCUS でわ?

BN_HOGEHOGE はボタンノティファイ(ボタン通知ホゲ)の略です。

#試してませんけど。

>でも、コンパイルでは何も指摘されないのですが・・・

これはしょーがないですよねェ。指摘がなくっても。

クリリン 2002/04/19(金) 18:39:46
[[解決]]
すいません。できました。
ありがとうございました。

クリリン 2002/04/19(金) 18:46:04
何故出来なかったのかを報告します。
試したコントロールだけ、たまたま、ClassWizardでメンバ関数を作成していたのでした。

Bun 2002/04/19(金) 18:46:09
クリリンさん

すみません、何が悪くてブレイクしなかったんでしょうか?

クリリン 2002/04/19(金) 18:55:18
Bunさん、解決の時に書かなくてすいませんでした。
あの時は、一つだけ、ブレイクしていなかったのですが、質問的には解決したので、
まずは、解決・・・と思い、こちらの問題が解決してから、後に報告をしようと思ったもの
で・・・

Bun 2002/04/19(金) 18:59:39
すんません、またかぶっちゃいました。m(__)m

>何故出来なかったのかを報告します。

了解です。(^_^;

古いスレッドには追加発言できません。