我最近开始使用Visual C ++,而且我正试图解决处理参数的问题。我正在尝试使用CommandLineToArgvW()
创建一个参数数组,但是当将数组中的值传递给消息框时,只打印第一个字符,而不是整个字符串。例如,如果我用ProjectName.exe test abc 123
运行程序,我将得到4个消息框,分别表示“P”,“t”,“a”和“1”。我在这里做错了什么?
int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR lpCmdLine, int show) {
int argNum, i;
LPWSTR *argList;
argList = CommandLineToArgvW(GetCommandLineW(), &argNum);
if (NULL == argList)
{
wprintf(L"CommandLineToArgvW failed\n");
return 0;
}
else
{
for (i = 0; i < argNum; i++)
{
int msgboxID2 = MessageBox(
NULL,
(LPCSTR)argList[i],
(LPCSTR)"Arguments",
MB_OK
);
}
}
return 0;
}
答案 0 :(得分:0)
将MessageBoxW()与(LPCWSTR)变量一起使用就像魅力一样。当不使用宽字符串版本时,该字符在截断字符串的初始字符后与0配对(感谢您对Freenode的引用## c ++ - 一般用于帮助我并解释问题,即使他没有使用Windows)。