请教画笔CreatePen使用后,DeleteObject的正确用法?
zanze 2007-05-09 08:15:44 我自己写的是这样:(API声明就省略了……)
Dim WinDC As Long, CPen As Long, XY As POINTAPI
WinDC = GetWindowDC(0)
CPen = CreatePen(PS_SOLID, 4, vbRed)
SetROP2 WinDC, 10 '设置为非异或笔
SelectObject WinDC, CPen '''''''''''''将和下面的代码对比
MoveToEx WinDC, 200, 200, XY
Rectangle WinDC, 200, 200, 400, 400 '画矩形
DeleteObject CPen '删除画笔
ReleaseDC 0, WinDC
后来在API浏览器FoxAPI中的例子中看到不是这样写的,比我多了一点··
按照代码例子,我的代码应该写成:
''''''''''''''''''''''''''''''''''''''''''
SetROP2 WinDC, 10 '设置为非异或笔
DeleteObject SelectObject(WinDC, CPen) '和上面代码对比
MoveToEx WinDC, 200, 200, XY
'''''''''''''''''''''''''''''''''''''''''
为什么可以在为DC选入画笔后,直接就删除了??
经过测试,这样的代码也能正常使用来画···(我原来的代码也是能画的)
后来看到网上有些代码是这样:
Dim WinDC As Long, CPen As Long, XY As POINTAPI
WinDC = GetWindowDC(0)
CPen = CreatePen(PS_SOLID, 4, vbRed)
SetROP2 WinDC, 10 '设置为非异或笔
Old = SelectObject(WinDC, CPen) '''''''''和上面的代码对比
MoveToEx WinDC, 200, 200, XY
Rectangle WinDC, 200, 200, 400, 400 '画矩形
DeleteObject Old ''''''''''''''''''''''''''''为什么要Delete那个SelectObject的返回值啊??不是删除CPen就可以了吗?
DeleteObject CPen '删除画笔
ReleaseDC 0, WinDC
经过测试:DeleteObject Old 的返回值是1,表示删除成功的
我还是不大明白为什么要删除SelectObject的返回值
请教大虾,确定一下完全正确的使用方法!!!!