VC CFONT

改变控件字体

一、

CEdit *pEdit=(CEdit*)GetDlgItem(IDC_QDQUERY_EDIT);
	CFont * pFont = pEdit->GetFont();
	pFont->CreatePointFont(180,_T("楷体"));
	pEdit->SetFont(pFont,TRUE);

二、

 HBRUSH CDlg_SignIn::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
 HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); 
 // TODO:  Change any attributes of the DC here
   if(nCtlColor == CTLCOLOR_STATIC)
       {
       if(pWnd->GetDlgCtrlID()== IDC_REGARD)
           {
               pDC->SetTextColor(RGB(255,0,0));
               pDC->SetBkColor(RGB(251, 247, 200));//设置文本背景色
               pDC->SetBkMode(TRANSPARENT);//设置背景透明                   
           }
       } 
 // TODO:  Return a different brush if the default is not desired
 return hbr;
}  

    1.在最开头声明一个全局的字体指针 CFont *my_font=new CFont();//注意初始化,不能为空
    2.在需要改变字体的地方调用函数:
          set_font(60,my_font,"隶书");   //字体大小、指针、名称
          GetDlgItem(IDC_anniu)->SetFont(my_font);   //改变字体
    3.对与不同的字体,你需要设置不同的字体指针就可以了。
    4.注意在退出时要删除字体,否则多次调用出现问题
      BOOL CMyDlg::DestroyWindow()
       {
         if (my_font)   my_font->DeleteObject();
         return CDialog::DestroyWindow();
       }
    5. 以下是函设置字体函数的详细内容:
    void set_font(int height,CFont *font,char *name)
     {
     // font=new CFont();//不在此,要在外部初始化,否则找不到指针
      LOGFONT lf;
      lf.lfHeight=20;          lf.lfWidth= 0;
      lf.lfEscapement=0;    lf.lfOrientation= 0;
      lf.lfWeight= 760;      lf.lfItalic= 0;
      lf.lfUnderline =0;      lf.lfStrikeOut =0;
      lf.lfCharSet =134; lf.lfOutPrecision =3;
      lf.lfClipPrecision =2; lf.lfQuality= 1;
      lf.lfPitchAndFamily =2; lstrcpy(lf.lfFaceName, "宋体");
      lf.lfOutPrecision =OUT_TT_ONLY_PRECIS;//OUT_TT_PRECIS;
   
      lf.lfHeight= height;   //字体大小
      lstrcpy(lf.lfFaceName, name);//名称
      if (font!=NULL)
     {
       font->DeleteObject();
       font->CreateFontIndirect(&lf);
     }
}
  
#define say(ch) AfxMessageBox(ch)//自己使用的提示函数
#define bt(ch)   SetWindowText(ch)//自己使用的提示函数
  
二。改变字体颜色,要加入系统函数
HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
//    return hbr;
    switch(nCtlColor)
{
case CTLCOLOR_STATIC://静态文本
   TCHAR lpszClassName[255];
   GetClassName(pWnd->m_hWnd, lpszClassName, 255);
   if(_tcscmp(lpszClassName, TRACKBAR_CLASS) == 0)//类名是拉动条
    return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
   else if (IDC_tishi==pWnd->GetDlgCtrlID())//指定的控件ID提示
    {
     pDC ->SetTextColor(RGB(255,100,100));//RGB(100,255,100)
     return hbr;
    }
   else
    {
      pWnd->GetWindowText(ch,40);
     if (   strcmp(ch,"测试数据")==0 )//指定的标题
     {
       pDC ->SetTextColor(RGB(255,0,200));
       return hbr;  
     }
      pDC->SetBkColor(RGB(255,255,255));
      return hbr;//(HBRUSH) GetStockObject(HOLLOW_BRUSH);
     }
   }
   break;
       case CTLCOLOR_BTN://按钮,好象不行
    // pDC ->SetBkMode(OPAQUE);//背景不透明
    // pDC->SetBkMode(TRANSPARENT);//背景透明
//say("button");
        CString str;
//owen draw //注意,右击按钮属性改为自绘式
   pWnd->GetWindowText(str); //得到标题内容
   RECT rect;
   pWnd->GetClientRect(&rect);//得到矩形范围大小
   pDC->SelectStockObject(BLACK_PEN);
   pDC->Rectangle(&rect);//黑笔画外边矩形
   rect.left+=2;rect.top+=2;
   rect.right-=2 ;rect.bottom-=2;
   pDC->SelectStockObject(WHITE_PEN);
   pDC->Rectangle(&rect);//白笔画内矩形
   pDC->SelectObject(font);//选择字体,大小
   pDC->SetTextColor(RGB(0,255,0)); //字体得前景颜色
   pDC->SetBkColor(RGB(255,0,255)); //字体的背景颜色
   pDC->DrawText(str, &rect, DT_CENTER|DT_VCENTER|DT_SINGLELINE);
   return (HBRUSH) GetStockObject(HOLLOW_BRUSH);
        break;
     case CTLCOLOR_EDIT://
编辑框
        pDC ->SetTextColor(RGB(255,0,0));//文本颜色
        pDC ->SetBkColor(RGB(255,255,255));//文本背景
        break;
     case CTLCOLOR_LISTBOX://
列表框
    // pDC ->SetTextColor(RGB(255,255,0));
    // pDC ->SetBkColor(RGB(160,60,0));
        break;
     }
// TODO: Return a different brush if the default is not desired
return hbr;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值