警告メッセージの回数制限


kimi  2011-10-13 05:43:43  No: 72949  IP: [192.*.*.*]

Value型(int型)のEDITBOXからUpdatedataで数字を取込んでいます。

EDITBOXが空白の場合に発生する「Please input an integer」の
警告メッセージが連続して表示される回数の制限、もしくは、
警告メッセージが全く表示されないようにする事は出来ないでしょうか?

現在は、一定時間毎にUpdatedataを行っており、EDITBOXが空白のままだと、
警告メッセージダイアログが10個以上表示されてから、EDITBOXに以前入力していた1桁目の数字が自動的に書き込まれて警告メッセージの追加表示が
終わります。このVC++が自動的に行っている警告メッセージの出現回数の
制限の変更をしたいのですが、出来ないでしょうか?

よろしくお願い致します。

編集 削除
gak  2011-10-13 18:13:52  No: 72950  IP: [192.*.*.*]

> 警告メッセージが全く表示されないようにする事は出来ないでしょうか?
Updatedata() を関連の機構に「エラーメッセージを表示しない」とかのオプションは無い様だから自力で何とかする。
UpdateData() を使う方向で対応したいのならDDXルーチンを自作すれば良いかと

void dialog::DoDataExchange(CDataExchange* pDX) {
    CDialog::DoDataExchange(pDX);
//  DDX_Text(pDX, IDC_EDIT1, edit1_);
    myDDX_TextInt(pDX, IDC_EDIT1, edit1_); // ↑を自作DDXルーチン←に置き換え
}

void PASCAL myDDX_TextInt(CDataExchange* pDX, int nIDC, int& value) {
    if (pDX->m_bSaveAndValidate) { // UpdateData(TRUE)
        BOOL result;
        const int v = int(pDX->m_pDlgWnd->GetDlgItemInt(nIDC, &result, TRUE));
        if (result) {
            value = v;
        }
        else {
            // 取得に失敗したが、今回はエラーメッセージ出したりとかしないでスルー
//          pDX->Fail();
        }
    }
    else { // UpdateData(FALSE)
        pDX->m_pDlgWnd->SetDlgItemInt(nIDC, value, TRUE);
    }
}

編集 削除