创建透明的可相互覆盖的ActiveX控件

翻译|其它|编辑:郝浩|2004-08-18 14:57:00.000|阅读 1905 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>


用MFC生成的ActiveX控件缺省下不是透明的,把两个控件叠加在一起就可以看出来,要想达到透明的效果,关键是取得父窗口的指针,把绘制工作交给父窗口去做。 

关键代码:

void CMyActiveXCtrl::OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
{
// TODO: Replace the following code with your own drawing code.
CWnd *pWnd;
CDC *pDC = pdc;
CRect rectClient(rcBounds);

//判断是否是使用模式,若是则获得父窗口CDC
if (AmbientUserMode( )) 
{
pWnd = GetParent();
pDC = pWnd->GetDC();
MapWindowPoints(pWnd, rectClient);
}

//绘制控件
pDC->Ellipse(rectClient);
pDC->SetTextColor(TranslateColor(GetForeColor()));
pDC->SetBkColor(TranslateColor(GetBackColor()));
CFont *pOldFont = SelectStockFont(pDC);
pDC->DrawText(m_strText, &rectClient, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
pDC->SelectObject(pOldFont);

//若是使用模式须释放CDC
if (AmbientUserMode())
pWnd->ReleaseDC(pDC);
}


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP