CClientDC的问题

PRIVATEXFQ 2003-10-15 10:36:13
我在一个View中定义了一个 CDC* m_dc;
然后再OnCreate中写了
CClientDC dc(this);
m_dc=&dc;
然后再在OnLButtonUp中调用m_dc时画线时出现了错误
如果我把 CClientDC dc(this); m_dc=&dc;写在OnLButtonUp中就没问题了
请问这是为什么?
...全文
181 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
romanticist 2003-10-15
  • 打赏
  • 举报
回复
然后再OnCreate中写了
CClientDC dc(this);
m_dc=&dc;
中创建的dc是局部变量,OnCreate函数退出之后dc被释放,所以m_dc所指的dc也不存在了。
qbql 2003-10-15
  • 打赏
  • 举报
回复
怎么跑到LBUTTONDOWN里面去了
应该在ondraw中画阿
binjuny 2003-10-15
  • 打赏
  • 举报
回复
你在那个函数中用的哦~~~~~
xiaohyy 2003-10-15
  • 打赏
  • 举报
回复
还是多看看c++的书吧。反复强调局部指针不能保存。。
阿甘 2003-10-15
  • 打赏
  • 举报
回复
dc不存在是因为,在CClientDC的destructor里面自动调用了ReleaseDC
阿甘 2003-10-15
  • 打赏
  • 举报
回复
OnCreate结束以后,这个dc已经不存在了,m_dc指向了无效的位置

再调用当然出错,dc这东西需要的时候再获取比较安全
zhansg 2003-10-15
  • 打赏
  • 举报
回复
m_dc指向的是局部指针,在他的作用域外当然就无效了;
你可以在OnLButtonUp()中用GetDC()取得当前DC,注意用完要ReleaseDC();
另应习惯在OnDraw或OnPaint中进行GDI操作。

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧