c++ winapi,获取listview标题文本
c++ winapi, get listview header text
我创建了一个listview,然后我想获得标题文本,像这样:
HWND hwndHD = ListView_GetHeader(hListView);
HDITEM hdi;
Header_GetItem(hwndHD, 2, (LPHDITEMA) &hdi);
unsigned char HDtext[lMAX];
hdi.pszText = (LPSTR)HDtext;
SendMessage(hListView, HDM_GETITEM, (WPARAM) 0, (LPARAM) &hdi);
std::string str(HDtext, HDtext + sizeof(HDtext));
MessageBox(hwnd, str.c_str() , "CreateFile", MB_OK);
但它没有工作,我做错了什么?
您必须在调用Header_GetItem
之前初始化HDITEM
参数。您必须在mask
中指定您请求的信息。
在你的例子中,你想这样做:
char HDtext[lMAX];
HWND hwndHD = ListView_GetHeader(hListView);
HDITEM hdi = { 0 };
hdi.mask = HDI_TEXT;
hdi.pszText = HDtext;
hdi.cchTextMax = lMAX;
Header_GetItem(hwndHD, 2, &hdi);
您还完全忽略了在代码中包含错误检查。你应该把它加进去。
你需要检查每个API调用的返回值。参考MSDN上的文档了解如何解释它。
以上面的代码为例,你可以这样写:HWND hwndHD = ListView_GetHeader(hListView);
if (hwndHD == NULL) {
// handle error
}
....
if (!Header_GetItem(hwndHD, 2, &hdi)) {
// handle error
}
相关文章:
- 文本文件中的单词链表
- 从命令行c++发送文本文件名
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 2D数组来自文本输入,中间有空格
- 如何将内容数组写入文本文件?
- 无法通过空白将文本文件行分隔为矢量
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- C++将文本文件中的数据读取到结构数组中
- 在指针的帮助下,文本文件中单词的频率
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 将值从二维数组输出到文本文件
- Qcombobox设置标题文本,无论项目如何
- 如何左对齐标题文本VS C++
- 当标题中指定文本/纯文本时,易趣API返回JSON
- 获取标题栏文本大小 WINAPI
- c++ winapi,获取listview标题文本
- 作为函数输入的文本文件的标题
- 创建一个标题中带有时间戳的文本文件
- 如何动态更新QMenu和子菜单标题文本