日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MFC窗口颜色的设置

發布時間:2024/1/17 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MFC窗口颜色的设置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文主要介紹對話框背景色以及控件顏色的設置(SetDialogBkColor()不再被支持)。

對話框背景色的設置

1、重載OnPaint()函數,即WM_PAINT消息,代碼如下所示:

void CtestDlg::OnPaint() {if (IsIconic()){CPaintDC dc(this); // 用于繪制的設備上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);// 使圖標在工作區矩形中居中int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// 繪制圖標 dc.DrawIcon(x, y, m_hIcon);}else{//CDialogEx::OnPaint();//設置為綠色背景 CRect rect; CPaintDC dc(this); GetClientRect(rect); dc.FillSolidRect(rect,RGB(0,255,0)); } }

2、重載OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor),即WM_CTLCOLOR消息:

  a)在對話框的.h文件中添加CBrush類的成員m_brush

  b)在對話框的.cpp文件中的OnInitDialog()中添加以下代碼(背景紅色):

m_brush.CreateSolidBrush(RGB(255,0,0));

  c)重載OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor),代碼如下:

HBRUSH CtestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) {HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);// TODO: 在此更改 DC 的任何特性if(nCtlColor == CTLCOLOR_DLG) return m_brush; //返加紅色刷子 // TODO: 如果默認的不是所需畫筆,則返回另一個畫筆return hbr; }

控件顏色的設置

重載OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor),即WM_CTLCOLOR消息:

HBRUSH CtestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) {HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);// TODO: 在此更改 DC 的任何特性// 設置顯示字體CFont * font=new CFont;font->CreateFont(16,0,0,0,FW_SEMIBOLD,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH&FF_SWISS,_T("Arial"));switch(nCtlColor){case CTLCOLOR_STATIC: //對所有靜態文本框的設置 {pDC->SetBkMode(TRANSPARENT);//設置背景為透明pDC->SetTextColor(RGB(255,255,0)); //設置字體顏色pWnd->SetFont(font); //設置字體HBRUSH B = CreateSolidBrush(RGB(125,125,255));//創建畫刷return (HBRUSH) B; //返回畫刷句柄 }case CTLCOLOR_EDIT: //對所有編輯框的設置 {if(IDC_EDIT2 == pWnd->GetDlgCtrlID()){pDC->SetBkMode(TRANSPARENT);pDC->SetTextColor(RGB(255,255,0));pWnd->SetFont(font);HBRUSH B = CreateSolidBrush(RGB(125,125,125));return (HBRUSH) B;}if(IDC_EDIT3 == pWnd->GetDlgCtrlID()){pDC->SetBkMode(TRANSPARENT);pDC->SetTextColor(RGB(255,0, 0));pWnd->SetFont(font);HBRUSH B = CreateSolidBrush(RGB(125,125,0));return (HBRUSH) B;}}default:return CDialog::OnCtlColor(pDC,pWnd, nCtlColor);}// TODO: 如果默認的不是所需畫筆,則返回另一個畫筆return hbr; }

注:

nCtlColor的類別有以下幾種:

  • CTLCOLOR_BTN? 按鈕控件
  • CTLCOLOR_DLG? 對話框
  • CTLCOLOR_EDIT? 編輯框
  • CTLCOLOR_LISTBOX? 列表框
  • CTLCOLOR_MSGBOX?? 消息框
  • CTLCOLOR_SCROLLBAR? 滾動條
  • CTLCOLOR_STATIC? 靜態文本

轉載于:https://www.cnblogs.com/gaohongchen01/p/4068743.html

總結

以上是生活随笔為你收集整理的MFC窗口颜色的设置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。