首页
社区
课程
招聘
[求助]MFC里设置静态文本的文字颜色没反应?
发表于: 2009-5-18 09:42 8207

[求助]MFC里设置静态文本的文字颜色没反应?

2009-5-18 09:42
8207
CDC *pDC = m_StaticWarn->GetDC();
    pDC->SetTextColor(RGB(255, 0, 0));
    m_StaticWarn->RedrawWindow();

按照找到的资料说,这样应该能把静态文本控件m_StaticWarn的文字颜色变红,但是我试验多次都是仍然黑色。

另一种说法是在WM_CTLCOLOR里用,也测试过,仍然没变化。。。

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

        GetDlgItem(IDC_STATIC_WARN)->GetDC()->SetTextColor(RGB(255,0,0));
       
        Invalidate();

        return hbr;
}

何解?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 164
活跃值: (10)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
2
问了做木马的安全界大牛,解决了。需要配合刷子用。CreateSolidBrush

HBRUSH CWrlsmgr_MFCDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
        if (pWnd->GetDlgCtrlID() == IDC_STATIC_WARN)
        {
                pDC->SetBkMode(TRANSPARENT);
                pDC->SetTextColor(RGB(255,0,0));
                return CreateSolidBrush(RGB(255,255,255));
        }

2009-5-18 16:53
0
雪    币: 2604
活跃值: (64)
能力值: (RANK:510 )
在线值:
发帖
回帖
粉丝
3
呵呵。支持一下小金!

相信对其他朋友也有帮助!
2009-5-18 16:59
0
雪    币: 86
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
原因是redrawWindow时,又恢复黑色设置!!!

如果是静态控件,可以设一个静态控件扩展类,直接根据消息创建重载扩展类的OnPaint()消息函数,
在OnPaint()里随意操作字符串 //包括旋转字符串,这要配合定时器

要用textout()成员函数哦

注: CDC类里应该有TextOut成员,静态控件类有没有TextOut成员/就忘记了

//把CStatic基类的OnPaint()直接重载是不行的,万一程序中/界面集合中有多个静态控件就会混乱了........

//事实上,CStatic类的OnPaint()继承自CWnd,CWnd::OnPaint()被改写,CWnd的好多子类都将混乱,将只调用用户的OnPaint(),
//相信这也是编译器不允许的!!!(同一个实例里),除非CStatic有自己的OnPaint()成员,覆盖掉父类的OnPaint成员,我没试过
//如果不是这样,黑客只需要编写自己的OnPaint覆盖掉基类的CWnd::OnPaint()就会有不错的效果了
2009-5-19 16:11
0
雪    币: 86
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
另外,基类的绘图消息要屏蔽掉,要用到WM_NCPAINT消息

重载一个空操作即可:

void CXXXXDLG::OnNcPaint(){}
2009-5-19 17:25
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
弱弱的问一下,MFC开发出来的程序可以在手机平台运行???(我是菜鸟哦)
2009-5-25 01:07
0
雪    币: 2604
活跃值: (64)
能力值: (RANK:510 )
在线值:
发帖
回帖
粉丝
7
VS2005/2008运行后可以选择开发“智能设备程序”,可以用WM平台的MFC开发。

微软为了吸引更多的开发者,PC平台可以使用的MFC,API等等很多内容都移植到WM平台上来了。

所以有PC平台开发经验的用户要转到WM平台很容易。
2009-5-25 08:36
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
多谢你们帮助我解决了一个问题,哈哈
2009-6-8 19:39
0
游客
登录 | 注册 方可回帖
返回
//