- ベストアンサー
CEdit の内容が変わった時にメッセージを表示させたい
C++6.0MFCで開発しております。 現在,CEditにスピンボタン(CSpinButtonCtrl)をSetBodyをして、関連付けております。 スピンボタンを使用して、複数のEditの中の合計値が50以上の値が入ったらメッセージを出したいのですが、 スピンボタンのONLbuttonDownのタイミングでEditの中身をチェックしたら、スピンボタンを押す前の値しか取得できませんでした。 そこで、ONLbuttonUpのタイミングでEditの中身をチェックするとスピンボタンを押した後の値が取得できたのでよしとしていたのです。 しかし、スピンボタンをずっと押し続けると、チェックをするタイミングがなく、合計50以上に数字が進んでしまいます。(スピンをはなすとメッセージがでます。) そこで、CEdit側、スピン側のどちらでも結構ですので、50以上になった瞬間メッセージがでるようにしたいのですが、どのようにすればよいでしょうか? もし、Notify等で、メッセージを取得する場合は、そのメッセージ名も教えて頂きたく思います。 お手数ですが、何卒よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 CEdit側のOnEnChande()ハンドラで引っかけて見て下さい。 void CTestDlg::OnEnChangeEdit1() { // TODO: これが RICHEDIT コントロールの場合、このコントロールが // この通知を送信するには、CDialog::OnInitDialog() 関数をオーバーライドし、 // CRichEditCtrl().SetEventMask() を // OR 状態の ENM_CHANGE フラグをマスクに入れて呼び出す必要があります。 // TODO: ここにコントロール通知ハンドラ コードを追加してください。 const int val = this->GetDlgItemInt(IDC_EDIT1); if(val >= 50) { ::MessageBox(NULL, NULL, NULL, IDOK); } }
その他の回答 (1)
- koi1234
- ベストアンサー率53% (1866/3459)
質問の趣旨とは違うんですが スピンボタンの設定範囲設定した方がいいのではないですか? ちなみにSetRangeで設定できます (但しこの関数使うと上下ボタンでの数値変化が逆になったかと思います)
お礼
ありがとうございます。 このEditなんですが、このEditがある時にCreateして作っているのですが、その場合は、::OnEnChangeをどのようにしたらよいのでしょうか? 大変お手数ですがよろしくお願いします。
補足
Createしてる時にIDがありました!!!!!!!!!! ありがとうございます!!!!