Static自绘控件导致控件上的其他控件不可见了

aboayan 2015-05-12 02:32:01
我用CStatic魏基类,参照网上的办法做了一个可以滚动显示字幕的自绘控件。控件效果是实现了,但是一直存在一个问题,就是控件放上去后,我想放个其他控件在其上,比如按钮,或者其他文本控件。但现在的问题来了,控件放上去后,总是被自绘控件所覆盖挡住了,无论如何改变Z order也没有用。

CStatic自绘控件实现了OnPaint事件,实现如下
void CBannerStatic::OnPaint()
{
CPaintDC dc(this);

CRect rcBounds = m_rcBounds;
rcBounds.left = m_nTextOut;

//------------------------------------------------------
// do the background and make sure that we don't
// paint outside of our client area
//
dc.FillRect(m_rcBounds, &m_brBackGround);
dc.IntersectClipRect(m_rcBounds);

m_nTextLength = 0;
m_vnStrings.clear();

//------------------------------------------------------
// draw each string with its own font
//
for (int i = 0; i < m_astrData.GetSize(); i++)
{
CColorString* pstrCurrent = reinterpret_cast<CColorString*>(m_astrData.GetAt(i));
TEXTMETRIC stFontMetrics;
SIZE stSize;

DetermineFont(pstrCurrent);

//---------------------------------------------------
// set up the drawing attributes
//
dc.SelectObject(&m_ftText)->DeleteObject();
if (pstrCurrent->GetBackColor() == ::GetSysColor(COLOR_BTNFACE))
{
dc.SetBkColor(m_crBackColor);
}
else
{
dc.SetBkColor(pstrCurrent->GetBackColor());
}
dc.SetTextColor(pstrCurrent->GetColor());
dc.GetOutputTextMetrics(&stFontMetrics);

GetTextExtentPoint32(dc.GetSafeHdc(), *pstrCurrent, pstrCurrent->GetLength(), &stSize);

//---------------------------------------------------
// do the drawing and update the position-dependent
// stuff
//
dc.DrawText(*pstrCurrent, rcBounds, DT_LEFT);
rcBounds.left += stSize.cx + stFontMetrics.tmOverhang;
m_vnStrings.push_back(m_nTextOut + m_nTextLength);
m_nTextLength += stSize.cx + stFontMetrics.tmOverhang;
}
}
...全文
194 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2015-06-13
  • 打赏
  • 举报
回复
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
aboayan 2015-05-12
  • 打赏
  • 举报
回复
其实我是用Static做一个滚动文字的通知栏,但是在滚动的时候,可能有别的控件在其上。希望的效果是在其上的控件始终在其上,能被看到,并能被点击,但是实际的效果是控件出不来了。明白我的意思吗? 是不是我根本就不能从Static继承,而应该从CButton继承?
昨夜无风 2015-05-12
  • 打赏
  • 举报
回复
什么意思??你在自绘的CSTATIC上放按钮??那你不如直接把按钮也自绘出来!或者再OnColorCtrl中对CSTAIC进行自绘!

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧