win32(不是mfc)的listctrl控件,怎么获取选中事件(消息)? 当选中某一行时,我就做某些事.

 我来答
初吻留在心深处
2021-04-28
知道答主
回答量:14
采纳率:0%
帮助的人:6816
展开全部
//在消息处理函数中
case WM_NOTIFY:
return OnNotify(hWnd, (NMHDR*)lParam);

//控件通知消息
LRESULT OnNotify(HWND hWnd, NMHDR* lpNMhdr)
{
if (lpNMhdr->idFrom == IDC_LISTVIEW) //控件id:IDC_LISTVIEW
{
if (lpNMhdr->code == LVN_ITEMCHANGED) //选中项发生改变消息
{
//接受消息代码
NMLISTVIEW* pNMListView = (NMLISTVIEW*)lpNMhdr;
int nItem = pNMListView->iItem; //获得选中的行的索引
int nCol = pNMListView->iSubItem; //获得列的索引

}
}

return TRUE;
}
//lParam参数传过来的结构体数据
typedef struct tagNMLISTVIEW
{
NMHDR hdr; //通用NMHDR通知结构
int iItem; //选中的项的索引
int iSubItem; //选中行列的索引
UINT uNewState; //选中的新项
UINT uOldState; //选中的旧项
UINT uChanged; //行的状态
POINT ptAction; //鼠标位置
LPARAM lParam; //附加的数据
} NMLISTVIEW, *LPNMLISTVIEW;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jht_1111111
2011-10-24 · TA获得超过156个赞
知道小有建树答主
回答量:222
采纳率:0%
帮助的人:190万
展开全部
listbox需要LBS_NOTIFY 风格
在wm_command中响应LBN_SELCHANGE (单击选中)(或者LBN_DBLCLK双击)
case wm_command
if (LOWORD(wParam) == ID_list && HIWORD(wParam) == LBN_SELCHANGE )
{//do}
追问
谢谢拉,不过你说的是listbox吧? 我想知道listctrl控件

参考资料: http://msdn.microsoft.com/en-us/library/bb775161(VS.85).aspx

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xelone
2011-10-24 · TA获得超过178个赞
知道小有建树答主
回答量:320
采纳率:0%
帮助的人:221万
展开全部
LVN_ITEMSELCHANGED
追问
这个消息在主窗口过程中,是怎么获取到得? 好像listctrl不会发送wm_command消息.
追答
WM_NOTIFY里面的
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式