WIN32 ListView消息处理。

创建完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.在这里,感谢那些他们。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值