MFC學習筆記之八 顏色對話方塊與字型對話方塊

2021-06-28 00:37:07 字數 3448 閱讀 4704

當程式中需要用到畫圖的時候,就要選擇畫筆的顏色,在mfc中提供了乙個ccolordialog的類,通過此類可以很方便的建立這樣乙個顏色對話方塊。其建構函式如下:

1ccolordialog(colorrefclrinit = 0,dworddwflags = 0, cwnd* pparentwnd = null );

該建構函式含有三個引數,其中

clrinit:指定預設的顏色選擇,預設是黑色。

dwflags:指定一組標記,用來定製顏色對話方塊的功能和它的外觀。

pparentwnd:指向顏色對話方塊父視窗,後者擁有者視窗的指標。

我們可以使用dialog的domodal()函式建立顏色對話方塊。在ccolordialog型別中含有乙個choosecolor的結構體型別的成員變數:m_cc,在choosecolor結構體中含有乙個rgbresult的成員變數,此變數即儲存了使用者所選擇的顏色的,看看choosecolor結構體:

1

2

3

4

5

6

7

8

9

10

11

typedefstructchoosecolor, *lpchoosecolor;

我們可以使用以下:

12

ccolordialog dlg;

dlg.domodal();//建立顏色對話方塊

如果想要設定顏色對話方塊的初始選擇的顏色,則需要設定該對話方塊的cc_rgbinit標記,此標記在ccolordialog中的choosecolor型別的成員變數m_cc中可更改。

注意:擋在建立ccolordialog物件dlg的時候,他的資料成員m_cc中的flags成員已經具有了一些初始的預設標記。當我們將cc_rgbinit標記直接賦給m_cc.flags時,會產生錯誤!所以應該使用以下方式:

1

dlg.m_cc.flags |= cc_rgbinit;//使用位或操作符

與mfc中提供了ccolordialog相同,mfc中也提供了cfontdialog類,利用該類可以建立選擇字型的對話方塊。此類的建構函式如下:

1cfontdialog( lplogfont lplfinitial = null,dworddwflags = cf_effects | cf_screenfonts, cdc* pdcprinter = null, cwnd* pparentwnd = null );

該函式含有四個引數:

lplfinitial:指向logfont結構體的指標,允許使用者設定一些字型的特徵。

dwflagspdcprinter:指向列印裝置上下文的指標。

pparentwnd:指向字型對話方塊父視窗的指標。

由cfontdialog的建構函式知道,引數都含有預設值,所以可以在構造字型對話方塊時候不指定任何引數。同樣可以試用以下:

1

2

cfontdialog dlg;

dlg.domodal();//建立字型對話方塊

cfontdialog類中,含有乙個choosefont結構體型別的資料成員:m_cf;choosefont結構體的定義如下:

12

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

typedefstructchoosefont, *lpchoosefont;

在結構體中,其成員lplogfont是指向邏輯字型的(logfont型別)的指標。logfont結構體如下:

12

3

4

5

6

7

8

9

10

11

12

13

14

15

16

typedefstructtaglogfont logfont, *plogfont;

其中lffacename中存放的就是字型的名字,至於字型物件的建立,首先可以利用cfont類創造乙個字型物件,然後利用cfont類的createfontindirect成員函式根據指定特徵的邏輯字型(logfont型別)來初始化這個字型物件,該函式宣告如下:

1boolcreatefontindirect(constlogfont* lplogfont );

此函式的功能就是利用引數lplogfont指向的logfont結構體中的特徵來初始化cfont物件

記錄下自己的所學,雖然淺薄!!!如果我是乙隻蝸牛,那就只能慢慢向上爬!

MFC學習筆記之對話方塊呼叫

這是我的第一篇部落格,語言組織的不太好,以後繼續努力!自己是一名本科生,為了做創新訓練專案接觸的vc mfc。做專案過程中遇到了各種問題,而且許多細節再次用到的時候會忘記,在這裡做乙個筆記,一是供遇到相同問題的小夥伴參考,二則是為了自己日後回憶。void cmfcfirstnewdlg onbncl...

MFC之對話方塊

對話方塊可以分為模式對話方塊和非模式對話方塊兩種。模式對話方塊是指使用者只能在當前的窗體中進行操作,在該窗體沒有關閉之前不能切換到其他的窗體。非模式對話方塊是指當前的所操作的窗體可以切換。一般情況下,用於確認資訊的操作和一般的操作的對話方塊屬於模式對話方塊。如開啟檔案對話方塊就是典型的模式對話方塊,...

Qt之標準對話方塊 顏色對話方塊

1 在標頭檔案中包含 include qcolordialog void widget on colorbutton clicked 這裡使用了qcolordialog的靜態函式getcolor 來獲取顏色,它的三個引數的作用分別是 設定初始顏色 指定父視窗和設定對話方塊標題。getcolor 函式...