Я пытаюсь преобразовать предыдущий код в VS 2010. Код, который я пытаюсь преобразовать, упомянут ниже. Функция addCommand определяется как
addCommand(const ACHAR * cmdGroupName, const ACHAR * cmdGlobalName, const ACHAR * cmdLocalName, Adesk::Int32 commandFlags, AcRxFunctionPtr FunctionAddr,AcEdUIContext *UIContext=NULL, int fcode=-1, HINSTANCE hResourceHandle=NULL, AcEdCommand** cmdPtrRet=NULL)
Третий обязательный аргумент имеет тип ACHAR. Функция вызывается следующим образом.
char cmdLocRes[65];
// If idLocal is not -1, it's treated as an ID for
// a string stored in the resources.
if (idLocal != -1) {
// Load strings from the string table and register the command.
::LoadString(_hdllInstance, idLocal, cmdLocRes, 64);
acedRegCmds->addCommand(cmdGroup, cmdInt, cmdLocRes, cmdFlags, cmdProc);
Моя проблема в том, что переменная cmdLocRes имеет тип char, но аргумент должен быть типа ACHAR.
Как я могу конвертировать то же самое?
Фоллинг может дать вам представление о том, как его преобразовать.
// Convert char to wchar_t
char cmdLocRes [65];
// Замечание: убедитесь, что cmdLocRes содержит элементы!
cmdLocRes [0] = ‘A’;
cmdLocRes [1] = ‘\ 0’;
// Получить wstringstream
std :: wstringstream str;
// Записываем массив char в wstringstream
ул << cmdLocRes;
// Получить строку wstringstream
std :: wstring wstr = str.str ();
// Получить wchar_t из строки
const wchar_t * chr1 = wstr.c_str ();
const ACHAR * chr2 = wstr.c_str (); // Мы видим, что wchar_t == ACHAR!
Лучше подумайте об использовании wchar_t cmdLocRes [65] вместо char cmdLocRes [65]!
Других решений пока нет …