




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、2.3 對(duì)話框與控件對(duì)話框(dialog box)是GUI的常用組件,也是其最復(fù)雜的組件,主要用于接收用戶的各種輸入和選擇,也可用于向用戶顯示信息。在對(duì)話框中可以包含文本框、編輯框、列表框、組合框、按鈕、單選鈕、復(fù)選框等各種控件(control),供用戶查看、輸入和選擇,也可響應(yīng)用戶操作命令來(lái)完成一定的任務(wù)。1對(duì)話框1)分類(1) 模式對(duì)話框與無(wú)模式對(duì)話框按工作方式不同,可將對(duì)話框分成兩類:l 模式對(duì)話框(modal dialog box模態(tài)對(duì)話框):在關(guān)閉模式對(duì)話框之前,該程序不能進(jìn)行其他工作(如“打開(kāi)文件”對(duì)話框)l 無(wú)模式對(duì)話框(modeless dialog box非模態(tài)對(duì)話框):模式
2、對(duì)話框打開(kāi)后,該程序仍然能夠進(jìn)行其他工作(如“查找與替換”對(duì)話框)(2) 公用對(duì)話框與用戶對(duì)話框按編程方式不同,還可將Windows對(duì)話框分成兩類:l 公用對(duì)話框(common dialog boxes通用/公共對(duì)話框):Windows提供的一組標(biāo)準(zhǔn)用戶接口對(duì)話框,包括文件、顏色、字體、查找替換、頁(yè)面設(shè)置、打印等對(duì)話框。公用對(duì)話框的資源與處理代碼被封裝在動(dòng)態(tài)連接庫(kù)文件comdlg32.dll中,該文件一般放在Windows系統(tǒng)安裝目錄下的system32子目錄中,可供所有的Win32應(yīng)用程序調(diào)用。l 用戶對(duì)話框(user dialog box):用戶自己創(chuàng)建的對(duì)話框,對(duì)話框的資源與處理代碼都由
3、程序員自己來(lái)編寫(xiě)。用戶對(duì)話框,還可以進(jìn)一步分成如下兩種具體類型:n 輸入型:主要用于接受用戶的輸入和選擇,需要自己創(chuàng)建對(duì)話框類和添加控件變量,并利用MFC的對(duì)話框自動(dòng)數(shù)據(jù)交換(DDX)功能。這是最常見(jiàn)的一種用戶對(duì)話框類型,用于一般的應(yīng)用程序。n 操作型:主要用于響應(yīng)用戶的操作,不需要添加控件變量,一般也不能利用DDX功能,需要自己進(jìn)行對(duì)話框數(shù)據(jù)的初始化設(shè)置和當(dāng)前值與狀態(tài)的獲取。操作型對(duì)話框,一般用于基于對(duì)話框的應(yīng)用程序。2)類層次結(jié)構(gòu)MFC的對(duì)話框基類為CDialog,它既支持模式對(duì)話框(調(diào)用其成員函數(shù)DoModal),也支持無(wú)模式對(duì)話框(調(diào)用其成員函數(shù)Create + ShowWindow)
4、。用戶自定義對(duì)話框類,一般都是直接從CDialog類派生的。MFC的公用對(duì)話框類CCommonDialog是從CDialog派生的,而它又是其他各種具體公用對(duì)話框類的基類。Windows提供的各種公用對(duì)話框被MFC封裝在對(duì)應(yīng)名稱的類中,常用的具體公用對(duì)話框類有:文件對(duì)話框類(CFileDialog)、顏色對(duì)話框類(CColorDialog)、字體對(duì)話框類(CFontDialog)、查找替換對(duì)話框類(CFindReplaceDialog)、頁(yè)面設(shè)置對(duì)話框類(CPageSetupDialog)、打印對(duì)話框類(CPrintDialog)等,可參見(jiàn)下面的類層次結(jié)構(gòu)圖。對(duì)話框類的層次結(jié)構(gòu)圖3)創(chuàng)建和使用
5、用戶對(duì)話框的步驟創(chuàng)建和使用自定義用戶模式對(duì)話框的主要步驟為:l 創(chuàng)建對(duì)話框資源:使用對(duì)話框編輯器創(chuàng)建對(duì)話框資源(如添加各種控件,調(diào)整控件的大小與位置,設(shè)置控件的ID與內(nèi)容)l 對(duì)輸入型對(duì)話框:n 創(chuàng)建對(duì)話框類:使用“MFC類向?qū)А睂?duì)話框創(chuàng)建CDialog的派生類,并將它與已經(jīng)創(chuàng)建對(duì)話框資源ID相關(guān)聯(lián)n 添加類的控件變量:使用“添加成員變量向?qū)А睂?duì)話框向派生的對(duì)話框類中添加成員變量n 添加事件處理:使用“事件處理程序向?qū)А睘閷?duì)話框中的(按鈕和編輯框等可生成事件的)控件添加事件處理函數(shù),編寫(xiě)處理代碼n 使用對(duì)話框:在應(yīng)用程序的某個(gè)類中的需要處(一般是在視圖類的某個(gè)事件處理或消息響應(yīng)函數(shù)中)u 創(chuàng)建
6、對(duì)話框?qū)ο髐 初始化對(duì)話框的控件變量u 用成員函數(shù)DoModal打開(kāi)對(duì)話框u 在用戶按“確定”(IDOK)鍵關(guān)閉對(duì)話框后,通過(guò)對(duì)話框類的控件變量獲取用戶的輸入和選擇l 對(duì)操作型對(duì)話框:n 初始化:在用戶對(duì)話框類的重寫(xiě)型消息響應(yīng)函數(shù)OnInitDialog中,對(duì)對(duì)話框中的控件做初始化設(shè)置,主要是設(shè)置應(yīng)用程序的各種輸入和選擇參數(shù)的初值n 添加事件處理:使用“事件處理程序向?qū)А睘閷?duì)話框中的(按鈕和編輯框等可生成事件的)控件添加事件處理函數(shù),編寫(xiě)處理代碼(包括獲取各控件的當(dāng)前值或狀態(tài))n (接受用戶輸入:在用戶對(duì)話框類的OnOK虛擬成員函數(shù)(該函數(shù)在用戶按對(duì)話框中的“確定”鈕IDOK退出對(duì)話框時(shí)調(diào)用)
7、中,編寫(xiě)接受各種輸入和選擇參數(shù)的代碼)4)輸入型用戶對(duì)話框例下面以Student程序的輸入對(duì)話框?yàn)槔?,介紹一個(gè)簡(jiǎn)單輸入型用戶對(duì)話的創(chuàng)建與使用的典型過(guò)程(省卻了添加事件處理步驟)。對(duì)Student程序,可在用戶按添加菜單項(xiàng)/按鈕時(shí),彈出對(duì)話框,讓用戶輸入學(xué)生的姓名和成績(jī)。具體操作如下:(1) 創(chuàng)建對(duì)話框資源計(jì)劃用對(duì)話框編輯器建立一個(gè)如下圖所示的輸入對(duì)話框資源:輸入對(duì)話框l 創(chuàng)建對(duì)話框資源:在項(xiàng)目工作區(qū)的“資源視圖”頁(yè)中的“Dialog”項(xiàng)上單擊鼠標(biāo)右鍵,在彈出菜單中選“插入Dialog”項(xiàng),VS會(huì)自動(dòng)創(chuàng)建一個(gè)ID為“IDD_DIALOG1”、標(biāo)題為“Dialog”、含“確定”(IDOK)與“取消
8、”(IDCANCEL)按鈕的缺省對(duì)話框,并打開(kāi)對(duì)話框編輯器包括位于VS窗口中部的對(duì)話框資源編輯窗口、位于VS窗口右部的工具箱窗口、位于VS窗口頂部的格式工具條和增加的“格式”菜單(參見(jiàn)下圖)對(duì)話框編輯器l 打開(kāi)屬性窗口和工具箱窗口:n 工具箱窗口,在鼠標(biāo)離開(kāi)后,會(huì)自動(dòng)關(guān)閉,最好釘住它(此時(shí),屬性窗口會(huì)出現(xiàn)在其下面)n 如果看不到屬性窗口,可以(讓鼠標(biāo)離開(kāi)來(lái))關(guān)閉工具箱窗口、或選“視圖其它窗口屬性窗口”菜單項(xiàng);n 如果看不到工具箱窗口,可以將鼠標(biāo)放在VS窗口右端的上,或選“視圖工具箱”菜單項(xiàng)l 修改對(duì)話框的ID和標(biāo)題:選中項(xiàng)目工作區(qū)的“資源視圖”頁(yè)中的“StudentStudent.rc Dia
9、logIDD_DIALOG1”,在對(duì)應(yīng)屬性窗口中“雜項(xiàng)”組的ID欄將對(duì)話框的標(biāo)識(shí)符修改為“IDD_INPUT”,在“外觀”組的標(biāo)題欄“Caption”將對(duì)話框的標(biāo)題修改為“輸入學(xué)生信息”l 在工具箱中選中靜態(tài)文本工具“Aa Static Text”,在對(duì)話框客戶區(qū)中的適當(dāng)位置n 單擊鼠標(biāo)左鍵,直接輸入“姓名(&N):”,則會(huì)自動(dòng)修改其“Caption”欄中內(nèi)容,并自動(dòng)調(diào)整文本框的大小n 或畫(huà)一個(gè)矩形,在屬性窗口“外觀”組中“Caption”欄中,將內(nèi)容改為“姓名(&N):”,手工調(diào)整文本框的大?。ㄒ部梢赃x中靜態(tài)文本框,按鼠標(biāo)右鍵彈出浮動(dòng)菜單,選則其中的“按內(nèi)容調(diào)整大小”菜單項(xiàng)來(lái)
10、自動(dòng)進(jìn)行大小調(diào)整)其中的“&N”為訪問(wèn)鍵,作用與菜單項(xiàng)中的類似:在運(yùn)行時(shí),可利用Alt+N來(lái)快速定位。但是要注意創(chuàng)建控件的順序,因?yàn)榫庉嬁丶](méi)有Caption屬性,所以要定位某一編輯控件,是靠邏輯上位于它前面的靜態(tài)文本控件中訪問(wèn)鍵來(lái)決定的(因?yàn)殪o態(tài)文本控件本身不能有輸入焦點(diǎn),所以用其訪問(wèn)鍵并不能定位到它自己,而是定位到邏輯上位于它后面的可具有輸入焦點(diǎn)的控件,如編輯控件、列表控件等)。所謂控件的邏輯順序是指在創(chuàng)建對(duì)話框資源的過(guò)程中控件被創(chuàng)建的先后順序。如果控件的邏輯順序不對(duì),可以以文本方式打開(kāi)“*.rc”文件,在對(duì)應(yīng)的對(duì)話框代碼段中,手工調(diào)整對(duì)應(yīng)控件行的順序。l 在工具箱中選中編輯控件工
11、具“ab| Edit Control”,在姓名文本框的右邊單擊或畫(huà)一個(gè)矩形,在屬性窗口“雜項(xiàng)”組中的ID欄中,修改ID為“IDC_NAME”l 在工具箱中選中分組框工具“ Group Box”,在姓名下面畫(huà)一個(gè)較大的矩形(這時(shí)可能需要先下拉對(duì)話框的下邊框來(lái)加大對(duì)話框),在屬性窗口“雜項(xiàng)”組中“Caption”欄中,將內(nèi)容改為“成績(jī)(&S):”l 類似于姓名靜態(tài)文本框和編輯控件框,可在成績(jī)分組框內(nèi)添加“數(shù)學(xué)(&M):”、“英語(yǔ)(&E):”和“計(jì)算機(jī)(&P):”的文本框和編輯控件(ID分別設(shè)為IDC_MATH、IDC_ENG和IDC_COMP)l 可用鼠標(biāo)或方向鍵調(diào)
12、整對(duì)話框的大小和每個(gè)控件的位置(和大?。?,也可以利用對(duì)話框工具條中各種對(duì)齊按鈕來(lái)調(diào)整。例如,先同時(shí)選中“確定”與“取消”兩個(gè)鈕,單擊格式工具條中的垂直對(duì)齊按鈕,將它們?cè)趯?duì)話框的右邊對(duì)中(參見(jiàn)下圖)選擇控件的方法:n 選工具箱中的“ 指針”工具n 選中單個(gè)控件:?jiǎn)螕鬾 選中多個(gè)控件:u 按住Ctrl鍵不放,用鼠標(biāo)逐個(gè)選中u 或用鼠標(biāo)圈定l 最后得到本小節(jié)開(kāi)始時(shí)所示的對(duì)話框資源l 還可以單擊格式工具條中的垂直對(duì)測(cè)試對(duì)話框按鈕來(lái)對(duì)編輯好的用戶自定義對(duì)話框進(jìn)行測(cè)試(參見(jiàn)下圖)對(duì)話框測(cè)試對(duì)應(yīng)的對(duì)話框資源文本(也位于Student.rc文件中)為:IDD_INPUT DIALOGEX 0, 0, 148,
13、 121STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENUCAPTION "輸入學(xué)生信息"FONT 8, "MS Shell Dlg", 400, 0, 0x1BEGIN DEFPUSHBUTTON "確定",IDOK,129,25,50,14 PUSHBUTTON "取消",IDCANCEL,129,55,50,14 LTEXT "姓名(&N):",IDC_STATIC,
14、7,7,35,8 EDITTEXT IDC_NAME,44,7,51,14,ES_AUTOHSCROLL LTEXT "訪問(wèn)鍵(&K):",IDC_STATIC,9,30,42,8 EDITTEXT IDC_MNEM,53,27,18,14,ES_AUTOHSCROLL GROUPBOX "成績(jī)(&S):",IDC_STATIC,7,22,116,64 LTEXT "數(shù)學(xué)(&M):",IDC_STATIC,17,38,36,8 EDITTEXT IDC_MATH,55,35,40,14,ES_AUTOHSCRO
15、LL LTEXT "英語(yǔ)(&E):",IDC_STATIC,19,53,34,8 EDITTEXT IDC_ENG,55,52,40,14,ES_AUTOHSCROLL LTEXT "計(jì)算機(jī)(&P):",IDC_STATIC,11,70,42,8 EDITTEXT IDC_COMP,55,69,40,14,ES_AUTOHSCROLLEND(2) 創(chuàng)建對(duì)話框類l 添加類:n 打開(kāi)“MFC類向?qū)А睂?duì)話框(參見(jiàn)下圖):u 選中(編輯好了的)對(duì)話框資源,按鼠標(biāo)右鍵彈出浮動(dòng)菜單,單擊其中的“添加類”菜單項(xiàng),就會(huì)打開(kāi)“MFC類向?qū)А睂?duì)話框u 或在項(xiàng)
16、目區(qū)的類視圖頁(yè)中的項(xiàng)目名(本例中為Student)上,按鼠標(biāo)右鍵彈出浮動(dòng)菜單,單擊其中的“添加類”菜單項(xiàng),也會(huì)打開(kāi)“MFC類向?qū)А睂?duì)話框MFC類向?qū)?duì)話框n 在對(duì)話框的“類名”欄中,鍵入用戶對(duì)話框類的名稱“CInputDlg”,其余部分采用缺省的(“基類”為CDialog、“對(duì)話框ID”為“IDD_INPUT”、“自動(dòng)化”欄選“無(wú)”單選鈕、頭文件和代碼文件分別為InputDlg.h和InputDlg.cpp),按“完成”鈕,則VS會(huì)自動(dòng)創(chuàng)建與該對(duì)話框資源相關(guān)聯(lián)的一個(gè)名為CInputDlg對(duì)話框類l 添加類變量:n 打開(kāi)“添加成員變量向?qū)А睂?duì)話框(參見(jiàn)下圖):u 選中對(duì)話框的某個(gè)編輯控件框(例如
17、姓名編輯控件),按鼠標(biāo)右鍵,在彈出的浮動(dòng)菜單中單擊“添加變量”菜單項(xiàng),會(huì)打開(kāi)“添加成員變量向?qū)А睂?duì)話框u 或在項(xiàng)目區(qū)的類視圖頁(yè),選中CInputDlg項(xiàng),按鼠標(biāo)右鍵,在彈出的浮動(dòng)菜單中單擊“添加添加變量”菜單項(xiàng),也會(huì)打開(kāi)“添加成員變量向?qū)А睂?duì)話框添加成員變量向?qū)?duì)話框n 選擇控件ID:選中對(duì)話框中部頂?shù)摹翱丶兞俊睆?fù)選框,在“控件ID”欄的下拉式列表中,選中某個(gè)ID(例如ID_NAME)n 選擇類別:在該對(duì)話框的右上部的“類別”欄的下拉式列表中,選中“value”(缺省為“control”)n 選擇變量類型:對(duì)value類別的缺省“變量類型”為字符串類型“CString”,可以從“變量類型”下
18、拉式列表中選擇其他類型,如int、float等等n 鍵入變量名:在“變量名”欄中輸入與編輯控件對(duì)應(yīng)的變量名(例如m_sName)n 設(shè)置變量大小和范圍:u 對(duì)字符串型的類變量(例如m_sName),可在“最大字符數(shù)”欄中設(shè)置最大字符數(shù)(例如4)u 對(duì)數(shù)值型的類變量(例如m_iMath),可在“最小值”和“最大值”欄中分別設(shè)置變量的最小值和最大值(例如0和100)n 完成:按“完成”鈕,結(jié)束變量添加過(guò)程(必需一個(gè)一個(gè)地添加,非常麻煩)n 下面是Student項(xiàng)目的輸入對(duì)話框中的類變量設(shè)置表:控件ID變量名類型大小范圍姓名IDC_NAMEm_sNameCString4訪問(wèn)鍵IDC_MNEMm_sM
19、nemCString1數(shù)學(xué)IDC_MATHm_iMathint0100英語(yǔ)IDC_ENGm_iEngint0100計(jì)算機(jī)IDC_COMPm_iCompint0100下面是MFC自動(dòng)產(chǎn)生的部分代碼。l 在構(gòu)造函數(shù)的頭部自動(dòng)初始化各個(gè)類變量(如果選中過(guò)“自動(dòng)化”單選鈕,則還在構(gòu)造函數(shù)中調(diào)用CCmdTarget類的成員函數(shù)EnableAutomation來(lái)設(shè)置對(duì)話框的自動(dòng)化處理):CInputDlg:CInputDlg(CWnd* pParent /*=NULL*/): CDialog(CInputDlg:IDD, pParent), m_sName(_T(""), m_sMne
20、m(_T(""), m_iMath(0), m_iEng(0), m_iComp(0)/EnableAutomation();l 在DoDataExchange函數(shù)中,設(shè)置各個(gè)類變量和對(duì)應(yīng)控件之間的映射,并設(shè)置變量的取值范圍:void CInputDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);DDX_Text(pDX, IDC_NAME, m_sName);DDV_MaxChars(pDX, m_sName, 4);DDX_Text(pDX, IDC_MNEM, m_sMnem);DDV_
21、MaxChars(pDX, m_sMnem, 1);DDX_Text(pDX, IDC_MATH, m_iMath);DDV_MinMaxInt(pDX, m_iMath, 0, 100);DDX_Text(pDX, IDC_ENG, m_iEng);DDV_MinMaxInt(pDX, m_iEng, 0, 100);DDX_Text(pDX, IDC_COMP, m_iComp);DDV_MinMaxInt(pDX, m_iComp, 0, 100);(3) 使用對(duì)話框l 在視圖類的代碼文件(如StudentView.cpp)中包含對(duì)話框的頭文件(如InputDlg.h),位置應(yīng)該位于語(yǔ)句
22、“#include "stdafx.h"”之后l 在視圖類的某個(gè)菜單項(xiàng)(如“學(xué)生/輸入”ID_INPUT)事件處理函數(shù)中,創(chuàng)建對(duì)話框?qū)ο螅跏蓟瘏?shù),顯示模式對(duì)話框(參見(jiàn)下圖)l 若DoModal函數(shù)返回的是IDOK,則保存用戶輸入和選擇的參數(shù),并進(jìn)行其他需要的操作??梢詤⒁?jiàn)下面的代碼段:(其中,m_sName和m_sMnem為視圖類的CString類變量,初值可為L(zhǎng)"陳六"和L"C"等;m_iMath、m_iEng 和m_iComp為視圖類的int變量,取值如75、90和80等。)void CStudentView:OnInput(
23、)/ TODO: 在此添加命令處理程序代碼if(m_iAddNum >= 2) return; CInputDlg dlg;dlg.m_sName = m_sName;dlg. m_sMnem = m_sMnem;dlg.m_iMath = m_iMath;dlg.m_iEng = m_iEng;dlg.m_iComp = m_iComp;if(dlg.DoModal() = IDOK) m_sName = dlg.m_sName;m_sMnem = dlg. m_sMnem;m_iMath = dlg.m_iMath;m_iEng = dlg.m_iEng;m_iComp = dlg.
24、m_iComp;5)無(wú)模式對(duì)話框?qū)υ捒虻馁Y源是中性的,即可作為模式對(duì)話框來(lái)使用,也可作為無(wú)模式對(duì)話框來(lái)使用。關(guān)鍵是看使用的方法。在使用模式對(duì)話框時(shí),是用DoModal成員函數(shù)來(lái)顯示模式對(duì)話框。而對(duì)無(wú)模式對(duì)話框則必須先調(diào)用CDialog類的Create等成員函數(shù)來(lái)創(chuàng)建對(duì)話框?qū)ο?,然后再利用從CWnd類繼承的ShowWindow成員函數(shù)來(lái)顯示無(wú)模式對(duì)話框。(1) 創(chuàng)建和刪除對(duì)話框窗口為此,可以先定義一個(gè)視圖類的對(duì)話框?qū)ο箢愖兞?,如:CDialog m_mlDlg;并在視圖類的構(gòu)造函數(shù)中,調(diào)用CDialog類的成員函數(shù):virtual BOOL Create(UINT nIDTemplate, CW
25、nd* pParentWnd = NULL);來(lái)創(chuàng)建對(duì)話框?qū)ο?,其中nIDTemplate為對(duì)話框資源的ID。例如:m_mlDlg.Create(IDD_INPUTDLG);與Create對(duì)應(yīng),可在視圖類的析構(gòu)函數(shù)中,調(diào)用CWnd的成員函數(shù):virtual BOOL DestroyWindow( );來(lái)刪除Create所創(chuàng)建的對(duì)話框窗口對(duì)象,如:m_mlDlg.DestroyWindow();(2) 顯示對(duì)話框可以添加一個(gè)菜單項(xiàng)(如ID_ML_DLG)及其事件處理函數(shù)(如OnMlDlg),并在該函數(shù)中用SW_SHOW參數(shù)調(diào)用CWnd的成員函數(shù):BOOL ShowWindow(int nCmdS
26、how);來(lái)顯示無(wú)模式對(duì)話框。例如:void CStudentView:OnMlDlg() m_mlDlg.ShowWindow(SW_SHOW);(3) 設(shè)置成最頂層窗口不過(guò),這時(shí)的無(wú)模式對(duì)話框,在你選中應(yīng)用程序主框架窗口后,會(huì)被窗口所覆蓋。解決辦法是在創(chuàng)建對(duì)話框?qū)ο笾?,再?amp;wndTopMost為首個(gè)參數(shù)來(lái)調(diào)用CWnd的成員函數(shù):BOOL SetWindowPos(const CWnd* pWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags);將無(wú)模式對(duì)話框設(shè)置成最頂層窗口。例如:CStudentView:CStud
27、entView() m_mlDlg.Create(IDD_INPUTDLG);RECT rcDlg; m_mlDlg.GetWindowRect(&rcDlg); m_mlDlg.SetWindowPos(&wndTopMost, rcDlg.left, rcDlg.top, 0, 0, SWP_NOSIZE); / cx = cy =0表示忽略大小參數(shù)(保持不變)6)公用對(duì)話框的使用公用對(duì)話框是Windows為應(yīng)用程序提供的一組標(biāo)準(zhǔn)用戶接口對(duì)話框,負(fù)責(zé)從用戶那里收集常見(jiàn)的幾類信息,但并不對(duì)這些信息進(jìn)行任何處理。MFC中的公用對(duì)話框類常用的有:l CFileDialog:文件對(duì)
28、話框類l CColorDialog:顏色對(duì)話框類l CFontDialog:字體對(duì)話框類l CFindReplaceDialog:查找替換對(duì)話框類l CPageSetupDialog:頁(yè)面設(shè)置對(duì)話框類l CPrintDialog:打印對(duì)話框類一般可以直接使用公用對(duì)話框類來(lái)創(chuàng)建對(duì)象,而不必另外派生類。每個(gè)公用對(duì)話框的工作方式各有不同,下面我們以文件和顏色對(duì)話框?yàn)槔齺?lái)說(shuō)明公用對(duì)話框的使用。為此,在Student項(xiàng)目的主菜單中,添加一個(gè)“公用對(duì)話框(&O)”菜單;并在其中添加兩個(gè)菜單項(xiàng):“打開(kāi)圖像文件(&F)tShift+F”(ID_DLG_FILE)和“設(shè)置顏色(&C)tS
29、hift+C”(ID_DLG_COLOR);還要添加對(duì)應(yīng)的快捷鍵和命令消息響應(yīng)函數(shù)。(1) 文件對(duì)話框文件對(duì)話框類CFileDialog的構(gòu)造函數(shù)為:explicit CFileDialog(BOOL bOpenFileDialog, / TRUE:打開(kāi)文件; FALSE:保存文件LPCTSTR lpszDefExt = NULL, / 缺省擴(kuò)展名LPCTSTR lpszFileName = NULL, / 初始文件名DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, / 標(biāo)志LPCTSTR lpszFilter = NULL, /
30、文件過(guò)濾器串的指針CWnd* pParentWnd = NULL / 父窗口指針 DWORD dwSize = 0 / OPENFILENAME結(jié)構(gòu)的大小,=0:由MFC根據(jù)操作系統(tǒng)的版本確定);常用的成員函數(shù)有:l 打開(kāi)模式對(duì)話框(返回IDOK或IDCANCEL):virtual INT_PTR DoModal( );l 獲取文件的路徑(如“C:Imageslena.bmp”):CString GetPathName( ) const;l 獲取文件的名稱(如“l(fā)ena.bmp”):CString GetFileName( ) const;l 獲取文件的擴(kuò)展名(如“bmp”):CString GetFileExt( ) const;l 獲取文件的標(biāo)題(如“l(fā)ena”):CString GetFileTitle( ) const;l
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 日軍投降協(xié)議書(shū)
- 車庫(kù)標(biāo)線銷售合同協(xié)議
- 公裝裝飾施工合同書(shū)
- 個(gè)人日用品進(jìn)銷存軟件合同
- 產(chǎn)品分銷代理協(xié)議修訂書(shū)
- 停車用地租賃協(xié)議書(shū)
- 建筑工程班組承包協(xié)議書(shū)
- 工程施工終止協(xié)議書(shū)
- 道路土地使用協(xié)議合同
- 農(nóng)村合作養(yǎng)殖場(chǎng)建設(shè)合同
- 2024年安徽黃山旅游集團(tuán)有限公司招聘筆試參考題庫(kù)含答案解析
- 小升初英語(yǔ)語(yǔ)法專項(xiàng)練習(xí)題 代詞
- 學(xué)習(xí)內(nèi)容通過(guò)活動(dòng)區(qū)游戲來(lái)實(shí)施指南
- 認(rèn)知語(yǔ)言學(xué)課件
- 《物理化學(xué)》期末考試試題及答案(上冊(cè))
- icu病房與icu病房建設(shè)標(biāo)準(zhǔn)
- 電氣設(shè)備預(yù)防性試驗(yàn)三措兩案
- 階梯型獨(dú)立基礎(chǔ)(承臺(tái))配筋率驗(yàn)算
- 2023年工會(huì)財(cái)務(wù)知識(shí)競(jìng)賽題庫(kù)及答案(完整版)
- 2023年4月全國(guó)自學(xué)考試00387幼兒園組織與管理試題及參考答案
- 心肌梗死的心電圖表現(xiàn)課件
評(píng)論
0/150
提交評(píng)論