C++程序MFC问题

来源:百度知道 编辑:UC知道 时间:2024/05/23 17:10:57
创建的为单文档
MFC
之后在View写了以下一段
void CTXTMFCView::OnDraw(CDC* pDC)
{
CTXTMFCDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);

CString str("111111");
pDC->TextOut(50,50,str);

CSize sz = pDC->GetTextExtent(str);
pDC->SelectClipPath(RGN_DIFF);
pDC->BeginPath();
pDC->Rectangle(50,50,50+sz.cx,50+sz.cy);
pDC->EndPage();
for(int i = 0;i<300;i=i+10)
{
pDC->MoveTo(i,0);
pDC->LineTo(i,300);
pDC->MoveTo(0,i);
pDC->LineTo(300,i);
}
}
期望实现功能为输出一字符串后
再输出一片横竖线交错的区域
并且该区域不会覆盖在字体上面
但是实际结果没有出现横竖线
发现只要调用pDC->BeginPath();
这个后,之后再用pDC输出任何线条都无效
请高手指教原因
此代码是按照书上所写编写的.
我用的是VS2008

没有出现横竖线是因为你pDC->EndPage();打错了,应该是pDC->EndPath();
要让横竖线交错的区域不会覆盖在字体上面则应该把pDC->SelectClipPath(RGN_DIFF);放到pDC->EndPath();之后就可以了。