How to Use CHeaderCtrl Filter

How to Use CHeaderCtrl Filter

1,添加标准的Filter控件

  1. // The pointer to my header control. 
  2.     extern CHeaderCtrl* pmyHeaderCtrl;
  3. //  HDS_FILTERBAR Is The New Style... 
  4. // 
  5.     pHeader -> ModifyStyle( 0, HDS_FILTERBAR ); // Add The FilterBar Style

 

2,发送HDN_FILTERCHANGE消息

 

 

  1. void OnHdnFilterChange(NMHDR *pNMHDR, LRESULT *pResult)
  2. {
  3. // This feature requires Internet Explorer 5 or greater.  
  4. // The symbol _WIN32_IE must be >= 0x0500.  
  5.         LPNMHEADER phdr = reinterpret_cast<LPNMHEADER>(pNMHDR);
  6. // TODO: Add your control notification handler code here  
  7.             
  8.         HDTEXTFILTER    hdTFilter;
  9.         CHeaderCtrl     *pHeader = GetHeaderCtrl();
  10.         HDITEM          hdItem;
  11.         TCHAR           cFilter[128];
  12.         ZeroMemory( cFilter, sizeof( cFilter ) );
  13.         hdItem.mask = HDI_FILTER;
  14.     
  15.         hdTFilter.pszText = cFilter;                                        // Set Buffer For Filter 
  16.         hdTFilter.cchTextMax = sizeof( cFilter );                  // Set Size Of Buffer 
  17.         hdItem.type = HDFT_ISSTRING;
  18.         hdItem.pvFilter = &hdTFilter;
  19.     
  20.         pHeader->GetItem( 0, &hdItem );                                //获取0项的数据
  21.        *pResult = 0;
  22. }

3,Filter通过响应HDN_FILTERCHANGE消息

  1. void OnHdnFilterChange(NMHDR *pNMHDR, LRESULT *pResult)
  2. {
  3.                 // This feature requires Internet Explorer 5 or greater.
  4.                // The symbol _WIN32_IE must be >= 0x0500.
  5.                LPNMHEADER phdr = reinterpret_cast<LPNMHEADER>(pNMHDR);
  6.               // TODO: Add your control notification handler code here
  7.             
  8.             
  9.            *pResult = 0;
  10. }

相关的结构体

  1. typedef struct tagNMHEADER { 
  2.     NMHDR hdr; 
  3.     int iItem; 
  4.     int iButton; 
  5.     HDITEM *pitem; 
  6. } NMHEADER, *LPNMHEADER; 
  7. typedef struct _HDITEM { 
  8.     UINT    mask;  
  9.     int     cxy;  
  10.     LPTSTR  pszText;  
  11.     HBITMAP hbm;  
  12.     int     cchTextMax;  
  13.     int     fmt;  
  14.     LPARAM  lParam;  
  15. #if (_WIN32_IE >= 0x0300) 
  16.     int     iImage; 
  17.     int     iOrder; 
  18. #endif 
  19. #if (_WIN32_IE >= 0x0500) 
  20.     UINT    type; 
  21.     LPVOID  pvFilter; 
  22. #endif 
  23. } HDITEM,  *LPHDITEM;
  24. typedef struct tagNMHDR { 
  25.     HWND hwndFrom; 
  26.     UINT idFrom; 
  27.     UINT code; 
  28. } NMHDR; 
    • 添加消息映射ON_NOTIFY(HDN_FILTERCHANGE, 0, OnHdnFilterChange)
    • 添加消息函数OnHdnFilterChang

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值