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; }
特发此贴记录一下。。。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值