重拾MFC小细节之设置静态文本前、背景色

来源:互联网 发布:evdo.evdo_a是什么网络 编辑:程序博客网 时间:2024/05/23 02:00

      在大一时,学过MFC,不过那时刚接触编程,C/C++学完不久,跟重要的是没动手编程,后来又做ACM去了。现在大三了,各种实验课设老师都要求用VC可视化,于是借着机会学了点MFC皮毛,在此总结一些常用技巧,简直贻笑大方了!由于很多东西没有上升的理论层面,在此只能介绍下应用,方便学习交流,同时以备后面用到。

       首先谈谈设置静态文本前、背景色。我只用到了其中一种,在此列出。

        要使静态文本透明化,首先添加消息响应函数WM_CTLCOLOR。一般步骤为点击菜单栏“查看”,选择“建立类向导”,在相应对话框类中选择”WM_CTLCOLOR“,系统自动添加HBRUSH XXXX类::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 函数,然后在里面添加代码即可,如下:

1.此代码是不显示背景色的。

/************************************************功能:改变对话框中静态文本的颜色对话框*************************************************/HBRUSH MyLoginDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) {HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);if(nCtlColor==CTLCOLOR_STATIC){pDC->SetBkMode(TRANSPARENT);return HBRUSH(GetStockObject(HOLLOW_BRUSH));}return hbr;}

 效果图如下:



2.此代码是显示背景色的。

/************************************************功能:改变对话框中静态文本的颜色对话框*************************************************/HBRUSH MyLoginDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) {HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);return hbr;}
效果图如下:


        注意在创建该对话框出即调用该类对话框DoModal()前添加语句SetDialogBkColor(RGB(100,200,100),RGB(0,0,255))设置静态文本的颜色。


       以上代码可能参照先驱博客,在此表示感谢!如有错误,欢迎大牛斧正!


0 0
原创粉丝点击