3 回答

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

TA貢獻1795條經驗 獲得超7個贊
你如何添加的 ,是不是下面這樣子,沒問題啊
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 關注
- 835 瀏覽
添加回答
舉報