如题,我怎么知道此时客户拉伸的是第几列,别且作出相应的操作,比如有的列我允许拉伸  有的列不允许~

解决方案 »

  1.   

    子类化listview中的Header控件,处理Header控件WM_NOTIFY中的HDN_BEGINTRACK/HDC_ENDTRACK
    消息来判断。WNDPROC g_pWndProcHeaderCtrl;
    LRESULT CALLBACK MyHeaderCtrlProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);void SubClassHeaderCtrl(HWND hList)
    {
    g_hHeader=ListView_GetHeader(hList);
    g_pWndProcHeaderCtrl=(WNDPROC)GetWindowLongPtr(hHeader, GWL_WNDPROC);
    }LRESULT CALLBACK MyHeaderCtrlProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
        switch(uMsg)
        {
          case WM_NOTIFY:
           LPNMHDR phdr;
           phdr=(LPNMHDR)lParam;
           if(phdr->hwndFrom!=g_hHeader) break;
           switch(phdr->code)
           {
               case HDN_BEGINTRACK:
               case HDN_ENDTRACK:
                   // do sth.
                   break;
           }
           ...
           break;
         default:
           break;
        }
        return CallWindowProc(g_pWndProcHeaderCtrl, hWnd, uMsg, wParam, lParam);
    }