MFC给列表控件发送双击消息

最近项目需求上需要给列表控件发送一个双击消息,特此总结一下以备以后需要:

//给列表发送双击消息
void CTestDlg:SendDbClickToList()
{
//模拟CListCtrl双击消息
NMITEMACTIVATE NMItemActivate;
NMHDR thdr;


thdr.code = NM_DBLCLK;

thdr.hwndFrom = m_List.m_hWnd;

thdr.idFrom = IDC_LIST;


NMItemActivate.hdr = thdr;
NMItemActivate.iItem = m_List.GetItemCount();


//::SendMessage(m_hWnd, WM_NOTIFY, IDC_LIST, (LPARAM)&NMItemActivate);
SendMessage(WM_NOTIFY, IDC_LIST, (LPARAM)&NMItemActivate);//把消息发给列表所在的父窗口,由父窗口转发,而不是直接发给列表

}

首先我们可以知道在响应列表控件双击消息的函数里需要有将NMHDR类型的指针转换为NMITEMACTIVATE类型的指针

void CTestDlg:::OnDbClickList(NMHDR *pNMHDR, LRESULT *pResult)
{

LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);

}

因此我们也需要定义一个NMITEMACTIVATE类型的结构体来作为参数传送给消息响应函数。NMItemActivate结构成员的具体含义可以在msdn查一下。

然后就是使用SendMessage函数发送消息,需要注意的是并不是直接发送给列表本身,而是发送给列表的父窗口,然后由父窗口转发。

SendMessage的第一个参数为消息类型,第二个为列表控件的ID,第三个为我们刚才定义的NMItemActivate结构体的指针。


整个过程我们可以总结一下,自己发送消息给某个控件,如果需要,定义对应的结构体,然后WPARAM参数为控件ID,LPARAM一般为额外的结构体的指针。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值