分类: C/C++
2011-11-17 16:24:01
设置LVS_EX_CHECKBOXES风格
ListView_SetExtendedListViewStyle(m_List.GetSafeHwnd(), m_List.GetExStyle() | LVS_EX_CHECKBOXES);
为listctrl添加测试项
在OnInitDialog()中添加如下代码:
m_List.InsertColumn(0,"Name",LVCFMT_LEFT,150);
m_List.InsertColumn(1,"***",LVCFMT_LEFT,200);
m_List.InsertItem(0, "ZhangSan");
m_List.InsertItem(1, "LiSi");
添加控件通知消息
为ListCtrl控件添加LVN_ITEMCHANGED消息。系统生成如下代码:
void CXXXDlg::OnLvnItemchangedList1(NMHDR *pNMHDR, LRESULT *pResult) { LPNMLISTVIEW pNMLV = reinterpret_cast(pNMHDR); // TODO: Add your control notification handler code here *pResult = 0; } 在LVN_ITEMCHANGED消息处理函数中添加代码如下: void CXXXDlg::OnLvnItemchangedList1(NMHDR *pNMHDR, LRESULT *pResult) { LPNMLISTVIEW pNMLV = reinterpret_cast(pNMHDR); // TODO: Add your control notification handler code here /* typedef struct tagNMLISTVIEW { NMHDR hdr; int iItem; int iSubItem; UINT uNewState; UINT uOldState; UINT uChanged; POINT ptAction; LPARAM lParam; } NMLISTVIEW, *LPNMLISTVIEW; */ if((pNMLV->uOldState & INDEXTOSTATEIMAGEMASK(1)) /* old state : unchecked */ && (pNMLV->uNewState & INDEXTOSTATEIMAGEMASK(2)) /* new state : checked */ ) { TRACE("Item %d is checked\n", pNMLV->iItem); } else if((pNMLV->uOldState & INDEXTOSTATEIMAGEMASK(2)) /* old state : checked */ && (pNMLV->uNewState & INDEXTOSTATEIMAGEMASK(1)) /* new state : unchecked */ ) { TRACE("Item %d is unchecked\n", pNMLV->iItem); } else { TRACE("Item %d does't change the check-status\n", pNMLV->iItem); } *pResult = 0; }

1 void CGspSellerDocPage2::refreshList() 2 { 3 this->UpdateData(); 4 this->m_strProduct.TrimLeft();this->m_strProduct.TrimRight(); 5 this->m_strWareType.TrimRight(); 6 this->m_strSpec.TrimLeft();this->m_strSpec.TrimRight(); 7 this->m_strModel.TrimLeft();this->m_strModel.TrimRight(); 8 this->m_strManufactor.TrimLeft();this->m_strManufactor.TrimRight(); 9 10 m_ctrlList.DeleteAllItems(); 11 GspSellerFilter filter; 12 13 for (vector<GspSellerRangeListItem>::iterator iter = this->dataSource.begin(); iter != this->dataSource.end(); iter++) 14 { 15 if(!this->m_strProduct.IsEmpty() && (iter->strWareCode.Find(this->m_strProduct) == -1 && iter->strWareName.Find(this->m_strProduct) == -1)) 16 { 17 continue; 18 } 19 if(!this->m_strSpec.IsEmpty() && iter->strSpec.Find(this->m_strSpec) == -1) 20 { 21 continue; 22 } 23 if(!this->m_strWareType.IsEmpty() && iter->strWareType.Find(this->m_strWareType) == -1) 24 { 25 continue; 26 } 27 if(!this->m_strModel.IsEmpty() && iter->strModel.Find(this->m_strModel) == -1) 28 { 29 continue; 30 } 31 if(!this->m_strManufactor.IsEmpty() && iter->strProducter.Find(this->m_strManufactor) == -1) 32 { 33 continue; 34 } 35 36 int iIndex = m_ctrlList.GetItemCount(); 37 m_ctrlList.InsertItem(iIndex, iter->strWareType); 38 m_ctrlList.SetItemText(iIndex, 1, iter-> strWareCode); 39 m_ctrlList.SetItemText(iIndex, 2, iter->strWareName); 40 m_ctrlList.SetItemText(iIndex, 3, iter->strProducter); 41 m_ctrlList.SetItemText(iIndex, 4, iter->strSpec); 42 m_ctrlList.SetItemText(iIndex, 5, iter->strModel); 43 m_ctrlList.SetItemText(iIndex, 6, iter->strUnit); 44 45 if (iter->strCheck == _T("1")) m_ctrlList.SetCheck(iIndex, 1); 46 } 47 }
void CGspSellerDocPage2::OnItemchangedListWareRange(NMHDR* pNMHDR, LRESULT* pResult) { NM_LISTVIEW* pNMLV = (NM_LISTVIEW*)pNMHDR; CString strWareCode = m_ctrlList.GetItemText(pNMLV->iItem, 1); GspSellerRangeListItem *rowItem = NULL; for(int i=0;i<this->dataSource.size();i++) { if(strWareCode == this->dataSource[i].strWareCode) { rowItem = &this->dataSource[i]; break; } } // TODO: Add your control notification handler code here if((pNMLV->uOldState & INDEXTOSTATEIMAGEMASK(1)) /* old state : unchecked */ && (pNMLV->uNewState & INDEXTOSTATEIMAGEMASK(2)) /* new state : checked */ ) { //TRACE("Item %d is checked\n", pNMLV->iItem); if(rowItem != NULL) rowItem->strCheck = "1"; } else if((pNMLV->uOldState & INDEXTOSTATEIMAGEMASK(2)) /* old state : checked */ && (pNMLV->uNewState & INDEXTOSTATEIMAGEMASK(1)) /* new state : unchecked */ ) { //TRACE("Item %d is unchecked\n", pNMLV->iItem); if(rowItem != NULL) rowItem->strCheck = "0"; } else { TRACE("Item %d does't change the check-status\n", pNMLV->iItem); } *pResult = 0; }
南来地,北往的,上班的,下岗的,走过路过不要错过!
======================个性签名=====================
之前认为Apple 的iOS 设计的要比 Android 稳定,我错了吗?
下载的许多客户端程序/游戏程序,经常会Crash,是程序写的不好(内存泄漏?刚启动也会吗?)还是iOS本身的不稳定!!!
如果在Android手机中可以简单联接到ddms,就可以查看系统log,很容易看到程序为什么出错,在iPhone中如何得知呢?试试Organizer吧,分析一下Device logs,也许有用.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2016-11-28 ios面试题一份