我的测试代码如下,但是始终画笔是系统默认的画笔,黑色的单线,得不到我在HPEN里面设置的颜色值不知道哪里错了,请指正
CPen m_Pen;
m_Pen.CreatePen(PS_COSMETIC,5,RGB(130, 120, 120));
hGloPen = (HPEN)m_Pen;
CPen* pPen ;
CPen* ppPen = pPen->FromHandle(hGloPen);
CPen* oldPen;
oldPen = m_pCurDC->SelectObject(ppPen);
m_pCurDC->MoveTo(m_ptOld);
m_pCurDC->LineTo(point);
m_ptOld = point;
if(hGloPen != NULL)
{
m_pCurDC->SelectObject(oldPen);
}
CPen m_Pen;
m_Pen.CreatePen(PS_COSMETIC,5,RGB(130, 120, 120));
hGloPen = (HPEN)m_Pen;
CPen* pPen ;
CPen* ppPen = pPen->FromHandle(hGloPen);
CPen* oldPen;
oldPen = m_pCurDC->SelectObject(ppPen);
m_pCurDC->MoveTo(m_ptOld);
m_pCurDC->LineTo(point);
m_ptOld = point;
if(hGloPen != NULL)
{
m_pCurDC->SelectObject(oldPen);
}
m_Pen.CreatePen(PS_COSMETIC,5,RGB(130, 120, 120));
hGloPen = (HPEN)m_Pen;
CPen* pPen ;
CPen* ppPen = pPen->FromHandle(hGloPen);
CPen* oldPen;
oldPen = m_pCurDC->SelectObject(ppPen);
m_pCurDC->MoveTo(m_ptOld);
m_pCurDC->LineTo(point);
m_ptOld = point;
if(hGloPen != NULL)
{
m_pCurDC->SelectObject(oldPen);
}
CPen m_Pen;
m_Pen.CreatePen(PS_COSMETIC,5,RGB(130, 120, 120));
CPen *oldPen;
oldPen = m_pCurDC->SelectObject(m_Pen);
m_pCurDC->MoveTo(m_ptOld);
m_pCurDC->LineTo(point);
m_ptOld = point;
m_pCurDC->SelectObject(oldPen);LOGPEN logpen;
读取HPEN的信息m_Pen.GetObject(sizeof(LOGPEN),&logpen);
CPen m_Pen;
m_Pen.CreatePen(PS_COSMETIC,5,RGB(130, 220, 220));
hGloPen = (HPEN)m_Pen;
CPen* pPen ;//= new CPen(PS_COSMETIC,5,RGB(230, 120, 120));
CPen::FromHandle(hGloPen);
CPen* ppPen = pPen->FromHandle(hGloPen);
CPen* oldPen;
if(ppPen != NULL)
{
oldPen = m_pCurDC->SelectObject(ppPen);
}
else
{
oldPen = m_pCurDC->SelectObject(&m_Pen);
}
m_pCurDC->MoveTo(m_ptOld);
m_pCurDC->LineTo(point);
m_ptOld = point;
m_pCurDC->SelectObject(oldPen);
但是如果一旦我把HPEN的赋值放到其他函数中,系统选取的画笔就是默认画笔,但是ppPen指针又不为空,真的好奇怪呀!
DeleteObject(hGloPen);
hGloPen = (HPEN)m_Pen.Detach();
CPen myPen;
myPen.CreateSolidPen( PS_COSMETIC, 1, RGB(255,255,0) );
HPEN hMyPen = (HPEN) myPen;
难道有问题?