亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請問關于CView某個函數里加入CDC* pDC=GetDC()后畫圖問題?

請問關于CView某個函數里加入CDC* pDC=GetDC()后畫圖問題?

catspeake 2019-07-24 18:15:53
CView某個函數里加入CDC* pDC=GetDC()后畫圖,為什么界面大小一變圖就消失了?
查看完整描述

3 回答

?
慕娘9325324

TA貢獻1783條經驗 獲得超4個贊

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

查看完整回答
反對 回復 2019-07-29
?
一只萌萌小番薯

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);

}



查看完整回答
反對 回復 2019-07-29
  • 3 回答
  • 0 關注
  • 835 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號