HDC是否属于HWND内部的一部分? 如果术语的话,为什么还有ReleaseDC之类的操作?
EndPaint()函数的作用是release dc...
问题: HDC hdc=GetDC(hWnd);HDC是HWND的一部分吧? 如果是HWND资源的一部分的话,那么是不是,只要HWND存在,那么它内部的HDC就会一直存在,不需要我们每次绘制窗口的时候去先GetDC最后ReleaseDC,只需要在HWND第一次创建之后去GetDC,以后就一直用这个HDC就可以了。
但是我看到的例子都是在WM_PAINT响应函数里面先得到DC最后释放DC。总觉得这是多余的操作啊?
我的理解有什么偏差呢? 还望指点迷津!
[解决办法]
这是API的规范等
GetDC就要对应ReleaseDC,它内部有对应的资源释放等逻辑
[解决办法]
DC是稀缺资源,不是每个窗口都有独立的DC的。在创建窗口类时可以选择使用哪种类型的DC,比如独占DC、共享父窗口DC等等,控件通常都共享父窗口DC,独占DC要尽量避免使用,通常由系统来分配DC。在独占方式下,窗口只需要GetDC一次即可永久使用,其它情况下必须在每次绘制时获取DC,绘制完必须释放。
[解决办法]
DC是线程相关的东西?
[解决办法]
即 : CS_OWNDC
如果没有将窗口样式设定为CS_OWNDC,那么GetDC就是创建一个DC对象
一个 DC 约 500 字节。
[解决办法]
GetDC 是告诉系统"我现在要一个画板,赶紧给我拿一个来"
然后系统就会根据窗口、屏幕等属性创建一个画板给你,这个画板有可能是临时的(因为窗口类不一定包含CS_OWNDC属性)
当你在画板上画东西的时候,系统会随时将你所画(或者所更改)的内容立刻反映到屏幕上上你看见
ReleaseDC 是告诉系统"画板我已经用完了,把画板处理掉吧"
如果你不用ReleaseDC告诉系统画板已使用完,那么这个画板就会一直存在系统中,直到这个画板所属进程关闭为止
[解决办法]
下载我的“定制控件(旋转立方体).rar”0分
http://download.csdn.net/detail/schlafenhamster/4244076
那里就是用的 CS_OWNDC