在程序显示出来后,让CListBox的大小随着主框架大小的改变成比例改变。我查了CListBox类没有方法,再查CWnd类,只有一个SetWindowPos();可以第一个参数要CWnd *类型。每次都会报访问错误。请问高手,CListBox改变这个控件大小的方法是什么?如果是SetWindowPos()应该怎么用?

解决方案 »

  1.   

    在主框架OnSize里m_lb.MoveWindow(0, 0, cx, cy); // 可自行调整
    或者m_lb.SetWindowPos(NULL, 0, 0, cx, cy, SWP_NOACTIVATE); // 可自行调整
    可适当使用SWP_NOMOVE标志
      

  2.   

    多谢 littlepboy(vc小p孩)  的帮助,我用
    m_lb.SetWindowPos(NULL, 0, 0, cx, cy, SWP_NOACTIVATE);但是会Assert
    地方是:ASSERT(::IsWindow(m_hWnd));我是在myView类OnSize里面写的。因为我的CListBox m_lb;就写在了myView.h中了。
      

  3.   

    m_lb窗体未创建;
    加上:
    if(IsWindow(m_lb.GetSafeHwnd()))
    {
    m_lb.SetWindowPos......
    }
    判断
      

  4.   

    在OnSize里
    if(m_lb.m_hWnd)
      m_lb.MoveWindow(rect);
      

  5.   


    if (m_lb.GetSafeHWnd)
    {
    // ....
    }
    就可以了。