概述:
我有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;
}
答案 0 :(得分:0)
将对话框资源复制到两个exe项目中。并确保它们都对对话框资源使用相同的ID值。