一个很简单的问题 请问如何在窗体改变大小的时候。比如最大化,最小化
将窗体上的控件的大小也改变。是不是在窗体的onsize消息里面写代码,如何写??
请执教!!!

解决方案 »

  1.   

    应该响应 WM_SIZE 消息, 具体怎么写要看你怎么对控件进行重新分配空间了.一般先求出对话框 的有效区域大小,其实区域就是 OnSize 传入的 cx,cy, 不用再另外计算了.
    区域是 :CRect rcDlg(0,0,cx,cy);然后根据这个区域来计算每一个控件的新的位置,然后 GetDlgItem(IDC_CONXXX)->MoveWindow(x,y,w,h); 有时我们需要取出控件原来的位置和大小,来帮助计算新的坐标. 那么这样取:CRect rcControl;
    GetDlgItem(IDC_CONXXX)->GetWindowRect(rcControl);  // 取控件窗口的大小,不要取客户区,否则得不到位置信息
    ScreenToClient(rcControl);  // 将这个控件的矩形坐标变换到相对对话框的客户区控件原来的位置就是 rcControl.TopLeft();'
    控件原来的大小就是 rcControl.Size();
    ...