MFC窗口颜色的设置
生活随笔
收集整理的這篇文章主要介紹了
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窗口颜色的设置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ITK读取CT DICOM,如何设置窗位
- 下一篇: 网络模块(客户端的连接动作)