SelectObject的问题

来源:百度知道 编辑:UC知道 时间:2024/09/15 03:21:11
CClientDC dc(this);
CPen pen(m_nLineStyle,m_nLineWidth,m_clr);//定义画笔的样式,宽度和颜色
dc.SelectObject(pen);//选择一个GDI绘制对象

为什么dc.SelectObject(pen)和dc.SelectObject(&pen)两种方法都是正确的,我只知道SelectObject()函数的参数是一个指针?
改成dc.SelectObject(pen)以后没有提示出错,可以运行的。

CPen是继承CGdiObject的
如果直接传pen过去的话,会先调用父类的CGdiObject::operator HGDIOBJ()来得到CGdiObject类里面的m_hObject对象,
然后CDC::SelectObject(HGDIOBJ hObject);函数

如果是&pen的话是调用CDC::SelectObject(CPen* pPen);函数.
两个调用的重载函数是不同的.