How to Use CHeaderCtrl Filter

来源:互联网 发布:java流读取 编辑:程序博客网 时间:2024/05/07 11:50

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消息

    • 添加消息映射ON_NOTIFY(HDN_FILTERCHANGE, 0, OnHdnFilterChange)
    • 添加消息函数OnHdnFilterChang
  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; 

 

 

 

 

 

 

 

 

 

 

    
原创粉丝点击