MFC之列表控件CListCtrl


1、HDN_ITEMCLICK消息

1.1、三个结构体

1.1.1、NMHDR 结构(richedit.h)**

typedef struct _nmhdr {
  HWND hwndFrom;	//发送消息控件的窗口句柄
  UINT idFrom;		//发送消息的控件的标识符
  UINT code;		//通知码
} NMHDR;

1.1.2、NMLISTVIEW 结构 (commctrl.h)

  • 此结构与NM_LISTVIEW结构相同,重命名以符合标准命名约定。

句法

typedef struct tagNMLISTVIEW {
  NMHDR  hdr;
  int    iItem;
  int    iSubItem; 		//列
  UINT   uNewState;
  UINT   uOldState;
  UINT   uChanged;
  POINT  ptAction;
  LPARAM lParam;
} NMLISTVIEW, *LPNMLISTVIEW;

1.1.3、NMITEMACTIVATE 结构 (commctrl.h)

typedef struct tagNMITEMACTIVATE {
  NMHDR  hdr;
  int    iItem;
  int    iSubItem;
  UINT   uNewState;
  UINT   uOldState;
  UINT   uChanged;
  POINT  ptAction;
  LPARAM lParam;
  UINT   uKeyFlags; //激活时按下的修饰键。
} NMITEMACTIVATE, *LPNMITEMACTIVATE;
  • uKeyFlags 按下的键
    LVKF_ALT
    LVKF_CONTROL
    LVKF_SHIFT

1.2、判断按键是否按下

判断LPNMITEMACTIVATE结构体uKeyFlags 字段:

void CTabDlg::OnClickList(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码
	if(LVKF_ALT==pNMItemActivate->uKeyFlags)
		AfxMessageBox("Alt键被按下");

	*pResult = 0;
}

1.3、判断鼠标点击的字段

void CTabDlg::OnClickList(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码
	NM_LISTVIEW* pNMListView=(NM_LISTVIEW*)pNMHDR;
	int nSelCol=pNMListView->iSubItem;
	int nSelRow=m_list.GetSelectionMark();
	CString strSelText=m_list.GetItemText(nSelRow,nSelCol);
	AfxMessageBox("被点击的是"+strSelText);
	*pResult = 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值