Заголовок заголовка (AFX_IDS_APP_TITLE) неверен при использовании TaskDialogIndirect с MFC

#visual-c #mfc #taskdialog

#visual-c #mfc #taskdialog

Вопрос:

В моей STRINGTABLE у меня есть следующее:

введите описание изображения здесь

В моем коде, который я использую TaskDialogIndirect , я могу навести курсор на AFX_IDS_APP_TITLE :

введите описание изображения здесь

Я это очень понимаю… если ресурс не может быть найден, по умолчанию используется имя исполняемого файла. На данный момент это то, что я получаю:

введите описание изображения здесь

Тем не менее, когда я использую CTaskDialog конструктор, я получаю правильный заголовок:

введите описание изображения здесь

Поскольку TaskDialogIndirect я использую:

 sConfig.hInstance = AfxGetInstanceHandle();
 

Я также пытался:

 sConfig.hInstance = AfxGetResourceHandle();
 

Почему это происходит?

Ответ №1:

Когда вы смотрите на определение HINSTANCE в TASKDIALOGCONFIG нем говорится:

Дескриптор модуля, который содержит ресурс значка, идентифицированный членами pszMainIcon или pszFooterIcon, и строковые ресурсы, идентифицированные членами pszWindowTitle, pszMainInstruction, pszContent, pszVerificationText, pszExpandedInformation, pszExpandedControlText, pszCollapsedControlText или pszFooter.

Ошибка заключалась в том, что в нем был указан pszWindowTitle! Пока я загружал AFX_IDS_APP_TITLE в a CString , я не назначал его в структуре. Мне нужно было:

 sConfig.pszWindowTitle = strTitle.GetString(); 
 

И теперь все в порядке:

введите описание изображения здесь