Car*_*ark 1 c++ winapi 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);
Run Code Online (Sandbox Code Playgroud)
但它没有用,我做错了什么?
你必须初始化HDITEM调用之前的参数Header_GetItem。您必须在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);
Run Code Online (Sandbox Code Playgroud)
您还完全忽略了在代码中包含错误检查。你应该添加它。
您需要检查每个 API 调用的返回值。请参阅 MSDN 上的文档以了解如何解释它。
以上面的代码为例,你可以这样写:
HWND hwndHD = ListView_GetHeader(hListView);
if (hwndHD == NULL) {
// handle error
}
....
if (!Header_GetItem(hwndHD, 2, &hdi)) {
// handle error
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1873 次 |
| 最近记录: |