正文

主窗體設計(13)

Visual C++項目開發(fā)案例全程實錄(第2版) 作者:明日科技


 

處理CPanel類的WM_SIZE消息,在窗口大小改變時,調(diào)整預覽窗口的大小。代碼如下:

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

}

}

}

}

}


上一章目錄下一章

Copyright ? 讀書網(wǎng) leeflamesbasketballcamps.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號