處理CPanel類的WM_SIZE消息,在窗口大小改變時,調整預覽窗口的大小。代碼如下:
void CPanel::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if (m_Num>0) //創(chuàng)建了預覽窗口
{
CRect rc;
GetClientRect(rc); //獲得父窗口的客戶區(qū)域
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(); //刷新窗口
}
}
}
}
}