首页 > 解决方案 > 你如何组合两个 char_t* 字符串?

问题描述

我想要做的是在编辑子窗口中获取进程列表。我原本打算使用一系列带有滚动条的按钮,但我不知道该怎么做(如果你有解决方案的话)并且没有找到如何做的资源。

我尝试了 wchar.h 函数和类型转换。

HWND listProc = CreateWindow(L"Edit", L"", WS_VISIBLE | WS_CHILD | WS_VSCROLL | WS_HSCROLL,
            0, 0, 100, 300, process, NULL, NULL, NULL);
        LPWSTR procList = L'';
        Process32First(procSnap, &procEntry);
        while (Process32Next(procSnap, &procEntry))
        {
            wcsncat(procList, procEntry.szExeFile, MAX_PATH);
            wcsncat(procList, L"\n", 1);
        }
        SetWindowText(listProc, procList);
        CloseHandle(procSnap);

标签: c++winapiconcatenationwchar

解决方案


首先,您的代码将无法编译:

LPWSTR procList = L'';

您不能使用单个宽字符初始化指针。

其次,假设您打算初始化procList为一个空字符串,您的调用wcsncat将导致未定义的行为,因为该函数期望目标指向足够的空间来执行连接。它不会分配额外的内存。

我建议您根本不要使用 C 风格的字符串,std::wstring而是使用。您可以使用运算符连接其他字符串,并且分配+=额外的内存。您可以使用该函数将字符串内容传递给。SetWindowTextc_str()


推荐阅读