一个基于单文档的程序,窗口可以最小,最大化,添加一个list  control在里面.
在窗口最大的时候,怎么可以使list control也变大?

解决方案 »

  1.   

    在WM_SIZE响应函数中加入如下代码:
            CRect layoutRect;
    GetClientRect(&layoutRect);
    if(m_listCtrl.m_hWnd)
    {
    m_listCtrl.SetWindowPos(NULL
    , layoutRect.left
    , layoutRect.top
    , layoutRect.Width()
    , layoutRect.Height()
    , SWP_SHOWWINDOW);
    }
      

  2.   

    WM_SIZE响应函数?
    我是菜鸟,在哪里找到这个函数?
      

  3.   

    //在View类里用右键弹出菜单后选Add Windows Message Hander
    //然后在弹出的对话框中左边的列表框选中WM_SIZE
    //点"Add and Edit",会在你的类中多一个OnSize()函数
    //在里面添加代码即可
      

  4.   

    响应WM_SIZE消息,然后SetWindowPos/MoveWindow等比例设置大小
      

  5.   

    OnSize 中 SetWindowPos 或 MoveWindow
    结合 GetClientRect 来调整窗口位置和大小
    参考:
    http://www.codeproject.com/dialog/dlgresizearticle.asp
      

  6.   

    WM_SIZE响应函数?
    我是菜鸟,在哪里找到这个函数?
    --------
    CTRL + W  找到WM_SIZE 双击就可以了注意你当时选的类是哪一个类
      

  7.   

    右键点击classview中的class名,然后选择添加窗口的消息相应,选择WM_SIZE Add,然后添加上面的那个Onsize中的代码就行了
            CRect layoutRect;
    GetClientRect(&layoutRect);
    if(m_listCtrl.m_hWnd)
    {
    m_listCtrl.SetWindowPos(NULL
    , layoutRect.left
    , layoutRect.top
    , layoutRect.Width()
    , layoutRect.Height()
    , SWP_SHOWWINDOW);
    }
      

  8.   

    谢谢,已经可以了
    但又有另一个问题,没有最大化的时候,list  control旁边的两个命令按钮还可以起作用,最大化后,命令按钮就不能用了。请问怎么解决?
      

  9.   

    m_listCtrl.SetWindowPos(NULL
    , layoutRect.left
    , layoutRect.top
    , layoutRect.Width()-100
    , layoutRect.Height()
    , SWP_SHOWWINDOW);
    m_button1.SetWindowPos(...);
    m_button2.SetWindowPos(...);
    两个按钮的位置自己算一下吧