プロが教えるわが家の防犯対策術!

C++6.0MFCで開発しております。

現在,CEditにスピンボタン(CSpinButtonCtrl)をSetBodyをして、関連付けております。

スピンボタンを使用して、複数のEditの中の合計値が50以上の値が入ったらメッセージを出したいのですが、
スピンボタンのONLbuttonDownのタイミングでEditの中身をチェックしたら、スピンボタンを押す前の値しか取得できませんでした。
そこで、ONLbuttonUpのタイミングでEditの中身をチェックするとスピンボタンを押した後の値が取得できたのでよしとしていたのです。

しかし、スピンボタンをずっと押し続けると、チェックをするタイミングがなく、合計50以上に数字が進んでしまいます。(スピンをはなすとメッセージがでます。)

そこで、CEdit側、スピン側のどちらでも結構ですので、50以上になった瞬間メッセージがでるようにしたいのですが、どのようにすればよいでしょうか?
もし、Notify等で、メッセージを取得する場合は、そのメッセージ名も教えて頂きたく思います。

お手数ですが、何卒よろしくお願いします。

A 回答 (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);
}
}

この回答への補足

Createしてる時にIDがありました!!!!!!!!!!

ありがとうございます!!!!

補足日時:2010/03/18 10:15
    • good
    • 0
この回答へのお礼

ありがとうございます。

このEditなんですが、このEditがある時にCreateして作っているのですが、その場合は、::OnEnChangeをどのようにしたらよいのでしょうか?

大変お手数ですがよろしくお願いします。

お礼日時:2010/03/18 09:55

質問の趣旨とは違うんですが


スピンボタンの設定範囲設定した方がいいのではないですか?
ちなみにSetRangeで設定できます
(但しこの関数使うと上下ボタンでの数値変化が逆になったかと思います)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A