0

概要:
2 つのユーティリティがあり、どちらも同じ共通のインターフェイスを持っています。つまり、「ユーザー名を要求する」ダイアログ ボックスを開きます。
「ユーザー名のリクエスト」のコードは別のライブラリに記述されており、これらのユーティリティは両方ともそのライブラリを呼び出します。

問題:

1 つのユーティリティでは正常に動作し、ユーザー名を要求するこのダイアログ ボックスが表示されましたが、他のユーティリティでは表示されません。

私の調査: より深い調査で、これらのユーティリティの両方が CDialog::DoModal() を呼び出し、次に onCreate() を呼び出すことがわかりました。私の他のユーティリティでは、ブレークポイントが onCreate function にヒットすることはありません。理由はありますか?

サンプルコード

// IN actual Utility
//somewhere in code 

Dialog_for_common_interface dlg( message.c_str(), "Please enter username:" );

        CString username;

        bool is_correct = ( dlg.DoModal(username) == IDOK )

// IN Dialog_for_common_interface

int  Dialog_for_common_interface::DoModal ( CString &_reply_c )
{
    int result_i = CDialog::DoModal(); // break point hits this but value of result_i = -1;

    if ( result_i == IDOK )
    {
        _reply_c = reply_c;
    }

    return result_i;
}

// Breakpoint nver hits the below function

int Dialog_for_common_interface::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
    if (CDialog::OnCreate(lpCreateStruct) == -1)
        return -1;

    SetWindowText( title_c );

    return 0;
}
4

1 に答える 1