zoukankan      html  css  js  c++  java
  • MFC~~~~~~edit_control 和 静态文本框设置透明和字体设置

    一  字体设置比较简单~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    1 。在 testdlg.h(假设工程名字为test)中 设置一个 public 的 CFont font;

    2 。在testdlg.cpp中的OnInitDialog函数最后面加入

    font.CreateFont(25,0,0,0,100,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,

    CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FF_SWISS,"微软雅黑");

     参数说明:
     nHeight         :字体高度.>0:字体的高度值;=0:字体采用缺省直.<0:此值的绝对
    值为高度.
     nWidth          :字体宽度.
     nEscapement     :文本行的倾斜度.
     nOrientation    :字符基线的倾斜度.
     nWeight         :字体的粗细.如下:
        .FW_DONTCARE
        .FW_THIN
        .FW_EXTRALIGHT
         .....
     bItalic         :字体是否为斜体
     bUnderline      :字体是否带下划线
     cStrikeOut      :字体是否带删除线
     nCharSet        :字体的字符集
        .ANSI_CHARSET
        .DEFAULT_CHARSET
        .SYMBOL_CHARSET
         ......
     nOutPrecision   :字符的输出精度
     nClipPrecision :字符裁剪的精度
     nQuality        :字符的输出质量
     nPitchAndFamily :字符间距和字体族(低位说明间距,高位说明字符族)
     lpszFacename    :字体名称 


    m_edit.SetFont(&font,FALSE);

    其中m_edit为该控件的控件变量 如果没事先设置 可以使用

     CEdit *m_Edit=(CEdit *)GetDlgItem(IDC_EDIT1);
     m_Edit->SetFont(&m_Font,FALSE); 

    二 透明设置~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    有时候会想让控件透明以便美化

    其中 edit_control设置透明可以如下

    在testdlg中加入OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)的消息响应

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

    if(nCtlColor == CTLCOLOR_STATIC)
    {
    pDC
    ->SetBkMode(TRANSPARENT);
    return (HBRUSH)::GetStockObject(NULL_BRUSH);
    }
    return hBrush;
    }

    但这样会有问题 需要强制刷新  

     InvalidateRect(EDIT窗口句柄, NULL, FALSE); 
    所以我直接用别人写好的类啦!~~~~~~~~~~~~~~~~
    附加如下 
    我擦,找不到上传附件的地方啊 先继续写
     file.rar~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    将里面的EditTrans.h EditTrans.pp 分别加入工程 
    替换MFC的原来的类有如下方法 

    一~~~给你的按钮关联一个控件变量 比如CButton m_ctlButton;

    然后在.h文件中将CButton换成CMyButton


    二~~~CMyButton m_btnMyButton;
    然后在对话框的OnInitDialog (或任何适当的地方) 中调用:
    m_btnMyButton.SubclassDlgItem(IDC_BUTTON1, this);
    假设你已经有了一个窗口的指针,或者你工作在一个CView或其他CWnd派生类中里面的控件被动态的创建,或者你不想使用SubclassDlgItem函数,那么你可以使用下面的方法:
    CWnd* pWnd = GetDlgItem(IDC_BUTTON1); // or use some other method to get
    // a pointer to the window you wish
    // to subclass
    ASSERT( pWnd && pWnd->GetSafeHwnd() );
    m_btnMyButton.SubclassWindow(pWnd->GetSafeHwnd());

    效果图如下 
  • 相关阅读:
    Bootstrap-table一个表格组件神器(学习二)实战
    JS基础_for循环练习3
    JS基础_for循环练习2
    JS基础_for循环练习1
    JS基础_for循环
    JS基础_while的练习2
    JS基础_while的练习1
    JS基础_while循环
    JS基础_条件分支语句:switch语句
    JS基础_if注意问题
  • 原文地址:https://www.cnblogs.com/xd-jinjian/p/3378823.html
Copyright © 2011-2022 走看看