c++ - 你如何组合两个 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);
解决方案
首先,您的代码将无法编译:
LPWSTR procList = L'';
您不能使用单个宽字符初始化指针。
其次,假设您打算初始化procList
为一个空字符串,您的调用wcsncat
将导致未定义的行为,因为该函数期望目标指向足够的空间来执行连接。它不会分配额外的内存。
我建议您根本不要使用 C 风格的字符串,std::wstring
而是使用。您可以使用运算符连接其他字符串,并且将分配+=
额外的内存。您可以使用该函数将字符串内容传递给。SetWindowText
c_str()
推荐阅读
- javascript - 反应 src/ 之外的导入
- javascript - 在纯 JS 刽子手中防止重复输入字母的麻烦
- sql - 选择值为“如果 Id 存在于另一个表/视图中”的列
- c# - Unity如何在OnTriggerEnter2D中放置多个if语句?
- node.js - Sequelize 和 Postgres;如何设置值边界(总最小值/mac);和/或对更新运行验证
- ansible - ANSIBLE:访问 YAML 清单中的“深层”变量
- c# - Windows Presentation Foundation 如何使用代码将项目添加到 Listview
- powershell - 如何使用 Powershell 删除所有有异常的组?
- python-3.x - Tensorflow - 如何获得预测函数结果的准确性?
- sql-server - SET ANSI_WARNINGS ON 未将 ARITHABORT 值设置为 ON。文档是否正确?