Я пытаюсь преобразовать предыдущий код в 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 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
str << cmdLocRes;
//Получить wstring из wstringstream
std :: wstring wstr = str.str();
//Получить wchar_t из wstring
const wchar_t * chr1 = wstr.c_str();
const ACHAR * chr2 = wstr.c_str(); // Мы видим, что wchar_t == ACHAR!
Лучше подумайте об использовании wchar_t cmdLocRes [65] вместо char cmdLocRes [65]!