CWnd :: OnCreate函数永远不会被调用

时间:2014-07-11 13:03:48

标签: c++ visual-studio-2010 mfc cwnd

概述:
我有2个实用程序,两个都有相同的公共接口,即打开一个对话框,以“"请求用户名"。” "请求用户名"的代码写在不同的库中,这些实用程序都调用该库。

问题:

在1实用程序中它工作正常,我得到了这个请求用户名的对话框,但在其他实用程序中它没有出现。

我的调查: 在深入研究中,我发现这两个实用程序都调用CDialog :: DoModal(),然后调用onCreate()。在我的其他实用程序断点中永远不会点击onCreate函数。知道为什么吗?

示例代码

// 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;
}

1 个答案:

答案 0 :(得分:0)

将对话框资源复制到两个exe项目中。并确保它们都对对话框资源使用相同的ID值。