MFC中修改靜態文字框中文字的字型 顏色

2022-01-25 15:56:14 字數 1547 閱讀 5731

假設有乙個靜態文字框控制項,其id為:idc_static_xsdj,且關聯乙個control類的cstatic型別的變數m_static_xsdj。

設定字型時自然要用到cfont類,下面介紹兩種方法,兩種方法都要先在標頭檔案中新增乙個變數cfont newfont,切記要宣告稱類的成員變數,不能是區域性變數

方法一:

在oninitdialog()函式中新增**:

1 newfont.createpointfont(160,l"楷體"

);2 m_static_xsdj.setfont(&newfont);

思路是:首先獲取原有字型,然後獲取其對應的logfont結構體,接著修改該logfont結構體,最後利用修改後的結構體,建立乙個新的字型。

方法二:

給出**,依然是寫到oninitdialog 中

cfont*font;

font=m_static_xsdj.getfont();//

獲取cfont物件

logfont lf;

font->getlogfont(&lf);//

獲取logfont結構體

lf.lfheight=-26; //

修改字型大小

lf.lfitalic=true; //

傾斜lf.lfweight=400; //

修改字型的粗細

newfont.createfontindirectw(&lf);//

建立乙個新的字型

m_static_xsdj.setfont(&newfont);

下面是修改靜態文字框控制項中文字顏色、文字背景顏色、和控制項背景顏色。

首先應當明確的是,在那個函式中下手(寫**),答案是onctlcolor()函式中,這個函式是用於響應wm_ctlcolor訊息的,當控制項需要重繪時會發出這個訊息(姑且這麼簡單理解吧).

說以下這個函式的函式原型:

1 hbrush cdlgxsdj::onctlcolor(cdc* pdc, cwnd*pwnd, uint nctlcolor)

2

然後說一下settextcolor()、setbkcolor()、和setbkmode()三個函式

settextcolor()函式很明顯是設定文字顏色的,而setbkcolor()函式不是用來設定控制項背景顏色的,而是用來設定文字背景顏色的(就是包含文字的矩形)、

setbkmode()是用來設定文字背景模式的,引數只有兩個選擇opaque、transparent表示是否透明。

那麼控制項的背景顏色怎麼設定呢?答案是通過返回的hbrush控制代碼。

下面給出乙個**,和執行效果

1 hbrush cdlgxsdj::onctlcolor(cdc* pdc, cwnd*pwnd, uint nctlcolor)211

return hbr;//

返回用於重繪控制項背景的畫刷

12 }

MFC中修改靜態文字框中文字的字型 顏色

一 設定字型 在oninitdialog 函式中新增 方法1 newfont.createpointfont 160,l 楷體 m static xsdj.setfont newfont 方法2 cfont font font m static xsdj.getfont 獲取cfont物件 logf...

MFC之靜態文字框的使用

如果我們想在程式中動態建立靜態文字框,而不是像前面那樣直接從toolbox中拖到對話方塊模板上,那麼就需要使用cstatic類的成員函式create。create函式的原型如下 virtual bool create lpctstr lpsztext,dword dwstyle,const rect...

MFC 文字框 用法

mfc裡面的edit control控制項的用法是怎麼樣的,1.怎麼樣才能賦值給edit control控制項並在edit control控制項顯示出來 2.怎麼取得edit control控制項的值並傳遞給乙個變數?希望各位大俠幫幫忙!獲得edit cedit pboxone pboxone ce...