Функция CWnd :: OnCreate никогда не вызывается

Обзор:
У меня есть 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

Решение

Скопируйте ресурс диалога в оба exe-проекта. И убедитесь, что они оба используют одно и то же значение идентификатора для ресурса диалога.

0

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector