XSLT存档  

不及格的程序员-八神

 查看分类:  ASP.NET XML/XSLT JavaScripT   我的MSN空间Blog
随笔 - 879,  文章 - 0,  评论 - 1190,  阅读 - 34万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
 

分类: 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 }
View Code
复制代码
复制代码
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;
}
复制代码

 

 
posted on   不及格的程序员-八神  阅读(86)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2016-11-28 ios面试题一份
点击右上角即可分享
微信分享提示