MFC中修改static静态框颜色

LQ_14777 2012-10-03 09:27:48
在MFC修改static静态框颜色遇到了一个问题 :不能将颜色对话框选中的颜色选到static对话框显示,求教?

void CDialogYan::OnSt1()
{
// TODO: Add your control notification handler code here
CColorDialog dlg;
UpdateData();
if(dlg.DoModal()==IDOK)
{
m_clr=dlg.GetColor();
}
}

HBRUSH CDialogYan::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: Change any attributes of the DC here

if(pWnd->GetDlgCtrlID()==IDC_ST1)
{
pDC->SetTextColor(m_clr);
pDC->SetBkMode(TRANSPARENT);
hbr=m_brush;
//return m_brush;
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
...全文
359 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2013-03-21
  • 打赏
  • 举报
回复
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
LQ_14777 2012-10-05
  • 打赏
  • 举报
回复
我的那个已经做出来了基本达到我要的效果了,我就调用了CreateSolidBrush这个函数。
傻X 2012-10-04
  • 打赏
  • 举报
回复
我记得高版本的VS,要处理CStatic变色,要触发自我的反射消息。

继承CStatic之后,处理
ON_WM_CTLCOLOR_REFLECT()


HBRUSH CMyStatic::CtlColor(CDC* /*pDC*/, UINT /*nCtlColor*/)
{
// TODO: Change any attributes of the DC here

// TODO: Return a non-NULL brush if the parent's handler should not be called
return NULL;
}



用Invalidate触发是没错的。
LQ_14777 2012-10-04
  • 打赏
  • 举报
回复
vc_qing 如果这个地方改了,其他的地方需要怎么改吗?
vc_qing 2012-10-04
  • 打赏
  • 举报
回复
// hbr=m_brush;
vc_qing 2012-10-03
  • 打赏
  • 举报
回复
if(dlg.DoModal()==IDOK)
{
m_clr=dlg.GetColor();
Invalidate();
}

15,979

社区成员

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

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