在窗口类里绘图,绘出的字符是以工具栏的左上角为(0,0)原点,所以"abc"的显示与工具栏重叠在一起了。如下:
void CMainFrame::DoPixels(CDC* pDC)
{
pDC->TextOut(0,0,"abc");
}
而在视图类里绘图,同样绘出的字符却是以作图区白板的左上角为(0,0)原点,也就是在紧贴工具栏的下面,所以绘出的"abc"就正常的显示在视区里的第一行。如下:
void CMyDemoView::OnDraw(CDC* pDC)
{
pDC->TextOut(0,0,"abc");
}同样的函数,为何会有这种差别?
void CMainFrame::DoPixels(CDC* pDC)
{
pDC->TextOut(0,0,"abc");
}
而在视图类里绘图,同样绘出的字符却是以作图区白板的左上角为(0,0)原点,也就是在紧贴工具栏的下面,所以绘出的"abc"就正常的显示在视区里的第一行。如下:
void CMyDemoView::OnDraw(CDC* pDC)
{
pDC->TextOut(0,0,"abc");
}同样的函数,为何会有这种差别?
CView不包括
同样的textOut函数,难道自己会判断在哪个类里被调用吗?
所有的绘图操作都是在当前的DC上操作的。
显然,视图类和框架类的DC中的画图区域是不一样得。
在框架类中可得到工具栏的客户区,从而找到空白区的左上角点
你说的“那是因为你的pDC不一样啊,两个类里的CDC对象可能有不同。”
是不是就是说在不同的类里对CDC的textOut函数做了不同的重载?
这是你推测的还是书上有此说明?困扰中。盼解。先谢大家