在Ondrow()中画图时用如下代码:
CDC* p = GetDC( );
for(int t= 100; t<150; t++)
{
p->Ellipse (i,j,k,f);
i--;
j--;
k--;
f--;
}
ReleaseDC(p);
出现两个语法问题,请各位指教:
error C2660: GetDC : function does not take 0 parameters
error C2660: ReleaseDC : function does not take 1 parameters
在OnDraw中,你完全可以用CClientDC dc(this);获得客户区的DC.而且不用调用ReleaseDC(),因为在CClientDC的析构函数中已经调用了。
如果你真的想用GetDC()的话,可以这样写:CDC* pDC=CDC::GetDC();
可能编译器以为你调用了API函数GetDC(HWND hWnd);
OnDraw(CDC* pDC)函数的参数里不是传过来一个CDC的指针了吗,那就是一个DC,就可以直接用吧
不用再GetDE()了吧 感觉是重复。用CClientDC do(this)是实时响应吧,在OnDraw里已经得到pDC了 就不要用CClientDC do(this)再建立一个了吧
我理解的对不对?
我这样没有问题:
void CCDCView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
int i, j, k, f;
i=50;
j = 50;
k = 200;
f = 200;
CDC* p = GetDC( );
for(int t= 100; t<150; t++)
{
p->Ellipse (i,j,k,f);
i--;
j--;
k--;
f--;
}
ReleaseDC(p);
CView::OnLButtonDown(nFlags, point);
}