为了账号安全,请及时绑定邮箱和手机立即绑定

请问关于CView某个函数里加入CDC* pDC=GetDC()后画图问题?

请问关于CView某个函数里加入CDC* pDC=GetDC()后画图问题?

慕雪6442864 2019-08-16 15:10:10
CView某个函数里加入CDC* pDC=GetDC()后画图,为什么界面大小一变图就消失了?
查看完整描述

3 回答

?
达令说

TA贡献1821条经验 获得超6个赞

界面大小改变,会发送窗口区无效的命令,也就是WM_PAINT,然后会导致窗口进行重绘。然后系统响应这个消息的顺序通常是:先调用OnPaint(消息处理函数),然后在OnPaint里面调用OnDraw(不是消息相应函数)函数,所以如果你想让窗口改变以后你的图像还在,那么你应该讲绘图的命令写在OnDraw函数里面,或者说干脆直接重载一遍OnDraw函数,然后根据自己的意愿任意绘图。

查看完整回答
反对 回复 2019-08-24
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

你如何添加的 ,是不是下面这样子,没问题啊
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-08-24
  • 3 回答
  • 0 关注
  • 690 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信