主窗体设计(13)

 

处理CPanel类的WM_SIZE消息,在窗口大小改变时,调整预览窗口的大小。代码如下:

void CPanel::OnSize(UINT nType, int cx, int cy) 

{

CDialog::OnSize(nType, cx, cy);

if (m_Num>0)  //创建了预览窗口

{

CRect rc;

GetClientRect(rc); //获得父窗口的客户区域

m_PreRC = rc;

m_PreRC.DeflateRect(m_Div,m_Div,m_Div,m_Div);

//预览窗口的宽度

int width  = (rc.Width()-(m_UnitNum+1)*m_Div)/m_UnitNum;

//预览窗口的高度

int height = (rc.Height()-(m_UnitNum+1)*m_Div)/m_UnitNum;

//计算预览窗口的位置

for (int i =0; i<m_Num; i++)

{

int row = i / uNum + 1;        //计算预览窗口的行位置

int col = i % uNum + 1;        //计算预览窗口的列位置

int x = col*m_Div+(col-1)*width;  //计算预览窗口的左上角横坐标

int y = row*m_Div+(row-1)*height; //计算预览窗口的左上角纵坐标

CRect rect(x,y,x+width,y+height);  //设置预览窗口显示位置

if (m_pList[i].IsWindowVisible())

{

if (!m_pList[i].m_Dbled) //是否填充父窗口

{

m_pList[i].MoveWindow(rect); //恢复窗口初始大小及位置

m_pList[i].Invalidate();    //刷新窗口

}

else

{

m_pList[i].MoveWindow(m_PreRC); //以预览窗口填充父窗口

m_pList[i].Invalidate();         //刷新窗口

}

}

}

}

}

读书导航