1. 程式人生 > >MFC對話方塊新增透明的靜態文字控制元件

MFC對話方塊新增透明的靜態文字控制元件

作為一個MFC的初學者,今天照一本說上簡單做了一個對話方塊新增透明的靜態文字控制元件的任務。具體步驟如下:

1、首先用VC6.0建立一個最簡單的對話方塊。

2、在對話方塊的檢視介面中加入一個靜態文字控制元件,同時在靜態文字控制元件的屬性中設定它為透明的。

3、在對話方塊類的初始化函式中加入以下部分:


4、右鍵單擊對話方塊類,增加一個Windwos訊息控制代碼,訊息是:WM_CTLCOLOR
在相應的函式OnCtlColor中增加如下程式碼:

出現的結果是控制元件中的字型沒有什麼變化,通過查資料,查到了原因的所在:
font應該宣告成成員變數(在對話方塊的標頭檔案中),不應該是臨時的,同時font不應該被刪除,刪除之後在顯示的時候就不起作用了,
初始化函式在視窗顯示之前,所以font需要一直存在,不能是臨時的,在程式執行中不能刪除。


而在對話方塊的OnPaint方法中可以加入上面在初始化中的程式碼,同時不需要作任何的改動。
在對話方塊的OnPaint方法中需要對所有的部分進行重繪,在這裡單獨的刪除font而不是在初始化方法中,控制元件在繪製的時候找不到font而用預設的,還是達不到相應的效果。

如果OnPaint方法中用以下程式碼與初始化方法中程式碼結合還是可以的(初始化方法中的font刪除可以去除)
((CStatic*)GetDlgItem(IDC_STATIC))->SetFont(&font);
font.DeleteObject();
這就是說,在OnPaint方法中指明控制元件的繪製方式,再刪除font,這樣可以實現同上面的改變字型的目的。