zoukankan      html  css  js  c++  java
  • VC、MFC中设置控件的背景色、标题、字体颜色、字体要注意的地方[转]

    在MFC中设置控件的背景色、字体、字体颜色、标题等属性主要是利用OnCtlColor函数来实现。

    如:
    HBRUSH CAlarm::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_STATIC_SHOW_MSG)
    {
    pWnd->SetWindowText("123");
    pDC->SetBkMode(TRANSPARENT);
    pDC->SetTextColor(RGB(0,0,0));
    //m_hStaticBkColor是CBrush类类型的变量,要在构造函数中初始化为指定的颜色
    hbr = m_hStaticBkColor;
    }
    // TODO: Return a different brush if the default is not desired
    return hbr;
    }
    注意在OnCtlColor函数中:
    控件的标题、字体通过CWnd类的SetWindowText和SetFont函数来设置。
    控件的背景色通过添加一个CBrush类类型的画刷来设置,控件的字体背景色、字体颜色通过CDC类的SetBkMode、SetBkColor和SetTextColor函数来设置。此外,不要在OnCtlColor函数中调用CDC类的TextOut函数,如果调用了SetBkMode(TRANSPARENT)再去调用SetBkColor就没有作用了(没有先后顺序,SetBkMode(TRANSPARENT)可以在随意的位置)。
     
     
    此外,我们有时会在OnPaint或OnInitDialog或OnInitialUpdate函数中设置控件的外观属性。
    但是在OnPaint函数中设置控件的字体颜色(即SetBkMode和SetTextColor)只能在TextOut函数中有效,在SetWindowText函数中是无效的。TextOut函数一般在OnPaint函数中调用的,并且可以通过SetBkMode和SetTextColor设置字体的颜色和字体的背景色。当然SetWindowText也可以在OnPaint函数中调用,只不过就不能在OnPaint函数中通过SetBkMode和SetTextColor设置字体的颜色和字体的背景色。
     
     
    因此,改变控件的外观属性主要是在OnCtlColor函数中实现,当然还要据实际情况,有可能在OnPaint或OnInitDialog或OnInitialUpdate函数中设置控件的外观属性。此外,如果要改变控件背景色,除了在OnCtlColor中利用CBrush类类型的画刷来设置外,还可以利用CDC类型的FillSolidRect函数在合适的函数中来设置。至于字体的设置,据实际情况在合适的函数中设置,如果要用到TextOut的,就在OnPaint函数中调用吧。
     
    转自:http://blog.sina.com.cn/s/blog_6230f1a30100wc21.html
  • 相关阅读:
    Matlab曲面拟合和插值
    插值(scipy.interpolate)
    坐标系旋转后的点坐标、坐标点旋转后的点坐标
    halcon相机标定及图像矫正
    别再问我们用什么画图的了!问就是excalidraw
    Windows下如何玩转火热的go-zero
    我用go-zero开发了第一个线上项目
    Java基础差,需要怎么补
    2019-给你六个建议
    简说Java线程的那几个启动方式
  • 原文地址:https://www.cnblogs.com/vranger/p/3568880.html
Copyright © 2011-2022 走看看