msdn上说 ws_hscroll属性 在窗体创建好之后是不能去掉的,所以 modifystyle、setwindowlongptr之流的就别想了,然后还有一种办法 是在onnccalcsize 里面调用 showscrollbar(SB_BOTH,FALSE);这种方法确实可行,不过似乎和我想要的逻辑不太一样,这个是当窗体位置发生改变重新计算位置,这个showscrollbar函数放在其他地方就不起作用,哪位大佬讲一讲为什么啊,我想要主动隐藏滚动条,而不是只能放在onnccalcsize里

解决方案 »

  1.   

    "是当窗体位置发生改变重新计算位置"
    窗口第一次 创建成功后 显示 也 是 这样如:
    void CMaxListCtrlDlg::OnSize(UINT nType, int cx, int cy) 
    {
    CDialog::OnSize(nType, cx, cy);
    if(nType==SIZE_MAXIMIZED)
    {
    afxDump << nType << "\n";
    }
    if(IsWindow(m_ctrlList))
    {
    CRect rc;
    GetClientRect(&rc);
    // 修改列宽 
    m_ctrlList.SetColumnWidth(1, rc.Width());//LVSCW_AUTOSIZE_USEHEADER);// -2
    m_ctrlList.MoveWindow(&rc);
            m_ctrlList.ShowScrollBar(SB_HORZ, FALSE);// must after MoveWindow
    }
    // TODO: Add your message handler code here
    }
      

  2.   

    直接调用
    OnSize(UINT nType, int cx, int cy) 
      

  3.   

    带佬 刚刚试了一下不行 只有 OnNcCalcSize有用
      

  4.   

            m_ctrlList.MoveWindow(&rc);
            m_ctrlList.ShowScrollBar(SB_HORZ, FALSE);// must after MoveWindow