请教"窗口重绘"的问题
照着书上打了个对话框形式的画图的程序,有画圆画线等功能。一路上磕磕碰碰,但基本完成。
后来看到"窗口重绘"部分,照着书上介绍,注释掉了OnPaint里原有的全部代码,整个函数就是这样:
void CPaintORamaDlg::OnPaint()
{
CPaintDC dc(this);
//吧GDI命令累计到图元文件中,创建一个hmf
HMETAFILE hmf=m_pMF->Close();
//复制当前GDI命令
dc.PlayMetaFile(hmf);
//创建新的DC对象记录后续命令
CMetaFileDC* temp=new CMetaFileDC;
temp->Create();
//更新DC
temp->PlayMetaFile(hmf);
DeleteMetaFile(hmf);
delete m_pMF;
m_pMF=temp;
}
已经检查过很多遍,一个字都没有少。前面画图部分是这样保存的:
dc.MoveTo(m_LineStart);
dc.LineTo(m_LineEnd);
m_pMF->MoveTo(m_LineStart);
m_pMF->LineTo(m_LineEnd);
m_LineStart=m_LineEnd;//连接每个像素点
就是还和没有加一样,完全没有重绘。用其他窗口遮盖,然后挪开,画的东西还是没了。
请大家帮我看看哪儿出了问题,先谢谢了!
[解决办法]
我完全复制了你的代码,我运行了没问题,可以重绘,我用的是VS2005。
所以我找不出你的问题在哪里。