void CText1fontView::OnDraw(CDC* pDC)
{
CText1fontDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CString outstr1,outstr2;
outstr1.LoadString(IDS_STRING129);//加载字符串
outstr2.LoadString(IDS_STRING131);//加载字符串
//outstr1="1.使用函数CreatePointFont()创建宋体字";
//outstr2="2.使用函数CreateFontIndirect()创建倾斜、带下划线的黑体字";

CFont *OldFont1,*OldFont2,NewFont1,NewFont2;
LOGFONT MyFont = {
30,
10,
0,
0,
0,
1,
1,
1,
ANSI_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_CHARACTER_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH,
"黑体"
};//自定义设置字体
CString str;
str="创建字体的几种方法";
pDC->TextOut(0,10,str);//输出字符串str NewFont1.CreatePointFont(200,"宋体",NULL);
OldFont1=pDC->SelectObject(&NewFont1);c//将创建的字体加入设备环境
pDC->TextOut(0,60,outstr1); NewFont2.CreateFontIndirect(&MyFont);
OldFont2=pDC->SelectObject(&NewFont2);
pDC->TextOut(20,120,outstr2); CSize sz1=pDC->GetTextExtent(outstr1);//获取字符串的长度与高度
CSize sz2=pDC->GetTextExtent(outstr2);//获取字符串的长度与高度 pDC->BeginPath();
pDC->Rectangle(0,60,sz1.cx,60+sz1.cy);//显示与字符串等大等长的矩形 pDC->SelectClipPath(RGN_AND);
pDC->Rectangle(20,120,20+sz2.cx,120+sz2.cy);//显示与字符串等大等长的矩形
pDC->EndPath();
pDC->SelectClipPath(RGN_DIFF);//裁剪区域
for(int i = 1; i <= 800; i+=10)//输出网格
{
pDC->MoveTo(0,i);
pDC->LineTo(800,i);
pDC->MoveTo(i,0);
pDC->LineTo(i,800);
}
pDC->SelectObject(OldFont1);
NewFont1.DeleteObject();
pDC->SelectObject(OldFont2);
NewFont2.DeleteObject();
}
帮我看一下,为什么第三行的字符串区域可以被裁剪出来而第二行字符串的区域只有一部分被裁剪出来呢?明明设置的是用同样的方法设置的,高手帮忙指点指点,不胜感激额。