CDC,CClientDC都是什么意思啊???

苏克贝塔03 2010-07-14 04:20:01
我写的画线函数,可为什么总是提示说:The variable 'pDC' is being used without being defined.(运行时错误)

void CSy5View::drawline(CDC* pDC,int x1, int y1, int x2, int y2)
{
pDC->MoveTo(x1,y1);
pDC->LineTo(x2,y2);
}



...全文
79 点赞 收藏 14
写回复
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
_JeffreyWu 2010-07-15
指针没有分配内存
回复
lvyexian 2010-07-15
CDC* pDC只是定义,但pDC本质是个变量,所有变量都要初始化后才能使用,

你可以把CDC *pDC=GetDC()看成是初始化pDC。
回复
苏克贝塔03 2010-07-15
都是强人啊。。呵呵
回复
黑泡泡选手 2010-07-14
对,是这样的,必须初始化,再使用,我上面说错了额,Platform SDK的 ::GetDC(hWnd)函数是返回一个dc句柄
回复
LRYIVAN 2010-07-14
一时手快,写错了,上面有一句应该是
MemDC.CreateCompatibleDC(pDC);
回复
LRYIVAN 2010-07-14
一个指针声明了,并不是就是定义了,必须要为他分配空间才行

一般如果是屏幕DC:
CDC *pDC=GetDC();

如果是内存DC,

CDC MemDC;
ImageDC.CreateCompatibleDC(pDC);

内存DC一般是为了防止直接画在屏幕DC上,造成屏幕的闪烁感,所以要选一个中间的画布
MemDC闪烁时,屏幕看不见
回复
黑泡泡选手 2010-07-14
如果你放在OnDraw函数中把pDC,传进去就没问题了
回复
黑泡泡选手 2010-07-14
[Quote=引用 5 楼 jichao1010 的回复:]
引用 2 楼 worcy_kiddy 的回复:
pDC没有定义就使用了。。。

CDC *pDC;
在这不是定义了吗?
能说具体一点吗?
[/Quote]

GetDC()函数是获得显示上下文的一个句柄,返回设备句柄,初始化pDC。。。
回复
Eleven 2010-07-14
[Quote=引用 5 楼 jichao1010 的回复:]
引用 2 楼 worcy_kiddy 的回复:
pDC没有定义就使用了。。。

CDC *pDC;
在这不是定义了吗?
能说具体一点吗?
[/Quote]
囧,CDC* pDC = GetDC();
回复
苏克贝塔03 2010-07-14
[Quote=引用 2 楼 worcy_kiddy 的回复:]
pDC没有定义就使用了。。。
[/Quote]
CDC *pDC;
在这不是定义了吗?
能说具体一点吗?

回复
fishion 2010-07-14

CDC *pDC=GetDC()
回复
codecola 2010-07-14
CDC *pDC=this->GetDC();
回复
黑泡泡选手 2010-07-14
pDC没有定义就使用了。。。
回复
苏克贝塔03 2010-07-14


void CGraphic2View::drawline(CDC *pDC,int x1 ,int y1,int x2,int y2)
{
pDC->MoveTo(x1,y1);
pDC->LineTo(x2,y2);
}


void CGraphic2View::OnHuaxian()
{
// TODO: 在此添加命令处理程序代码
CDC *pDC;
drawline(pDC,m_beging.x,m_beging.y,m_end.x,m_end.y);

}
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告
暂无公告