用VC如何改變編輯框的背景顏色

2021-06-21 23:42:26 字數 2201 閱讀 7892

vc如何改變編輯框的背景顏色在vc

中,編輯框的顏色改變起來似乎很難,

mfc的

cedit

類後沒有提供可改變顏色的函式。在本文中,我們將過載

cedit

類,編寫乙個可以改變背景顏色的類

cmyedit

類,將編輯框的變數定義為

cmyedit

型別來實現改變編輯框的背景顏色。

一、構建應用程式

新建乙個基於對話方塊基礎的程式

changeedit

,然後在對話方塊的摸板上刪除靜態文字框,新增三個編輯框。

二、打造自己的

cmyedit類1.

新增cmyedit

類生成好應用程式之後,我們可以利用類嚮導生成器新增乙個新類。

將新類命名為

cmyedit,

繼承自cedit

類。2.

新增成員變數

類生成好後,再新增成員變數,在此,我們需要新增三個私有型別的成員變數,

colorref

變數儲存當前顏色,

cbrush

變數儲存改變後的刷子顏色,

cstring

變數儲存當前編輯框的內容。如下所示。

private:

cbrush m_brush;

cstring m_text;

colorref m_backcolor;

3.新增成員函式

1)新增兩個公有型別的成員函式:

public:

void setcontrolfocus();

void setbkgrndcolor();

其定義如下:

void cmyedit::setcontrolfocus()

void cmyedit::setbkgrndcolor()

2)過載虛函式

onchildnotify():將

onchildnotify()

函式的定義為如下形式:

bool cmyedit::onchildnotify(uint message, wparam wparam, lparam lparam, lresult*plresult)

hdc hdcchild = (hdc)wparam;

//設定文字顏色為黑色,也可以修改為其他顏色

settextcolor(hdcchild, rgb(0,0,0));

//設定背景顏色為

m_backcolor

顏色setbkcolor(hdcchild, m_backcolor); 

return true;}3

)新增三個

windows

訊息處理函式:

on_wm_setfocus

、on_wm_killfocus

、on_wm_paint

,主要是用來處理編輯框獲得焦點和失去焦點的顏色改變效果。

將這三個函式定義為如下形式:

//當編輯框獲得焦點時改變背景顏色為黃色

void cmyedit::onsetfocus(cwnd* poldwnd) 

//當編輯框失去焦點時改變背景顏色為白色

void cmyedit::onkillfocus(cwnd* pnewwnd) 

//重畫編輯框

void cmyedit::onpaint() 

4.完善構造和析構函式

通過以上的工作,我們作好了

cmyedit

cmyedit::cmyedit()

cmyedit::~cmyedit()

這樣,我們便打造完了自己的

cmyedit

類,然後直接在前面生成的應用程式中呼叫即可。

三、繼承

cmyedit

類現在,我們又回到最開始生成的應用程式中,前面已經新增了三個編輯框,這裡我們利用

classwizard

來為三個編輯框新增成員變數,分別為這三個編輯框新增乙個控制(

control

)型別的成員變數,特別注意的是繼承的基類選擇剛才做好的

cmyedit

類。上面的工作全部做完之後編譯執行,你會發現在主程式中不用寫一句**便可改變編輯框的顏色,當編輯框獲得輸入焦點時,編輯框變為黃色,失去輸入焦點時變為白色。  這裡介紹的方法還有更多可以改進的地方,我們主要是給大家提供一種思路,希望能起到拋磚引玉的作用。有興趣的話不妨試試。

MFC編輯框改變背景 顏色等

2009 07 29 17 57 26 分類 mfc 標籤 字型大小 大中小訂閱 vc 編輯框 改變背景 字型 文字顏色 長度限制 英文 漢字判斷 1。長度限制 on initdialog 中 m edit1.setlimittext 8 m edit1為編輯框的成員變數 或者 cedit pedt...

MFC改變編輯框背景 字型 顏色等

1。長度限制 oninitdialog 中 m edit1.setlimittext 8 m edit1為編輯框的成員變數 或者cedit pedt cedit getdlgitem idc edit1 pedt setlimittext 8 限制編輯框輸入長度為8位元組 2。漢字判斷 方法一 cs...

VC 中改變對話方塊背景顏色

其中函式的第乙個引數指定了背景顏色,第二個引數指定了文字顏色。下面的例子是將應用程式對話方塊設定為藍色背景和紅色文字,步驟如下 cexampledlgdlg dlg m pmainwnd dlg 先於domodal 呼叫,將對話方塊設定為藍色背景 紅色文字 setdialogbkcolor rgb ...