Я перенес свой проект C ++ из Visual Studio 2005 в Visual Studio 2017 Professional, и при сборке в режимах отладки и выпуска я получаю следующие ошибки:
1.
В отладкепостроить, когда я использую SetWindowTextA, как показано ниже, я получаю сообщение об ошибке "Ошибка C2039 'SetWindowTextA': не является членом" CStatic "
m_status_text.SetWindowTextA(theStr);
m_status_text объявлен как CStatic, как показано ниже:
CStatic m_status_text;
Если я использую SetWindowTextW, он вызывает ошибку в Release Build.
m_status_text.SetWindowTextW(theStr);
Когда я изменил его на «SetWindowText», как показано ниже, он работает для обоих отладкии выпускает сборки. Это правильный путь?
m_status_text.SetWindowText(theStr);
Насколько мне известно, когда мы используем "SetWindowText", в формате Unicode он обрабатывает его как "SetWindowTextW", а для формата многобайтовых символов он обрабатываеткак "SetWindowTextA".
Но как SetWindowText работает для сборок Debug и Release?
2.
А также можем ли мы использовать "_fgetts" вместо "fgets"(Для сборки выпуска) "fgetws" (Для сборки отладки) Как и в сборке отладки, если я использую "fgets", я получаю следующую ошибку:
char fgets (char , int,ФАЙЛ *): невозможно преобразовать аргумент 1 из 'TCHAR [260]' в 'char *'
fgets(currDir,MAX_PATH,f); // For release build
fgetws(currDir, MAX_PATH, f); // For Debug build
Могу ли я использовать "_tfopen" вместо "fopen" (для сборки выпуска) и "_wfopen" (для сборки отладки)
f = _tfopen (fileName, _T ("r"));
Вместо
f = fopen(fileName,"r"); // For release build
f = _wfopen(fileName, L"r"); // For Debug build
Пожалуйста, помогите мне в этом.