資源描述:
《vs2010mfc編程入門之十八(對話框:字體對話框)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、雞啄米在上一節(jié)為大家講解了文件對話框的使用,本節(jié)則主要介紹字體對話框如何應(yīng)用。字體對話框的作用是用來選擇字體。我們也經(jīng)常能夠見到。MFC使用CFontDialog類封裝了字體對話框的所有操作。字體對話框也是一種模態(tài)對話框。CFontDialog類的構(gòu)造函數(shù)我們先來了解CFontDialog類。它的常用構(gòu)造函數(shù)原型如下:CFontDialog(LPLOGFONTIplflnitial=NULL,DWORDdwFlags=CF_EFFECTS
2、CF_SCREENFONTS,CDC*pdcPrinter=NULL,CW
3、nd*pParentWnd=NULL);參數(shù)說明:Iplflnitial:指向LOGFONT結(jié)構(gòu)體數(shù)據(jù)的指針,可以通過它設(shè)置字體的一些特征。dwFlags:指定選擇字體的一個或多個屬性,詳情可在MSDN中查閱。pdcPrinter:指向一個打印設(shè)備上下文的指針。pParentWnd:指向字體對話框父窗口的指針。上面的構(gòu)造函數(shù)屮第一個參數(shù)為LOGFONT指針,LOGFONT結(jié)構(gòu)體中包含了字體的大部分特征,包括字體高度、寬度、方向、名稱等等。下面是此結(jié)構(gòu)體的定義:typedefstructtagLOGFONT{LON
4、GIfHeight;LONGIfWidth;LONGIfEscapement;LONGIfOrientation;LONGIfWeight;BYTEIfltalic;BYTEIfUnderline;BYTEIfStrikeOut;BYTEIfCharSet;BYTEIfOutPrecision;BYTEIfClipPrecision;BYTEIfQuality;BYTEIfPitchAndFamily;TCHARlfFaceName[LF_FACESIZE];}LOGFONT;獲取字體對話框中所選字體我們在字體對
5、話框小選擇了字體后,如何獲取選定的字體呢?我們可以通過CFontDialog類的成員變量m_cf間接獲得選定字體的CFont對象。m_cf是CHOOSEFONT類型的變量,CHOOSEFONT結(jié)構(gòu)體定義如下:typedefstruct{DWORDIStructSize;HWNDhwndOwner;HDChDC;LPLOGFONTIpLogFont;INTiPointSize;DWORDFlags;COLORREFrgbColors;LPARAMICustData;LPCFHOOKPROCIpfnHook;LPCT
6、STRIpTemplateName;HINSTANCEhlnstance;LPTSTRIpszStyle;WORDnFontType;INTnSizeMin;INTnSizeMax;}CHOOSEFONT,*LPCHOOSEFONT;CHOOSEFON結(jié)構(gòu)體中冇個成員IpLogFont,它是指向LOGFONT結(jié)構(gòu)體變量的指針,就像上面所說,LOGFONT'
7、?包含了字體特征,例如,我們可以通過LOGFONT的IfFaceName得知字體名。我們最終要獲得的是所選擇字體的CFont對象,有了字體的LOGFONT怎樣
8、獲得對應(yīng)的CFont對象呢?使用CFont類的成員函數(shù)CreateFontlndirect4以達到此目的。函數(shù)原型如下:BOOLCreateFontlndirect(constLOGFONT*IpLogFont);參數(shù)是LOGFONT指針類型,我們可以傳入CFontDialog類成員變量m_cf的IpLogFont成員,就可以得到所選字體的CFont對象了。字體對話框應(yīng)用實例雞啄米給大家做一個字體対話框的實例。先介紹此實例要實現(xiàn)的功能,生成一個對話框,對話框屮放置一個“字體選擇”按鈕和一個編輯框。點擊“字體選擇”
9、按鈕將彈出字體對話框。編輯框用于顯示所選字體名,并以選定的字體來顯示字體名字符串,例如,如果選擇了宋體,則在編輯框中以宋體顯示字符串“宋體”。以下是創(chuàng)建此實例的步驟:1.創(chuàng)建一個基于對話框的MFC工程,名字為“Example18”。2.在自動生成的主對話框IDD_EXAMPLE18_DIAL0G的模板屮,刪除“TODO:Placedialogcontrolshere.”靜態(tài)文本框,添加一個按鈕,ID設(shè)為IDC_FONT_BUTTON,Caption設(shè)為“字體選擇”,用于顯示字體對話框來選擇字體,再添加一個編輯框,
10、ID設(shè)為IDC_FONT_EDIT,用來以所選字體顯示字體名字符串。3.在Examplei8Dlg.h中為CExamplel8Dlg類添加private成員變量:CFontm_font;,用來保存編輯框中選擇的字體。4.為按鈕IDC_FONT_BUTTON添加點擊消息的消息處理函數(shù)CExamplel8Dlg::OnBnClickedFontButton()05.修改消息處