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