处理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(); //刷新窗口
}
}
}
}
}