1

を実装したダイアログに CEdit フィールドがあるEN_KILLFOCUSため、ユーザーが無効なデータを入力すると、フォーカスがこのフィールドから離れ、フォーカスが CEdit フィールドに戻ったときに警告メッセージが表示され、ユーザーが適切なデータを入力できるようになります。ユーザーが無効なデータを入力して CANCEL ボタンをクリックすると、警告メッセージも表示されます。ユーザーが [キャンセル] ボタンをクリックしたときに PostQuitMessage を実装しようとしましたが、これによりアプリケーション全体が閉じます。ユーザーが [キャンセル] ボタンをクリックしたときにダイアログのみを閉じたい。[キャンセル] ボタンをクリックした後、すぐにダイアログを閉じる方法はありますか。これは私が試したコードです。

void CMARPropWnd::OnParentNotify(UINT message, LPARAM lParam)   
{
    CCDialog::OnParentNotify(message, lParam); 
    // TODO: Add your message handler code here 
    CPoint ptButtonDown(LOWORD(lParam),HIWORD(lParam)); 
    if ((message == WM_LBUTTONDOWN)  && (ChildWindowFromPoint(ptButtonDown) == GetDlgItem(eMARPropWndCancelBtnId))) 
    { 
        PostQuitMessage(0);
    } 
}
4

1 に答える 1

0

試す

OnCancel();

PostQuitMessage(0) の代わりに;

OnCancel() は CDialog の仮想メソッドであるため、これが「最も正しい」ものであり、デフォルトの CDialog の動作をオーバーライドする可能性のある特別なコードを実行することに注意してください。

于 2014-12-29T18:39:51.057 に答える