比如说CPen pen通过构造函数不是初始化这个gdi对象了吗,为什么还提供像CreatePen这样的函数啊,为什么啊

来源:百度知道 编辑:UC知道 时间:2024/09/21 23:43:31

CPen是MFC的包装,属于用户对象,提供的函数其实就是对API函数的包装,这些函数操纵的对象是系统资源句柄——这里就是HPEN;
而HPEN属于内核对象,是windows系统管理的资源。必须使用CreatePen等API函数来创建(当然这个函数也被CPen包装了)。
很多MFC的类都是这个情况,虽然定义了类对象,但还必须Create才能使用。
你可以看看 CWnd, CDC,CBitmap等MFC类,都是这个情况

Cpen是一个用于管理HPEN资源的类
你自己构造了一个之后,他里面是没有资源句柄的
而CreatePen则是创建了一个HPEN的资源句柄
并将其与CPen绑定

MSDN:
CPen::CreatePen
Creates a logical cosmetic or geometric pen with the specified style, width, and brush attributes, and attaches it to the CPen object.