zoukankan      html  css  js  c++  java
  • 双击CListCtrl列分割条调整宽度

    ON_NOTIFY(HDN_DIVIDERDBLCLICK, 0, &CXXX::OnHdnDividerdblclickListData)
    void CXXX::OnHdnDividerdblclickListData(NMHDR *pNMHDR, LRESULT *pResult)
    {
        LPNMHEADER phdr = reinterpret_cast<LPNMHEADER>(pNMHDR);
        
        // TODO: 在此添加控件通知处理程序代码
        int col = phdr->iItem;
    
        CHeaderCtrl* pHeaderCtrl = m_wndList.GetHeaderCtrl();
        int nColumnCount = pHeaderCtrl->GetItemCount();
    
        if ((col < 0) || (nColumnCount <= 0) || (col >= nColumnCount))
        {
            return;
        }
    
        int width = 0;
        //如果是最后一列
        if (col == nColumnCount - 1)
        {
            CDC* pDC = this->GetDC();
    
            LVCOLUMN lvc = { 0 };
            lvc.mask = LVCF_WIDTH | LVCF_TEXT | LVCF_MINWIDTH | LVCF_DEFAULTWIDTH | LVCF_IDEALWIDTH;
            TCHAR sColText[256] = { 0 };
            lvc.pszText = sColText;
            lvc.cchTextMax = sizeof(sColText) - 1;
            m_wndList.GetColumn(col, &lvc);
    
            if (lvc.pszText != nullptr)
            {
                width = pDC->GetTextExtent(lvc.pszText).cx;
            }
    
            for (int i = 0; i < m_wndList.GetItemCount(); ++i)
            {
                int w = pDC->GetTextExtent(m_wndList.GetItemText(i, col)).cx;
                if (w > width)
                {
                    width = w;
                }
            }
    
            this->ReleaseDC(pDC);
        }
        else
        {
            m_wndList.SetColumnWidth(col, LVSCW_AUTOSIZE);
            int nColumnWidth = m_wndList.GetColumnWidth(col);
    
            m_wndList.SetColumnWidth(col, LVSCW_AUTOSIZE_USEHEADER);
            int nHeaderWidth = m_wndList.GetColumnWidth(col);
    
            width = max(nColumnWidth, nHeaderWidth);
        }
    
        width += 10;
        m_wndList.SetColumnWidth(col, width);
    
        *pResult = 0;
    }

    当然,也可以实现自己的CListCtrl,此时需要将Message Map稍加改造,这点需要注意!

        ON_NOTIFY(HDN_DIVIDERDBLCLICKA, 0, &CMyListCtrl::OnHdnDividerdblclick)
        ON_NOTIFY(HDN_DIVIDERDBLCLICKW, 0, &CMyListCtrl::OnHdnDividerdblclick)
    作者:快雪
    本文版权归作者所有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    slqmap简单使用
    Sql注入类型
    路由器协议----IGP、EGP、RIP、OSPF、BGP、MPLS
    TCPIP协议簇-各层主要协议帧格式
    TCP/IP协议(7):应用层
    TCP/IP协议(5):传输层之TCP
    TCP/IP协议(6):传输层之UDP
    Mysql数据库优化之SQL及索引优化
    公众号支付时,如何判断是否是微信浏览器
    ajax返回数据为undefined
  • 原文地址:https://www.cnblogs.com/kuaixue/p/15305147.html
Copyright © 2011-2022 走看看