我的列表视图包含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
宏,但程序仍然崩溃。
注意:以上代码不属于 工资单申请。我的意思是说 工资单申请表有 listview,我正在尝试搜索 来自其他申请的项目。
有人可以指出我正确的方向吗?
感谢。
答案 0 :(得分:2)
您的描述有点不清楚,但我将其解释为您正在将LVM_FINDITEM
消息(通过ListView_FindItem()
宏)发送到不同进程的窗口。
这对于这个特定的Windows消息根本不起作用,因为它传递一个指向调用进程中结构的指针,当在另一个进程(拥有列表视图的工资单应用程序)的上下文中进行解释时,该指针毫无意义。
要解决您的问题,您可以在其他进程中分配内存,尽管这是一项非常复杂的任务。可以在代码项目文章Stealing Program's Memory中找到该技术的常用示例。
也许更简单的方法是使用WM_COPYDATA,它将在进程之间封送字符串数据。如果没有足够的灵活性,那么你需要找到另一种IPC机制,例如:命名管道。