CListCtrl 单击事件问题

搞了个wince的测试程序,里面用到CListCtrl控件,在响应其单击某一行的事件的时候,老是出问题。开始使用OnLvnItemchanged响应点击事件,发现一个问题。第一次点击某一行,可以正常响应对应的处理;处理完后,回来再点击同样一行就进不了处理了。哥们那个郁闷呀!后来才发现使用OnNMClick事件处理,其中的处理如下就正常了。

void CD3GMessageDlg::OnNMClickListMain(NMHDR *pNMHDR, LRESULT *pResult)
{
	// TODO: Add your control notification handler code here
	POSITION pos = m_List.GetFirstSelectedItemPosition();
	if(pos == NULL)	return;
	int item = m_List.GetNextSelectedItem(pos);
	switch(item)
	{
	case 0:{	// 新建消息
		//MessageBox(L"新建消息");
		CRWMessage *pDlg = new CRWMessage(0, this, -1, -1);
		INT_PTR n = pDlg->DoModal();
		switch(n)
		{
			case IDOK:{
				free(pDlg);
			}break;
		}
		   }break;
	case 1:{	// 收件箱
		//MessageBox(L"收件箱");
		CMessageBox *pDlg = new CMessageBox(0, this, -1);
		INT_PTR n = pDlg->DoModal();
		switch(n)
		{
			case IDOK:{
				free(pDlg);
			}break;
		}
		   }break;
	case 2:{	// 待发件箱
		//MessageBox(L"待发件箱");
		CMessageBox *pDlg = new CMessageBox(0, this, 1);
		INT_PTR n = pDlg->DoModal();
		switch(n)
		{
			case IDOK:{
				free(pDlg);
			}break;
		}
		   }break;
	case 3:{	// 已发件箱
		//MessageBox(L"已发件箱");
		CMessageBox *pDlg = new CMessageBox(0, this, 2);
		INT_PTR n = pDlg->DoModal();
		switch(n)
		{
			case IDOK:{
				free(pDlg);
			}break;
		}
		   }break;
	case 4:{	// 信息设置
		//MessageBox(L"信息设置");
		CSetMessage *pDlg = new CSetMessage(0, this);
		INT_PTR n = pDlg->DoModal();
		switch(n)
		{
			case IDOK:{
				free(pDlg);
			}break;
		}
		   }break;
	case 5:{	// 存储状态
		//MessageBox(L"存储状态");
		CStorageState *pDlg = new CStorageState(0, this);
		INT_PTR n = pDlg->DoModal();
		switch(n)
		{
			case IDOK:{
				free(pDlg);
			}break;
		}
		   }break;
	case 6:{	// 关于
		CString about;
		about = L"App Name\t: D3GMessage\r\n";
		about += L"Version\t: 1.0\r\n";
		about += L"Author\t\t: brantyou\r\n";
		MessageBox(about);
		   }break;
	case 7:{	// 退出
		CDialog::OnOK();
		   }break;
	default:break;
	}

	*pResult = 0;
}

特发此贴记录一下。。。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值