3 回答

TA貢獻1936條經(jīng)驗 獲得超7個贊
界面大小改變,會發(fā)送窗口區(qū)無效的命令,也就是WM_PAINT,然后會導(dǎo)致窗口進行重繪。然后系統(tǒng)響應(yīng)這個消息的順序通常是:先調(diào)用OnPaint(消息處理函數(shù)),然后在OnPaint里面調(diào)用OnDraw(不是消息相應(yīng)函數(shù))函數(shù),所以如果你想讓窗口改變以后你的圖像還在,那么你應(yīng)該講繪圖的命令寫在OnDraw函數(shù)里面,或者說干脆直接重載一遍OnDraw函數(shù),然后根據(jù)自己的意愿任意繪圖

TA貢獻1810條經(jīng)驗 獲得超5個贊
你如何添加的 ,是不是下面這樣子,沒問題啊
void CTestzhidaodlgDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
static int i=0;
CDC *pDC=GetDC();
if(i==1)
pDC->Rectangle(0,0,100,100);
i++;
ReleaseDC(pDC);
}
- 3 回答
- 0 關(guān)注
- 606 瀏覽
添加回答
舉報