1. 程式人生 > >VC/MFC如何設定對話方塊、static背景顏色

VC/MFC如何設定對話方塊、static背景顏色

罵人

方法一:呼叫CWinApp類的成員函式SetDialogBkColor來實現。 (這個函式已經廢棄)

?
1 void SetDialogBkColor(COLORREF clrCtlBk = RGB(192, 192, 192), COLORREF clrCtlText = RGB(0, 0, 0));

其中函式的第一個引數指定了背景顏色,第二個引數指定了文字顏色。

在InitInstance()中新增如下程式碼:

?
1 SetDialogBkColor(RGB(0,0,255),RGB(255,0,0));

值得注意的是:在呼叫DoModal()之前必須先呼叫SetDialogBkColor。

這種方法經過筆者驗證,並不能改變對話方塊背景

方法二:過載OnPaint(),即WM_PAINT訊息

?
1 2 3 4 CRect rect; CPaintDC dc(this); GetClientRect(rect); dc.FillSolidRect(rect,RGB(0,255,0)); //設定為綠色背景

方法三:過載OnCtlColor (CDC* pDC, CWnd* pWnd, UINT nCtlColor),即WM_CTLCOLOR訊息

.h標頭檔案新增 CBrush m_brush;

.cpp原始檔新增 m_brush.CreateSolidBrush(RGB(255,0,0));

?
1 2 3 4 5 6 7 OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { /* 下行程式碼要註釋掉 HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); */ return m_brush; //返加紅色刷子 }

方法四:還是過載OnCtlColor (CDC* pDC, CWnd* pWnd, UINT nCtlColor), 即WM_CTLCOLOR訊息

.h標頭檔案新增 CBrush m_brush;

.cpp原始檔新增 m_brush.CreateSolidBrush(RGB(255,0,0));

?
1 2 3 4 5 6 7 8 OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); //在這加一條是否為對話方塊的判斷語句 if(nCtlColor ==CTLCOLOR_DLG) return m_brush; //返加紅色刷子 return hbr; }

可以根據不同的控制元件型別返回不同的畫刷,來實現不同控制元件顏色的設定

?
1 2 3 4 5 6 7 CTLCOLOR_BTN 按鈕控制元件 CTLCOLOR_DLG 對話方塊 CTLCOLOR_EDIT 編輯框 CTLCOLOR_LISTBOX 列表控制元件 CTLCOLOR_MSGBOX 訊息控制元件 CTLCOLOR_SCROLLBAR 滾動條控制元件 CTLCOLOR_STATIC 靜態控制元件
?
1 這裡大家要注意,OnCtlColor能改變Static等子控制元件的顏色,對於Button必須設定其屬性Owner Draw為True,才能改變Button按鈕背景色(CButton 文字的字型顏色並不能通過SetBkColor來改變,需要自己重繪CButton,在DrawItem中進行實現。
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 HBRUSH CXXXDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 在此更改 DC 的任何屬性 if(nCtlColor==CTLCOLOR_BTN) //更改按鈕顏色 { //pDC->SetBkMode(TRANSPARENT); pDC->SetTextColor(RGB(0,0,0)); pDC->SetBkColor(RGB(121,121,255)); HBRUSH b=CreateSolidBrush(RGB(121,121,255)); return b; } else if(nCtlColor==CTLCOLOR_SCROLLBAR) // { //pDC->SetBkMode(TRANSPARENT); pDC->SetTextColor(RGB(0,0,0)); pDC->SetBkColor(RGB(233,233,220)); HBRUSH b=CreateSolidBrush(RGB(233,233,220)); return b; } else if(nCtlColor==CTLCOLOR_EDIT) //更改編輯框 { //pDC->SetBkMode(TRANSPARENT); pDC->SetTextColor(RGB(0,0,0)); pDC->SetBkColor(RGB(165,254,236)); HBRUSH b=CreateSolidBrush(RGB(165,254,236)); return b; } else if(nCtlColor==CTLCOLOR_STATIC) //更改靜態文字 { pDC->SetTextColor(RGB(0,0,0)); pDC->SetBkColor(RGB(166,254,1)); HBRUSH b=CreateSolidBrush(RGB(166,254,1)); return b; } else if(nCtlColor==CTLCOLOR_DLG) //更改對話方塊背景色 { pDC->SetTextColor(RGB(0,0,0)); pDC->SetBkColor(RGB(166,254,1)); HBRUSH b=CreateSolidBrush(RGB(166,254,1)); return b; } // TODO: 如果預設的不是所需畫筆,則返回另一個畫筆 return hbr; }

static背景色:

HBRUSH CctlfinalDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: Change any attributes of the DC hereif(pWnd-> GetDlgCtrlID()==IDC_STATIC)
{
pDC-> SetBkMode(TRANSPARENT); //你可以修改背景模式
//pDC-> SetBkColor(m_bkcolor); //你可以修改背景顏色
//hbr=CreateSolidBrush(m_bkcolor); //你可以修改畫刷pDC->SetTextColor(RGB(255,0,0)); //你當然可以修改字型顏色

  HBRUSH b = CreateSolidBrush(RGB(23,10,23));
  return b;//
這句好有用
}

// TODO: Return a different brush if the default is not desiredreturn hbr;
}

再見

相關推薦

VC/MFC如何設定對話方塊static背景顏色

方法一:呼叫CWinApp類的成員函式SetDialogBkColor來實現。 (這個函式已經廢棄) ? 1 void SetDialogBkColor(COLORREF clrCtlBk = RGB(192, 192, 192), COLORREF cl

MFC設定對話方塊背景和邊框顏色

 對於對話方塊,只需要過載預設的訊息處理函式就行了: // 過載預設的訊息處理函式,主要處理WM_MOVE WM_PAINT WM_NCPAINT WM_NCACTIVATE WM_NOTIFY這// 幾個訊息就可以了 LRESULT CMyDialog::DefWi

VC/MFC對話方塊中建立檢視並在檢視區新增ListCtrl控制元件

自定義的view類用於顯示在對話方塊上 class CGroupMenuView : public CScrollView { protected:  CGroupMenuView(); ……………… ………… };   class CWorkView :

MFC對話方塊新增圖片背景

在windows開發當中做介面的主要技術之一就是使用MFC,通常我們看到的QQ,360,暴風影音這些漂亮的介面都可以用MFC來實現。今天我們來說一下如何用MFC美化對話方塊,預設情況下,對話方塊的背景如下: 那麼,我們如何將它的背景變成如下介面呢,而且還要保留對話方塊的移動功能,漂亮背

VC/MFC如何設定對話方塊背景顏色

方法一:呼叫CWinApp類的成員函式SetDialogBkColor來實現。  (這個函式已經廢棄) 1 void SetDialogBkColor(COLORREF clrCtlBk = RGB(192, 192

對話方塊控制元件背景字型顏色設定

1、控制元件背景顏色每個控制元件和對話方塊本身在宣示之前會向其父對話方塊傳送WM_CTLCOLOR訊息。如果你在派生類對話方塊對WM_CTLCOLOR訊息進行對映,就可以設定控制元件的顏色,以及某些控制元件的背景顏色和字型的顏色。 HBRUSH CMyDlg::OnCtl

_068_檔案對話方塊設定面板

====================== class Test1 { public static void main(String[] args) { test2(); } //檔案對話方塊 public static void test1() {

MFC中CWnd類及其派生類對話方塊訊息處理視窗操作

CWnd類 我們在螢幕上看到的所有物件都和視窗有關,它們或者派生於CWnd,屬繼承關係,如對話方塊、工具欄、狀態列、子控制元件;或者被CWnd合成,屬服務員與服務物件關係,如圖示、選單、顯示裝置。 CWnd類封裝的視窗操作主要包含視窗的建立和銷燬、操作視窗風格、操作視窗狀態

MFC對話方塊中怎樣加入背景音樂

第一步:新增標頭檔案與庫檔案 #include "vfw.h"#pragma comment (lib,"vfw32.lib")第二步:在對話方塊類加上變數HWND hMCI;第三步:在對話方塊初始話的地方如此hMCI = MCIWndCreate(NULL, NULL,WS

MFC對話方塊新增背景圖片(非picture control控制元件)

本文在這裡希望把這個東西的設計說的詳細一些。 在建立一個MFC的對話方塊專案後,可以在資源檢視中新增點陣圖,如不理解可以在百度中搜索mfc新增點陣圖,相信應該很多,這裡就不解釋了。 假設我們載入的點陣圖ID為IDB_BITMAP1 在我們對話方塊的類中的標頭檔案新增如下變

MFC中修改對話方塊編輯框button按鈕背景色

一、修改對話方塊背景色: 1、為目標對話方塊新增WM_CTRCOLOR訊息; 2、位目標Dlg類定義一個CBrush型別的私有成員變數:m_brushBg,並在其建構函式中將此畫刷初始為 一個淡藍色畫刷(畫刷顏色可任意修改):m_brushBg.CreateSolidBru

VC開啟瀏覽檔案對話方塊瀏覽資料夾對話方塊

今天,又看了這些東西,在VC裡面建立瀏覽檔案對話方塊比建立瀏覽資料夾對話方塊要簡單一些。 一、建立“瀏覽檔案對話方塊”         用CFileDialog類實現,比如:      CFileDialog  FDlg(TRUE , ".doc" , NULL , OF

MFC改變對話方塊背景顏色

原文連結: http://blog.sina.com.cn/s/blog_59955afc0100spjz.html 方法一:呼叫CWinApp類的成員函式SetDialogBkColor來實現。  ---- 其中函式的第一個引數指定了背景顏色,第二個引數指定了文字

MFC基於對話方塊如何新增點陣圖並使點陣圖背景透明(TransparentBlt函式)

MFC中比較重要的一部分學習內容即是繪圖,而繪圖時我們會發現如果想插入一張圖片而又不想要圖片的背景,或者已經把圖片的背景用Ps去掉了,但是在MFC視窗中顯示圖片的時候又有了白色的背景,這個時候就可以使用TransparentBlt函式(通常支援點陣圖)來實現將圖

VC++設定對話方塊顯示的起始位置

假設自定義的對話方塊類名稱是CUserDialog,那麼新增一個ON_WM_SHOWWINOW()訊息對映,並呼叫SetWindowPos或者MoveWindow: void CTSTPOG::OnShowWindow(BOOL bShow, UINT nStatus)

MFC基於對話方塊新增背景

//實現以下程式碼之前需要首先新增點陣圖資源;void CPicProcessDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 用於繪製的裝置上下文 SendMessage(WM_ICONERAS

MFC修改對話方塊及控制元件背景顏色

HBRUSH CMyDlg::OnCtlColor(CDC* pDC,CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr =CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes o

VC SDK下如何設定對話方塊左上角的圖示

鬱悶,今天弄了一下午就為了弄明白一件事,為什麼我之前建立的對話方塊左上角有圖示,而今天它死活不肯出來,搞了半天終於知道原來是用錯函數了。。。 SetClassLong(hwndDlg,GCL_HICON,(long)hIcon); SendMessage(hwndDlg,

QT學習day02---圖形介面對話方塊訊號與槽

一、QT圖形介面 ①QT座標軸 起點:左上角 X:橫軸 Y:縱軸 ②QWidget、QDialog、QMainWindow的異同點 QWidget:視窗為空,什麼內容都沒有 QMainWindow:含有選單欄,狀態列,工具欄等…已經包含了QWidget QDialog:對話方塊(

模式對話方塊和非模式對話方塊accept()函式exec()函式,Accepted訊號區別

一.非模式對話方塊   非模式對話方塊是和同一個程式中其它視窗操作無關的對話方塊。在字處理軟體中查詢和替換對話方塊通常是非模式的來允許同時與應用程式主視窗和對話方塊進行互動。呼叫show()來顯示非模式對話方塊。show()立即返回,這樣呼叫程式碼中的控制流將會繼續。   非模式