在OnDraw()中写如下代码:
CFont font;
font.CreateFont(35,0,0,0,400,false,false,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_ROMAN,"Times New Roman");
pDC->SelectObject(font);
pDC->TextOut(0,0,"aaa")
这样定义后,字体aaa就变大了,
请问如何恢复到默认的原来的字体
以及怎样恢复环境和释放GDI资源
CFont font;
font.CreateFont(35,0,0,0,400,false,false,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_ROMAN,"Times New Roman");
pDC->SelectObject(font);
pDC->TextOut(0,0,"aaa")
这样定义后,字体aaa就变大了,
请问如何恢复到默认的原来的字体
以及怎样恢复环境和释放GDI资源
font.CreateFont(35,0,0,0,400,false,false,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_ROMAN,"Times New Roman");
oldFont=pDC->SelectObject(&font);//&符号少了会发生错误
pDC->TextOut(0,0,"aaa")
...
pDC->SelectObject(oldFont);//少了这句font无法释放
font.CreateFont(35,0,0,
0,400,false,false,0,
ANSI_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,DEFAULT_PITCH|FF_ROMAN,
"Times New Roman");
CFont *OldFont=pDC->SelectObject(&font);
pDC->SelectObject(font);
pDC->TextOut(0,0,"aaa");
pDC->SelectObject(OldFont);
pDC->TextOut(100,100,"Richuen");
在OnDraw下不用释放。
font.CreateFont(35,0,0,
0,400,false,false,0,
ANSI_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,DEFAULT_PITCH|FF_ROMAN,
"Times New Roman");
CFont *pOldFont=pDC->SelectObject(&font);
pDC->SelectObject(font);
pDC->TextOut(0,0,"aaa");
pDC->SelectObject(pOldFont);
pDC->TextOut(100,100,"Richuen");注意:如果是通过GetWindowDC()所获取的GDI设备,需用ReleaseDC()释放,
这里,因为OnDraw()中CDC* pDC为传入参数,不需要人工释放.
int nDC=pDC->SaveDC();
CFont font;
font.CreateFont(35,0,0,0,400,false,false,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_ROMAN,"Times New Roman");
pDC->SelectObject(font);
pDC->TextOut(0,0,"aaa");
pDC->RestoreDC(nDC);
int nSaveDC=pDC->SaveDC();
CFont font;
font.CreateFont(35,0,0,0,400,false,false,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_ROMAN,"Times New Roman");
pDC->SelectObject(font);
pDC->TextOut(0,0,"aaa");
pDC->RestoreDC(nSaveDC);
font.delete();
但是老师说不合格;
要我看windows API的书!!!
请指教!!!!
100分我愿意出!!
你老师应该要你看MFC的CDC类参考书啊?上面用的都是MFC。
是运行在OnDraw(CDC* pDC)下的。
font.CreateFont(35,0,0,
0,400,false,false,0,
ANSI_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,DEFAULT_PITCH|FF_ROMAN,
"Times New Roman");
CFont *OldFont=pDC->SelectObject(&font);
pDC->SelectObject(font);
pDC->TextOut(0,0,"aaa");
pDC->SelectObject(OldFont);
pDC->TextOut(100,100,"Richuen");