MFC中关于CDC和FillRgn();

如下程序:cd.FillRgn(&rg2,&br);如果用这一句就会出错,为什么;else{CDC*p=this->GetDC();CDCcd;CRgnrg1,rg2,r... 如下程序:cd.FillRgn(&rg2,&br); 如果用这一句就会出错,为什么;

else
{
CDC *p=this->GetDC();

CDC cd;
CRgn rg1,rg2,rg;
CBrush br;
br.CreateSolidBrush(RGB(255,0,0));
rg1.CreateRectRgn(10,10,100,100);
rg2.CreateEllipticRgn(10,10,200,200);
rg2.CombineRgn(&rg1,&rg2,RGN_XOR);
//cd.FillRgn(&rg2,&br); 这里如果用对象引用FillRgn()会出错,为什么;
p->FillRgn(&rg2,&br);
CDialogEx::OnPaint();
}
展开
 我来答
bhtzu
推荐于2018-04-04 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4205万
展开全部
不是因为你使用对象(而不是指针)的原因出错。
而是因为,你的cd根本没有创建,只是声明了,没有产生实际的设备关联DC,这时候在cd上的物理操作都会报错。
你在使用之前,用任何一种方法创建或者获取了dc,都可以,比如:
cd.CreateCompatiableDC(p);
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式