创建完ListView之后,就需要对列表做一些操作。而win32程序呢,是通过使用消息来传递你要做什么,谁做。
所以,我们就需要对某些我们感兴趣的消息做一些处理。而现在,我们只对处理ListView这个控件感兴趣。
在窗口过程函数里,在switch中添加一个case WM_NOTIFY;这个消息通知控件的父窗口控件中已发生事件或控件需要某种信息。
添加一行这样的代码:NM_LISTVIEW* pnmv = (NM_LISTVIEW FAR *) lParam;
该NM_LISTVIEW结构包含有关的列表视图的通知消息的信息。可以在这里得到详细解释http://winapi.freetechsecrets.com/win32/WIN32NMLISTVIEW.htm,
这个结构里有一个NMHDR hdr成员,该成员是一个结构,该结构有一个UINT Code成员。通过Code,我们就可以处理列表视图的通知消息。我们要处理哪个通知消息,就用Code和通知消息==判断。
if(pnmv->hdr.code == LVN_COLUMNCLICK)//点击了列。表头
if (pnmv->hdr.code == LVN_ITEMACTIVATE)//激活列表里的某一项,也就是行,双击鼠标左键。
if (pnmv->hdr.code == NM_CLICK)//单击列表里的某一项,
hdr还有一个成员非常有用,HWND hwndFrom。可以获取到发送消息的句柄,也就是ListView这个控件的句柄。这样就可以使用列标控制宏来完成对ListCtrol地使用;
ListView_GetItemText(pnmv->hdr.hwndFrom, pnmv->iItem, pnmv->iSubItem, str, 256);
获取列表视图项的文本。pnmv->iItem:列表视图项,就是第几行第几列。pnmv->iSubItem:子项,没有为零。
str:指向接收项或子项文本的缓冲区的指针。它接收LPSTR类型的参数,LPSTR是一个指向以NULL(‘\0’)结尾的32位ANSI字符数组指针,这里使用数组就行了,使用指针的话就new内存吧。TCHAR a[256];
最后一个参数是:缓冲区大小,也就是这个数组大小,或new的内存大小。
好了,这样就对这个控件完成了一次操作。至于其它地操作,可以去看API。我附个链接https://docs.microsoft.com/en-us/previous-versions/aa922166%28v%3dmsdn.10%29。
OK.在这里,感谢那些他们。