




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、12 對話框?qū)υ捒蚴荳indows應(yīng)用程序中一種常用的資源,其主要功能是輸出信息和接收用戶的輸入數(shù)據(jù)。 控件控件是嵌入在對話框中或其它父窗口中的一個(gè)特殊的小 窗口,它用于完成不同的輸入、輸出功能。 對話框與控件關(guān)系密切,在每個(gè)對話框上一般都有一些控件,對話框依靠這些控件與用戶進(jìn)行信息的交互。本章主要介紹對話框的工作原理和編程方法,并通過實(shí)例學(xué)習(xí)一些標(biāo)準(zhǔn)控件和公共控件的使用方法。311.1 對話框概述對話框概述l對話框的一個(gè)典型應(yīng)用是通過菜單命令或工具欄按鈕打開一個(gè)對話框,l對話框作為一個(gè)程序的主界面。411.1.1 基于對話框的應(yīng)用程序基于對話框的應(yīng)用程序n可以直接利用MFC AppWizar
2、d向?qū)?chuàng)建一個(gè)基于對話框的應(yīng)用程序,這種程序運(yùn)行后首先出現(xiàn)一個(gè)對話框。在向?qū)У牡谝徊竭x擇Dialog Based項(xiàng)。此時(shí),應(yīng)用程序向?qū)⒊霈F(xiàn)與單文檔和多文檔程序向?qū)Р煌牟僮鞑襟E,因?yàn)閷υ捒驊?yīng)用程序一般不包含文檔,故不支持?jǐn)?shù)據(jù)庫和復(fù)合文檔。5例例 編寫一個(gè)對話框應(yīng)用程序MyDialog,程序運(yùn)行后顯示一個(gè)對話框,并在對話框上顯示文本串。1執(zhí)行File|New命令出現(xiàn)New對話框,選擇MFC AppWizardexe項(xiàng),輸入程序名MyDialog,單擊OK按鈕。在隨后出現(xiàn)的MFC AppWizard-Step 1對話框窗口中選擇Dialog Based選項(xiàng),單擊Finish按鈕就創(chuàng)建了應(yīng)用程序項(xiàng)
3、目,并在Developer Studio中打開了對話框編輯器和控件工具欄。2去掉對話框中標(biāo)題為“TODO: 在這里設(shè)置對話控制”的靜態(tài)文本控件,調(diào)整對話框大小,在成員函數(shù)CMyDialogDlg:OnPaint()中添加代碼。 6 void CMyDialogDlg:OnPaint() . . . . . . else CPaintDC dc(this); dc.SetBkMode(TRANSPARENT); dc.TextOut(20, 50, 這是一個(gè)對話框應(yīng)用程序!); CDialog:OnPaint(); 711.1.2 對話框類對話框類CDialog MFC提供了一系列對話框類,并實(shí)
4、現(xiàn)了對話框消息響應(yīng)和處理機(jī)制。CDialog類是對話框類中最重要的類,我們在程序中創(chuàng)建的對話框類一般都是CDialog類的派生類。CDialog類還是其它所有對話框類的基類,其派生關(guān)系如下所示:CObject CCmdTarget CWnd CDialog8 對話框類為程序員提供了管理對話框的編程接口。 CDialog類從CWnd類派生而來,所以它繼承了CWnd類的成員函數(shù),具有CWnd類的基本功能,可以編寫代碼移動(dòng)、顯示或隱藏對話框,并能根據(jù)對話框的特點(diǎn)增加新的成員函數(shù),擴(kuò)展它的功能。在你的CDialog類的派生類中可以直接調(diào)用CDialog類的成員函數(shù)。大部分的成員函數(shù)是虛函數(shù),可以在你的
5、派生類中重載,以實(shí)現(xiàn)特定的目的。除了CDialog類成員函數(shù),類CWnd和CWinApp也提供了一些成員函數(shù)用于對話框的管理。911.2 使用對話框使用對話框 為了在屏幕上顯示對話框: (1)首先需要建立對話框資源及其與資源相關(guān)的對話框類; (2)然后添加控件、與控件關(guān)聯(lián)的成員變量和消息處理函數(shù); (3)最后在程序中顯示對話框并訪問與控件關(guān)聯(lián)的成員變量。 在Visual C+中可以利用集成工具如對話框編輯器和ClassWizard類向?qū)Ш芊奖愕貏?chuàng)建對話框,不需要程序員手工編寫太多的源代碼。1011.2.1 一般對話框工作流程一般對話框工作流程 n當(dāng)定義了一個(gè)對話框類后,就可以利用這個(gè)對話框類聲
6、明一個(gè)對話框?qū)ο?,即一個(gè)能夠在屏幕上顯示的對話框。 n聲明了一個(gè)對話框?qū)ο蠛?,可以調(diào)用對話框類的成員函數(shù)DoModal()建立對話框窗口并顯示對話框。例如,假設(shè)定義了一個(gè)名為CMyDialog的對話框類,為了在屏幕上顯示一個(gè)對話框,可以編寫如下代碼: CMyDialog myDlg; myDlg.DoModal(); 11函數(shù)函數(shù)OnOK()、 OnCancel()與與DoModal()的關(guān)系:的關(guān)系: 對話框中一般都有OK和Cancel按鈕,單擊OK按鈕時(shí)調(diào)用CDialog:OnOK()函數(shù),單擊Cancel按鈕時(shí)調(diào)用CDialog:OnCancel()函數(shù)。OnOK()函數(shù)和OnCanca
7、l()函數(shù)都將結(jié)束DoModal()函數(shù)調(diào)用,但令DoModal()返回不同的值。OnOK()函數(shù)令DoModal()返回IDOK,OnCancel()函數(shù)令DoModal()返回IDCANCAL。用戶可以根據(jù)DoModal()的返回值做出不同的選擇。如: if (myDlg.DoModal() = = IDOK ) 1211.2.2 創(chuàng)建對話框創(chuàng)建對話框 在Windows中對話框是作為一種資源被使用,在程序中要?jiǎng)?chuàng)建一個(gè)對話框,首先要?jiǎng)?chuàng)建一個(gè)對話框模板資源,然后創(chuàng)建一個(gè)基于該對話框模板資源的對話框類。對話框模板資源指定了對話框本身的屬性(如大小、位置、風(fēng)格、類型等)和對話框中的控件及屬性,而對
8、話框類規(guī)定了對話框和對話框中每個(gè)控件的行為。通過對話框模板資源才能創(chuàng)建對話框類和對象。13 為了向應(yīng)用程序項(xiàng)目中添加一個(gè)對話框資源,執(zhí)行Insert| |Resource命令或直接按Ctrl+R鍵,彈出Insert Resource資源列表框。一般要加入通用對話框資源,所以在Insert Resource框中直接選擇Dialog項(xiàng),然后單擊New按鈕。系統(tǒng)將給對話框資源設(shè)置一個(gè)默認(rèn)的ID標(biāo)識,對話框的默認(rèn)標(biāo)題Caption為Dialog,對話框有OK和Cancel兩個(gè)按鈕。對話框資源的添加:對話框資源的添加:14 對話框是在對話框模板資源和對話框類的基礎(chǔ)上形成的,在完成了對話框的屬性和外觀設(shè)計(jì)
9、后,再來設(shè)計(jì)對話框的行為。我們需要利用ClassWizard類向?qū)?chuàng)建一個(gè)對話框類,并將這個(gè)類同先前創(chuàng)建的對話框資源連接起來。在創(chuàng)建對話框類之前或之后,都可以為對話框資源添加控件控件。而在創(chuàng)建對話框類之后,還可以為對話框資源添加與對話框控件相關(guān)聯(lián)的成員變量成員變量和消息消息處理函數(shù)處理函數(shù)。15創(chuàng)建對話框類:創(chuàng)建對話框類: 如果按Ctrl+W鍵或在對話框資源的非控件區(qū)域雙擊鼠標(biāo),ClassWizard類向?qū)l(fā)現(xiàn)已添加了一個(gè)對話框模板資源,卻沒有設(shè)計(jì)其對應(yīng)的類,因此將彈出Adding a Class對話框,詢問用戶是否需要利用該對話框資源創(chuàng)建一個(gè)對話框類。16nName框:用于輸入對話框類的名
10、稱;nFile Name框:列出類的文件名,單擊Change按鈕可改變文件名;nBase class下拉框:列出可選擇的基類;nDialog ID下拉框:列出可選擇對話框資源的ID。 例例 假設(shè)已利用MFC AppWizard應(yīng)用程序向?qū)Ы⒘艘粋€(gè)名為Mysdi的單文檔應(yīng)用程序,請向應(yīng)用程序中添加對話框資源和對話框類。 在Adding a Class對話框單擊OK按鈕,彈出New Class對話框:171首先向應(yīng)用程序項(xiàng)目添加一個(gè)對話框資源,在項(xiàng)目工作區(qū)鼠標(biāo)右擊資源項(xiàng)Dialog,從彈出式菜單中執(zhí)行Insert Dialog命令,插入一個(gè)對話框資源。2設(shè)置對話框的屬性,將光標(biāo)指向?qū)υ捒虻目瞻孜?/p>
11、置,單擊鼠標(biāo)右鍵,從彈出式菜單中選擇Properties項(xiàng),或直接按Enter鍵,彈出Dialog Properties屬性對話框。該對話框包括General、Styles、More Styles、Extended Styles、More Extended Styles等頁面,用于設(shè)置對話框多種不同的屬性。3創(chuàng)建對話框類,鼠標(biāo)雙擊對話框資源的非控件區(qū)域。1811.2.3 添加控件及關(guān)聯(lián)的成員變量添加控件及關(guān)聯(lián)的成員變量n如果沒有控件控件,對話框完成不了什么具體功能,對話框與控件有著密不可分的關(guān)系。結(jié)合對話框編輯器,利用Controls控件工具欄可給當(dāng)前正在編輯的對話框模板資源添加控件。n若Vi
12、sual C+窗口中沒有出現(xiàn)Controls工具欄,只需將光標(biāo)指向菜單欄并單擊鼠標(biāo)右鍵,從彈出式菜單中選擇Controls項(xiàng)。n控件工具欄上的每一個(gè)圖標(biāo)都代表了一種控件,如果不能確定控件的類型,只要將光標(biāo)在該控件圖標(biāo)上停留片刻,就會(huì)顯示該控件類型的提示。19 向?qū)υ捒蛱砑涌丶r(shí),先在Controls工具欄單擊要添加的控件,再將光標(biāo)指向?qū)υ捒蚩瞻讌^(qū)域并單擊鼠標(biāo)。20添加與控件關(guān)聯(lián)的成員變量添加與控件關(guān)聯(lián)的成員變量 在生成自己的對話框類并添加需要的控件后,可以利用ClassWizard類向?qū)г趯υ捒蝾惖亩x中為對話框資源上的每一個(gè)控件添加一個(gè)或多個(gè)對應(yīng)的成員變量。ClassWizard類向?qū)У腗e
13、mber Variables頁面主要用來為對話框類添加和刪除與對話框控件關(guān)聯(lián)的成員變量,我們在編寫對話框程序時(shí)經(jīng)常同該頁面打交道。2122nClass name下拉框:選擇要添加成員變量的對話 框類;nControl IDs欄:選擇控件,因?yàn)橐砑拥某蓡T變量總是與一個(gè)對話框控件ID聯(lián)系在一起,它們代表控件對象本身或控件的某項(xiàng)屬性;nAdd Variable按鈕:添加與控件關(guān)聯(lián)的成員變量;nDelete Variable按鈕:刪除控件的某個(gè)成員變量。nControl IDs欄:列出對話框資源上已有的控件,第1列Control IDs表示控件的ID,第2列Type表示變量的類型,第3列Member
14、表示成員變量名。在在Member Variables頁面:頁面:23Add Member Variable對話框?qū)υ捒騨Member variable name框:輸入成員變量名;nCategory下拉框:選擇成員變量的類別,可為Control或 Value;nVariable type下拉框:選擇成員變量的類型。24n如果在Category下拉框選擇Value項(xiàng),表示要為該控件的某項(xiàng)屬性定義一個(gè)變量,這意味著程序關(guān)心的是控件中的值,而不是控件對象本身。這時(shí),還可以通過Variable type下拉框?yàn)樽兞窟x擇不同的類型,可以選擇一般的C+數(shù)據(jù)類型或Visual C+自定義的數(shù)據(jù)類型。n例如,
15、對于編輯框控件,此時(shí)成員變量的類型可以是int、float、long、BOOL等C+一般數(shù)據(jù)類型或者是UINT、CString等Visual C+自定義數(shù)據(jù)類型。25n如果在Category下拉框中選擇Control項(xiàng),則表示定義的變量代表控件對象本身, Control類別的變量實(shí)質(zhì)是一個(gè)控件對象,其類型是MFC控件類。n例如,對于編輯框控件,此時(shí)成員變量的類型為CEdit。因此,可以通過添加的控件對象訪問控件類的成員變量和調(diào)用控件類的成員函數(shù),實(shí)現(xiàn)對控件行為的控制和管理。l可以為一個(gè)控件同時(shí)定義一個(gè)Control類別的變量和一個(gè)Value類別的變量。這些變量都是作為對話框派生類的成員變量,為
16、了在程序其它地方能夠直接訪問添加的成員變量,它們都被聲明為public屬性。2611.2.4 對話框數(shù)據(jù)交換對話框數(shù)據(jù)交換DDX和驗(yàn)證和驗(yàn)證DDVn在對話框中實(shí)現(xiàn)用戶數(shù)據(jù)輸入和輸出的一般方法是通過ClassWizard類向?qū)υ捒蚩丶c成員變量相關(guān)聯(lián),利用對話框數(shù)據(jù)交換DDX(Dialog Data Exchange)和驗(yàn)證DDV(Dialog Data Validation)機(jī)制實(shí)現(xiàn)數(shù)據(jù)的輸入和輸出。n當(dāng)利用ClassWizard類向?qū)砑映蓡T變量時(shí),用戶如果在窗口的左下角輸入數(shù)據(jù)的范圍,ClassWizard將自動(dòng)加入函數(shù)DDV的調(diào)用代碼。27 例 如 , 當(dāng) 添 加 一 個(gè) U I N
17、 T 型 的 成 員 變 量m_nInput時(shí)指定它的最小值和最大值分別為0和100,則 C l a s s W i z a r d 類 向 導(dǎo) 將 在 成 員 函 數(shù)DoDataExchange()中添加以下DDV函數(shù)的調(diào)用語句:DDV_MinMaxUInt(pDX, m_nInput, 0, 100); 程序運(yùn)行后,如果用戶的輸入數(shù)據(jù)超出0100的范圍,DDV將顯示一個(gè)提示信息對話框,提示用戶有效的輸入范圍。28UpdateData()的用法的用法: 當(dāng)調(diào)用UpdateData(TRUE)時(shí),MFC通過調(diào)用DDX函數(shù)將數(shù)據(jù)從控件傳遞到關(guān)聯(lián)的成員變量;當(dāng)調(diào)用UpdateData(FALSE)
18、時(shí),MFC通過調(diào)用DDX函數(shù)將數(shù)據(jù)從成員變量傳遞到關(guān)聯(lián)的的控件。利用UpdateData()函數(shù)實(shí)現(xiàn)了在刷新后重新獲取成員變量。29例例 完善Mysdi程序,向?qū)υ捒蛸Y源添加需要使用的控件,并添加與控件關(guān)聯(lián)的成員變量。1向?qū)υ捒蛸Y源添加控件。添加一個(gè)靜態(tài)文本控件,其Caption為“請輸入半徑”。添加一個(gè)Edit Box編輯框控件,其ID標(biāo)識為IDC_EDIT_ RADIUS,該控件用于接收用戶的輸入數(shù)據(jù)。2添加與控件關(guān)聯(lián)的成員變量。按Ctrl + W 鍵啟動(dòng)ClassWizard類向?qū)?,單擊Member Variables標(biāo)簽。在Class name下拉框選擇類CRadiusDialog,在
19、Control IDs欄選擇編輯框IDC_EDIT_RADIUS,單擊Add Variable按鈕。通過Add Member Variable對話框添加成員變量m_nRadius,其數(shù)據(jù)類型為UINT。3使用對話框數(shù)據(jù)驗(yàn)證DDV功能,在該頁面的左下角輸入成員變量m_nRadius的最小值5和最大值250。30 例例 通過“編輯”菜單中的“輸入半徑(I)”命令打開上述標(biāo)題為“輸入半徑”的對話框,并根據(jù)輸入的半徑畫一個(gè)圓。1為了在視圖對象中接收并存儲對話框編輯控件的值,在視圖類CMysdiView中手工定義一個(gè)UINT類型的成員變量m_nCViewRadius。2利用菜單編輯器在“編輯”菜單增加一
20、個(gè)菜單項(xiàng)“輸入半徑(I)”,其ID標(biāo)識為ID_EDIT_INPUTRADIUS,Caption為“輸入半徑(&I).”。按Ctrl+W鍵啟動(dòng)ClassWzard類向?qū)?,在視圖類中為ID_EDIT_INPUTRADIUS菜單項(xiàng)添加消息COMMAND的處理函數(shù),在函數(shù)中添加代碼。在程序中使用創(chuàng)建的對話框在程序中使用創(chuàng)建的對話框31 void CMysdiView:OnEditInputradius() / TODO: Add your command handler code here CRadiusDialog dlg; / 定義一個(gè)對話框?qū)ο?dlg.m_nRadius=100;/ 設(shè)
21、置編輯框顯示的初始值 if (dlg.DoModal()=IDOK) / 顯示對話框 m_nCViewRadius=dlg.m_nRadius; / 接收并存儲編輯框數(shù)據(jù) Invalidate(); / 刷新視圖 32 3在視圖類構(gòu)造函數(shù)CMysdiView:CMysdiView()中將成員變量m_nCViewRadius初始化為0。在函數(shù)CMysdiView:OnDraw()中添加如下畫圓的語句:pDC-Ellipse(0, 0, 2*m_nCViewRadius, 2*m_nCViewRadius); 在視圖類實(shí)現(xiàn)文件MysdiView.cpp的開始位置加入包含對話框類頭文件的語句: #i
22、nclude RadiusDialog.h”33注意:注意: 表面上看程序并沒有調(diào)用UpdateData(),但是,當(dāng)程序調(diào)用CDialog:DoModal()創(chuàng)建并顯示對話框時(shí),將自動(dòng)調(diào)用CDialog:OnInitDialog()完成初始化的工作。在OnInitDialog()中調(diào)用了UpdateData(FALSE),將數(shù)據(jù)從成員變量傳遞到關(guān)聯(lián)的控件,從而顯示在控件中。而單擊OK按鈕將調(diào)用C D i a l o g : : O n O k ( ) 函 數(shù) , 在 O n O K ( ) 中 調(diào) 用 了UpdateData(TRUE),將數(shù)據(jù)從控件傳遞到關(guān)聯(lián)的成員變量。 由此看來,不管MF
23、C將DDX技術(shù)如何復(fù)雜化,我們只需知道,DDX就如同一條雙向通道,而方向控制開關(guān)就是UpdateData()函數(shù)中的BOOL類型參數(shù)是TRUE還是FALSE。34例11_2設(shè)計(jì)一個(gè)應(yīng)用程序,當(dāng)用戶在程序窗口上單擊鼠標(biāo)左鍵時(shí),會(huì)出現(xiàn)一個(gè)對話框,用戶可在輸入編輯框中輸入文字,當(dāng)按下”輸入”按鈕時(shí),該輸入可以存入對話框中與輸入編輯框?qū)?yīng)的成員變量;當(dāng)按下”顯示”按鈕時(shí),該數(shù)據(jù)將復(fù)制在與顯示編輯框?qū)?yīng)的成員變量中,并會(huì)在顯示編輯框中出現(xiàn);當(dāng)按下ok按鈕,對話框關(guān)閉,并把兩個(gè)成員變量的數(shù)據(jù)顯示在應(yīng)用程序的窗口上.3511.2.7 通用對話框通用對話框 在Windows程序設(shè)計(jì)中,經(jīng)常用到一些具有專門用途
24、的對話框,例如打開文件對話框,保存文件對話框,顏色選擇對話框,字體選擇對話框等.MFC專門為用戶設(shè)計(jì)了能創(chuàng)建這類對話框的類,這些類的聲明均在頭文件afxdlgs.h中,在使用通用對話框時(shí),要包含該文件.公用對話框公用對話框 MFC公用對話框類公用對話框類 CColorDialog CFileDialogCFindReplaceDialog CFontDialogCPagesSetupDialog CPrintDialog COleDialog說說 明明顏色設(shè)定對話框,選擇不同的顏色文件存取對話框,打開或保存文件查找和替換對話框,查找和替換文本串字體設(shè)定對話框,選擇不同的字體。頁面設(shè)置對話框,設(shè)
25、置頁碼、頁眉等標(biāo)準(zhǔn)的打印對話框,用于打印和打印設(shè)置該類及其派生類用于生成OLE對話框371.文件對話框n一般的Windows應(yīng)用程序都應(yīng)該有打開和保存文件的功能,MFC提供的文件對話框類CFileDialog就是支持應(yīng)用程序的這個(gè)功能nCFileDialog類的構(gòu)造函數(shù):38CFileDialog(BOOL bOpenFileDialog, /指定是Open還是Save對話框LPCTSTR lpszDefExt=NULL, /添加到?jīng)]擴(kuò)展名文件上的擴(kuò)展名PCTSTR lpszFileName=NULL,/應(yīng)該初始選定的文件名DWORD dwFlags=OFN_HIDEREADONLY|OFN_
26、OVERWRITEPROMPT, /自定義標(biāo)志LPCTSTR lpszFilter=NULL,/ /File of Type中的過濾參數(shù)CWnd* pParentWnd=NULL); /對話框父窗口的指針39n每一個(gè)過濾參數(shù)由兩項(xiàng)組成:第一項(xiàng)指明在文件類型框中需要顯示的文本,第二項(xiàng)指明文件的類型.一個(gè)完整的文件過濾參數(shù)如下: Word文檔(*.doc)|*.doc可以使用多個(gè)過濾參數(shù),用OR符號(|)連接起來:Word文檔(*.doc)|*.doc|位圖(*.bmp)|*.bmp|全部文件(*.*)|*.*40如果要?jiǎng)?chuàng)建帶有提示框的保存對話框,構(gòu)造函數(shù)的第四個(gè)參數(shù)dwFlags應(yīng)該設(shè)為OFN_
27、HIDEREADONLY|OFN_OVERWRITEPROMPT.使用CFileDialog類的構(gòu)造函數(shù)創(chuàng)建了打開文件對話框或者保存文件對話框后,就可以使用DoModal來顯示對話框.例11_4 用鼠標(biāo)左鍵單擊窗口會(huì)出現(xiàn)一個(gè)打開文件對話框,而用鼠標(biāo)右擊窗口會(huì)出現(xiàn)一個(gè)保存文件對話框.41void CMFCexp11_4View:OnLButtonDown(UINT nFlags, CPoint point) char*filters=Word文檔(*.doc)|*.doc|位圖(*.bmp)|*.bmp|全部文件(*.*)|*.*;CFileDialog fileDlg(TRUE,NULL,*.
28、doc,NULL,filters);int result=fileDlg.DoModal();if(result=IDOK)m_openfileName=fileDlg.GetPathName();AfxMessageBox(m_openfileName);CView:OnLButtonDown(nFlags, point);42void CMFCexp11_4View:OnRButtonDown(UINT nFlags, CPoint point) char*filters=Word文檔(*.doc)|*.doc|位圖(*.bmp)|*.bmp|全部文件(*.*)|*.*;CFileDial
29、og fileDlg(FALSE,NULL,*.doc,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,filters);int result=fileDlg.DoModal();if(result=IDOK)m_saveFileName = fileDlg.GetFileName();CView:OnRButtonDown(nFlags, point);43class CMFCexp11_4View : public CViewprotected: CString m_openfileName,m_saveFileName;afx_msg void OnLButto
30、nDown(UINT nFlags, CPoint point);afx_msg void OnRButtonDown(UINT nFlags, CPoint point);442.字體選擇對話框CFontDialog類的構(gòu)造函數(shù)CFontDialog(LPLOGFONT lplfInitial=NULL,DWORDdwflags=CF_EFFECTS|CF_SCREENFONTS,CDC* pdcPrinter=NULL,CWND* pParentWnd=NULL);45一般只使用一個(gè)參數(shù):LOGFONT m_logFont;CFontDialog fontDialog(&m_log
31、Font);Int result=fontDialog.DoModal();當(dāng)用戶單擊Ok按鈕退出對話框,函數(shù)DoModal()將返回IDOK.在這種情況下,可通過GetCurrentFont獲得所選字體.GetCurrent函數(shù)原型為:Void GetCurrentFont(LPLOGFONT lplf);該函數(shù)將所選字體的值保存在參數(shù)中.46在獲取了LOGFONT結(jié)構(gòu)之后,應(yīng)該創(chuàng)建一個(gè)CFont類的對象并調(diào)用該對象的成員函數(shù)CreateFontIndirect來創(chuàng)建該字體,例如:LOGFONT logFont;fontDialog.GetCurrentFont(&logFont);
32、CFont font;Font.CreateFontIndirect(&logFont);創(chuàng)建字體后就可以把字體選入設(shè)備描述環(huán)境.例11_5當(dāng)用戶左鍵單擊會(huì)出現(xiàn)一個(gè)字體選擇對話框,如果選擇了某種字體,當(dāng)按下對話框的確認(rèn)鍵后,窗口上的文本的字體會(huì)發(fā)生相應(yīng)的變化.47class CMFCexp11_5View : public CViewprotected:LOGFONT m_logFont; /定義一個(gè)LOGFONT類型的數(shù)據(jù)成員CFont* m_pFont; /定義一個(gè)字體對象指針COLORREF m_fontColor; /定義存放字體顏色的成員變量48CMFCexp11_5View:CMFCexp11_5View() m_fontColor=RGB(0,0,0);/設(shè)置字體顏色/給結(jié)構(gòu)m_logFont各成員賦值,以描述默認(rèn)字體m_logFont.lfHeight = 48;m_logFont.lfWidth = 0;m_logFont
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 班會(huì)課件-團(tuán)結(jié)
- 相親活動(dòng)策劃方案
- 10月汽車電氣技術(shù)試題庫與參考答案解析
- 《技術(shù)分析基礎(chǔ)》課件
- 紡織品及針織品行業(yè)法律法規(guī)遵守與合規(guī)經(jīng)營考核試卷
- 船舶建造質(zhì)量控制要點(diǎn)考核試卷
- 旅行便攜式衛(wèi)具考核試卷
- 藝人職業(yè)規(guī)劃與發(fā)展路徑設(shè)計(jì)實(shí)施策略執(zhí)行方法應(yīng)用考核試卷
- 北師大二年級下數(shù)學(xué)課件-動(dòng)物分類
- 視聽產(chǎn)品營銷策略與實(shí)施效果評估考核試卷
- 水域救援小組器材裝備配備標(biāo)準(zhǔn)
- 小學(xué)數(shù)學(xué)-水中浸物問題-完整版題型訓(xùn)練30題-帶答案
- 2022年消毒技術(shù)規(guī)范
- 數(shù)據(jù)標(biāo)注與審核行業(yè)營銷策略方案
- 中國電信股份有限公司廣東公司4G四期規(guī)劃基站(廣州、清遠(yuǎn)、韶關(guān)分冊)項(xiàng)目環(huán)境影響報(bào)告表
- 健康照明技術(shù)研究
- 年產(chǎn)3.0萬噸二甲醚裝置分離精餾工段的設(shè)計(jì)
- 驗(yàn)房項(xiàng)目詳細(xì)表格
- 小學(xué)二年級下冊第19課-大象的耳朵教案(部編版)
- 過敏性休克應(yīng)急預(yù)案ppt
- 愛情公寓第二季1至5集劇本
評論
0/150
提交評論