一个关于deleteobject的问题

redshiliu 2010-09-17 11:24:01
在作图时要用到多个画笔比如
dim hPen as long

hPen=CreatePend(...)
......
这里要换另外一种颜色的画笔
需要DeleteObject hPen吗?
如果不删除直接
hPen=CreatePen(...)会造成泄露吗?
...全文
135 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
PctGL 2010-09-20
  • 打赏
  • 举报
回复
不删除就会泄漏,对于刚选入场景的画笔等一些对象不要立刻删除,要在不需要使用的时候删除
jiashie 2010-09-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 redshiliu 的回复:]

也许我说的不清楚,我的意思是这样的
dim hPen as long
dim hPenOld as long

hPen=CreatePen(PS_SOLID,1,RGB(255,0,0)) '第一次创建
hPenOld=SelectObject(Me.hDC,hPen)
这里是一系列的画线
然后我要换一个颜色画笔
hPen=CreatePen(PS_SOLID,1,RGB(0,……
[/Quote]
个人认为会造成泄漏,就相当于C语言中一个指针先指向某一变量A,然后又改指向另一变量B,原先的变量A就再也找不到了,也就忘了回收了。
当然,不知道vb6帮我们回收了没有。
redshiliu 2010-09-17
  • 打赏
  • 举报
回复
MSDN上介绍不要删除一个已经选入设备场景的画笔,刷子
但是比如这样
dim hPen as long

hPen=CreatePen(PS_SOLID,1,RGB(255,0,0))
SelectObject Me.hDc,hPen
Debug.print(DeleteObject(hPen)) '这里删除已经选入设备场景的画笔hPen,返回值非零,说明成功了
但是照理应该是失败啊,另外这样删除有什么不好的地方?
redshiliu 2010-09-17
  • 打赏
  • 举报
回复
也许我说的不清楚,我的意思是这样的
dim hPen as long
dim hPenOld as long

hPen=CreatePen(PS_SOLID,1,RGB(255,0,0)) '第一次创建
hPenOld=SelectObject(Me.hDC,hPen)
这里是一系列的画线
然后我要换一个颜色画笔
hPen=CreatePen(PS_SOLID,1,RGB(0,255,0))'第二次创建(hPen重新指向了新建的画笔,那原来的画笔需要删除吗?)
SelectObject Me.hDC,hPen '这里替换出来的是第一次创建的画笔
这里是一些列画线

还原原来的画笔
SelectObject Me.hDC,hPenOld
DeleteObject hPen

整个过程我创建了两个画笔,最后只做了一次删除,我的意思这样会造成泄漏吗?
  • 打赏
  • 举报
回复
看看
http://www.xtremevbtalk.com/archive/index.php/t-187806.html
jhone99 2010-09-17
  • 打赏
  • 举报
回复
as long
DeleteObject
***************
哪跟哪呀?

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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