动态创建的list control添加消息响应

动态创建的控件的消息响应只能手工来添加,以list control为例,如果你想双击list control的item项时得到一个响应可以用如下做法:

首先在头文件中添加 afx_msg void OnNMDblclkList(NMHDR *pNMHDR, LRESULT *pResult);

然后在cpp文件中添加 ON_NOTIFY(NM_DBLCLK, 1, &CpytestDlg::OnNMDblclkList)这个要房子BEGIN_MESSAGE_MAP和END_MESSAGE_MAP中间

之后在void OnNMDblckList()函数实现中做判断,例程如下:

void CpytestDlg::OnNMDblclkList(NMHDR *pNMHDR, LRESULT *pResult)
{
	
	NM_LISTVIEW*   pNMListView = (NM_LISTVIEW*)pNMHDR; 
	int nItem = pNMListView -> iItem; 
	int nSubItem = pNMListView ->iSubItem;
	if(nItem >= 0)
	{
		CString str_NM, str_BH;
		//str1.Format(L"%d", nItem);
		//::AfxMessageBox(str1);
		DWORD_PTR pStr = m_listctrl1->GetItemData(nItem);
		m_listctrl1->SetItemData(nItem, 1);
		POSITION pos=m_listctrl1->GetFirstSelectedItemPosition();
		int nId=(int)m_listctrl1->GetNextSelectedItem(pos);
		str_NM = m_listctrl1->GetItemText(nId, 0);
		str_BH = m_listctrl1->GetItemText(nId, 1);
		m_xsbh = str_BH;
		m_xsxm = str_NM;
		UpdateData(FALSE);
		for(int i=0; i<m_lstStudent.GetCount(); i++)
		{
			POSITION pos1 = m_lstStudent.FindIndex(i);
			if(m_xsxm == m_lstStudent.GetAt(pos1).xsxm)
			{
				m_iCurPos = i;
				SetNavigatorButton(m_iCurPos);

			}
		}
		//::AfxMessageBox(str1);
		//CString str2 = (CString*)pStr;
	}
	*pResult   =   0; 
}
其中
		POSITION pos=m_listctrl1->GetFirstSelectedItemPosition();
		int nId=(int)m_listctrl1->GetNextSelectedItem(pos);
		str_NM = m_listctrl1->GetItemText(nId, 0);
		str_BH = m_listctrl1->GetItemText(nId, 1);
可以把你双击选择的item存到CString类型的变量中,我这里是将选出的值放入了CEdit变量中显示出来了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值