1. 程式人生 > >小A大B聊MFC:神奇的靜態文字控制元件--初識DC

小A大B聊MFC:神奇的靜態文字控制元件--初識DC

大B:小A,你在編碼時用過靜態文字控制元件嗎?

小A:靜態文字控制元件,你是說這個Static Text吧,當然用過了,設計介面那能少了它。

大B:那你都用它做什麼呢?

小A:這個還能幹什麼呀,就是顯示文字唄。

大B:其實它能擴展出很強大的功能,不知你有沒有發現。

小A:很強大的功能,我怎麼覺得所有控制元件中就屬這個控制元件簡單了,能有什麼強大的功能呀!

大B:就是因為他簡單,所以才有很大的擴充套件空間呀,比如你想改變一下文字的大小、字型、顏色怎麼改呀?

小A:這個好像沒法,雖然有一個SetFont函式,但不知為什麼不起作用。

大B:那我們就從這裡著手先做讓它可以改變文字大小、字型和顏色吧。因為靜態文字控制元件是從CStatic類生成的物件,那麼我們可以派生一個新類,在新類中增加對這些功能的處理就行了。

小A:等我一下,我先開啟編譯器,咱們一邊說一邊做。

……

小A開啟編譯器……

……

小A:好了,我打開了,並且新建了一個基於MFC的對話方塊專案,下一步應該怎麼做呢?

大B:動作挺快呀,那接下來我們先在類嚮導裡新增一個類,名字就叫CStaticTest吧,父類就是CStatic,然後重寫一下WM_PAINT訊息的處理函式。

小A:就是在這裡實現這些功能吧!(邊說邊新增新類)

           選單-專案-類嚮導,開啟MFC類嚮導對話方塊……

           點新增類,輸入類名CStaticTest,選擇基類為CStatic……完成。

           在類嚮導中選擇剛新加的類CStaticTest,選擇[訊息]找到WM_PAINT,點[新增處理程式]……確定。

大B:聰明!你看OnPaint函式提供了CPaintDC型別的dc,我們就用這個dc去改變字型、顏色等。

小A:哦,這個是幹什麼的?

大B:CPaintDC是MFC提供了一個專門用於介面繪製圖形的類,它從CDC類繼承而來,還有許多其它相似的類,我們以後慢慢詳細的說。

小A:那這個dc怎麼用呢?

大B:我們可以看一下MSDN,它的父類CDC提供了很多函式,比如要想改變字型的顏色只需要呼叫SetTextColor函式就可以了。

小A:那我想把字型變成紅色是不是這麼寫就行了:

dc.SetTextColor(RGB(255,0,0));

大B:這只是改變了字型顏色,因為我們把OnPaint函式重寫了,顯示文字的工作我們也要完成。

小A:這應該用那個函式呢?

大B:我們先用這個簡單的函式TextOut吧,它有三個輸入,文字開始位置的座標和文字內容。

小A:那我試著寫一下:

dc.TextOut(0,0,_T("123456"));

小A:我想顯示個“123456”是不是這麼寫就行了。

大B:對,就這麼簡單,然後用這個例生成一個物件就行了。

小A:好,我試一下:

           先在對話方塊上放一個靜態文字控制元件……

           再給這個控制元件新增一個變數,類別是Control,型別就是剛新增的類CStaticTest,變數名就叫m_static1吧……

           F7編譯……通過,哈哈

           F5執行,果然顯示了個紅色的“123456”。

大B:好,不錯,明天再教你如何改變字型和大小。