将数组元素传递到消息框只会打印元素的第一个字符而不是整个字符串

时间:2016-04-22 18:32:46

标签: c++ arrays visual-c++ messagebox

我最近开始使用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;
}

1 个答案:

答案 0 :(得分:0)

将MessageBoxW()与(LPCWSTR)变量一起使用就像魅力一样。当不使用宽字符串版本时,该字符在截断字符串的初始字符后与0配对(感谢您对Freenode的引用## c ++ - 一般用于帮助我并解释问题,即使他没有使用Windows)。