我的 ListView 包含 3 列姓名、地址和电话号码。
我想检索特定名称的索引。
我正在使用 ListView_FindItem
宏来查找索引号,但是当我的代码执行到这一行时,它使程序崩溃。
它只是说 Payroll 已停止工作。 Windows 可以联机检查问题的解决方案。
我确定我已将右句柄传递给 ListView_FindItem
宏,但我不确定 LVFINDINFO
结构。
这是我的代码
WCHAR szProcess[80] = {0};
LVFINDINFO item = {LVFI_STRING, (LPCTSTR) szProcess};
//code to find parent handles
...
//code to find index
index = ListView_FindItem(hwndListView, -1, &item);
我不确定 LVFI_STRING
标志,我什至尝试将常量 LVFINDINFO
结构传递给 ListView_FindItem
宏,但我的程序仍然崩溃.
Note : The above code is not part of the payroll application. I mean to say the payroll application has the listview and I'm trying to search the item from other application.
有人能给我指出正确的方向吗?
谢谢。
最佳答案
您的描述有点不清楚,但我认为您正在向不同进程中的窗口发送 LVM_FINDITEM
消息(通过 ListView_FindItem()
宏)。
这对这个特定的 Windows 消息根本不起作用,因为它传递了一个指向调用进程中的结构的指针,当在其他进程(拥有 ListView 的工资单应用程序)的上下文中解释时,该结构毫无意义。
要解决您的问题,您可以在其他进程中分配内存,尽管这是一项相当复杂的任务。在代码项目文章 Stealing Program's Memory 中可以找到该技术的一个常被引用的示例。 .
也许更简单的方法是使用 WM_COPYDATA,它将在进程之间编码字符串数据。如果这没有足够的灵 active ,那么您需要找到另一种 IPC 机制,例如命名管道。
关于c - 如何在 ListView 控件中查找项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5688927/