版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第8章 對(duì)話框初步和公用對(duì)話框的使用,8.1對(duì)話框初步,對(duì)話框是對(duì)話框模板與對(duì)話框類(CDialog類)的連接 對(duì)話框模板(資源)的設(shè)計(jì) 1)選擇菜單命令“插入”→“資源”,在打開(kāi)的對(duì)話框中選擇“Dialog”,單擊“新建”按鈕,打開(kāi)對(duì)話框資源編輯器。 2)把控件欄中的相關(guān)控件拖放到對(duì)話框模板中,就完成了對(duì)話框模板的設(shè)計(jì)。,對(duì)話框模板的設(shè)計(jì),注:對(duì)話框模板帶有兩個(gè)缺省按鈕控件,一個(gè)是“OK”(確定),一個(gè)是“Cancel”
2、(取消),其ID分別為IDOK和IDCANCEL。,對(duì)話框模板與對(duì)話框類的連接 在頭文件中從CDialog類派生自己的對(duì)話框類CMyDialog,并在構(gòu)造器中與對(duì)話框模板連接:class CMyDialog:public CDialog{public:enum{IDD=IDD_DIALOG1};//通過(guò)枚舉,把所有的對(duì)話框ID命名為IDDCMyDialog(CWnd*p=NULL):CDialog(C
3、MyDialog::IDD,p){}//構(gòu)造器函數(shù)};,對(duì)話框的顯示 CMyDialog mydialog; mydialog.DoModal();//用DoModal()函數(shù)顯示對(duì)話框 。注:DoModal()函數(shù)負(fù)責(zé)對(duì)話框的顯示,這個(gè)函數(shù)有兩種可能的返回值,如果單擊對(duì)話框上的“確定”按鈕關(guān)閉對(duì)話框,DoModal()函數(shù)的返回值是IDOK;如果單擊“取消”按鈕關(guān)閉對(duì)話框,DoModal()函數(shù)的返回值是IDCANC
4、EL。,對(duì)話框的消息循環(huán)和按鈕控件的消息1)對(duì)話框類是從CWnd類派生的,因此具有消息循環(huán)和消息處理能力,它處理控件發(fā)給它的消息。2)單擊/雙擊按鈕控件發(fā)出WM_COMMAND消息,其消息映射是: ON_BN_CLICKED(按鈕控件的ID號(hào),處理函數(shù)Function) ON_BN_DOUBLECLICKED(按鈕控件的ID號(hào),處理函數(shù)Function),對(duì)按鈕控件消息映射的分析:,3)CDialog基類已經(jīng)為“確定”和
5、“取消”按鈕的單擊行為編寫(xiě)了處理函數(shù),其中“確定”按鈕的處理函數(shù)是OnOK(),“取消”按鈕的處理函數(shù)是OnCancel(),在應(yīng)用程序中這兩條消息連消息映射都不用寫(xiě)。可以嘗試把“確定”按鈕單擊的消息映射補(bǔ)上,如下處理:(1)加入消息映射BEGIN_MESSAGE_MAP(CMyDialog,CDialog)ON_BN_CLICKED(IDOK,OnOK)END_MESSAGE_MAP()(2)聲明CMyDialog類具有消
6、息處理能力,在CMyDialog類定義的末尾加上宏DECLARE_MESSAGE_MAP(),8.2 色彩對(duì)話框,Windows的公用對(duì)話框,色彩對(duì)話框的使用1)色彩對(duì)話框的顯示CColorDialog colordialog; //生成色彩對(duì)話框?qū)ο骳olordialog.DoModal(); //顯示色彩對(duì)話框,2)獲取選擇的顏色 當(dāng)在色彩對(duì)話框上選定顏色,并單擊“確定”按鈕關(guān)閉對(duì)話框后,所選定
7、的顏色將保存在CColorDialog類的數(shù)據(jù)成員m_cc中。m_cc是一個(gè)結(jié)構(gòu)體數(shù)據(jù)類型(CHOOSECOLOR)的變量,其數(shù)據(jù)成員COLORREF rgbResult保存在色彩對(duì)話框中選定的顏色。 一般利用CColorDialog的成員函數(shù)來(lái)獲取保存的顏色,這一函數(shù)是:COLORREF GetColor()。,8.3 字體對(duì)話框,字體對(duì)話框(CFontDialog)可以選擇字體的大小、顏色等。和色彩對(duì)話框類
8、似,字體對(duì)話框選擇的結(jié)果保存在一個(gè)CHOOSEFONT結(jié)構(gòu)體類型的變量m_cf 中,可以通過(guò)CFontDialog類的成員函數(shù)得到選擇的結(jié)果。,1)函數(shù)GetCurrentFont(LPLOGFONT lplf),參數(shù)lplf是指向邏輯字體結(jié)構(gòu)體LOGFONT的指針。 一般的用法是,先定義一個(gè)LOGFONT fnt結(jié)構(gòu)體變量,采用GetCurrentFont(&fnt)的方式為fnt賦值,這樣在字體對(duì)話
9、框中選擇的字體大小、字形等信息便存放到fnt中。2)函數(shù)COLORREF GetColor(),用法和CColorDialog中的GetColor()函數(shù)相同,用這一函數(shù)可以獲取在字體對(duì)話框中選擇的字體顏色信息。,8.4 文件對(duì)話框和CFile類,文件對(duì)話框(CFileDialog)只實(shí)現(xiàn)文件打開(kāi)和保存的界面,要真正進(jìn)行文件讀寫(xiě)還需要CFile類的支持。文件對(duì)話框通過(guò)構(gòu)造器參數(shù)(TRUE/FALSE)來(lái)確定是文件打開(kāi)對(duì)話框/文件保存
10、對(duì)話框。,CFileDialog構(gòu)造器分析: 1)CFileDialog類的構(gòu)造器原型是:CFileDialog(BOOL bOpenFileDialog, LPCTSTR lpszDefExt=NULL,LPCTSTR lpszFileName=NULL,DWORD dwFlags=OFN_HIDEREADONLY| OFN_OVERWRITEPROMPT,LPCTSTR lpszFilter=NULL, CWnd*pP
11、arentWnd=NULL)。2)BOOL bOpenFileDialog,當(dāng)賦值為TRUE時(shí),構(gòu)造的是文件打開(kāi)對(duì)話框,當(dāng)賦值為FALSE時(shí),構(gòu)造的是文件保存對(duì)話框。 3)LPCTSTR lpszFilter,它說(shuō)明文件的擴(kuò)展名,充當(dāng)文件的過(guò)濾器。當(dāng)打開(kāi)文件時(shí),列表框中只顯示被過(guò)濾器過(guò)濾過(guò)的文件,如下定義了一個(gè)文件過(guò)濾器。,CFileDialog的文件保存/打開(kāi)界面作用 用戶所做的文件選擇會(huì)保存在CFileDi
12、alog的數(shù)據(jù)成員m_ofn中,m_ofn是OPENFILENAME結(jié)構(gòu)體類型的變量。 用文件對(duì)話框類中的成員函數(shù)獲取選擇結(jié)果,如獲取全路徑函數(shù)CString GetPathName()。 可以這樣獲取文件的路徑:CString str=文件對(duì)話框類對(duì)象.GetPathName()。 獲取了文件完整路徑后,就可以用CFile類文件進(jìn)行讀寫(xiě)操作 。,CFile類實(shí)現(xiàn)
13、文件的讀寫(xiě)操作1)文件的打開(kāi)和關(guān)閉:CFile類用Open()函數(shù)打開(kāi)要操作的文件,用Close()函數(shù)關(guān)閉要操作的文件。 BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlags, CFileException*pError=NULL)。 函數(shù)中第一個(gè)參數(shù)lpszFileName是要打開(kāi)的文件名;nOpenFlags是打開(kāi)文件的訪問(wèn)方式,常見(jiàn)的有:CFile::modeCre
14、ate(創(chuàng)建一個(gè)新文件) CFile::modeRead(打開(kāi)文件,只讀) CFile::modeWrite(打開(kāi)文件,只寫(xiě))CFile::modeReadWrite(打開(kāi)文件,文件可讀寫(xiě));CFileException*pError是文件異常類的指針,采用缺省值即可。,2)文件的讀寫(xiě)操作 對(duì)文件進(jìn)行讀寫(xiě)操作的核心函數(shù)是Read()函數(shù)和Write()函數(shù)。 對(duì)
15、文件進(jìn)行寫(xiě)操作的函數(shù)是:void Write(const void*lpBuf, UINT nCount),參數(shù)lpBuf是要寫(xiě)入文件的數(shù)據(jù)所存放的地址,nCount是一次寫(xiě)入的字節(jié)數(shù)。 對(duì)文件進(jìn)行讀操作的函數(shù)是:UINT Read(void*lpBuf, UINT nCount),函數(shù)返回值是讀入數(shù)據(jù)的字節(jié)數(shù),參數(shù)lpBuf是從文件讀入的數(shù)據(jù)要存放的地址,nCount是讀入數(shù)據(jù)的字節(jié)數(shù)。,3)文件的定位操
16、作 文件的定位操作中最常用的函數(shù)是Seek()函數(shù),該函數(shù)的原型是:LONG Seek(LONG lOff, UINT nFrom)。參數(shù)lOff表示文件移動(dòng)的字節(jié)數(shù),nFrom表示從何處開(kāi)始移動(dòng),其中nFrom有下面的幾種取值: CFile::begin表示把文件定位指針從文件頭向前移動(dòng)lOff個(gè)字節(jié)(指向文件末尾的方向?yàn)橄蚯埃?CFile::end表示把文件
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 對(duì)話框及其控件的使用
- vcmfc對(duì)話框和常用教程
- mfc對(duì)話框打印預(yù)覽實(shí)現(xiàn)
- vcmfc對(duì)話框和常用教程
- 第01課使用creo parametric窗口和對(duì)話框
- mfc 設(shè)置對(duì)話框背景圖片
- vb編程之對(duì)話框設(shè)計(jì)1
- orcadcapture對(duì)話框中英對(duì)照表
- vba中的對(duì)話框和自定義窗體
- orcadlayout對(duì)話框中英對(duì)照表
- 對(duì)話框程序界面設(shè)計(jì)--計(jì)算器
- mfc課程設(shè)計(jì)-調(diào)整對(duì)話框背景顏色
- 修改對(duì)話框?yàn)閎cg工程、手動(dòng)添加控件
- 創(chuàng)建和使用對(duì)話框框
- java課程設(shè)計(jì)報(bào)告--利用java設(shè)計(jì)簡(jiǎn)單聊天對(duì)話框
- 用vc++6.0為對(duì)話框添加最小化按鈕和提示條
- mfc中設(shè)置對(duì)話框顏色、添加背景圖片、添加音樂(lè)的方法
- 基于linuxqt4下自定義對(duì)話框的設(shè)計(jì)與實(shí)現(xiàn)
- 陜西省銀行招聘計(jì)算機(jī)學(xué)知識(shí)點(diǎn) 窗口、菜單、對(duì)話框的組成及操作試題
- 職稱計(jì)算機(jī)考試xp利用顯示屬性對(duì)話框,設(shè)置桌面上顯示我的電腦和我的文檔圖標(biāo)
評(píng)論
0/150
提交評(píng)論