欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Visual C .NET編程講座之五
第4講 對話(huà)框的界面世界

 


  摘要


  本講先來(lái)討論對話(huà)框界面設計的一般過(guò)程和技巧,然后創(chuàng )建對話(huà)框類(lèi)并用模式和無(wú)模式的方式來(lái)顯示對話(huà)框。


  對話(huà)框的界面設計過(guò)程


  對話(huà)框是Windows應用程序中最重要的用戶(hù)界面元素之一,它是通過(guò)對話(huà)框上的各種控件來(lái)和用戶(hù)進(jìn)行交互的。所謂"控件",是指具有一定功能的界面單元,如按鈕、編輯框、列表框、組合框等。在這里,我們先來(lái)討論對話(huà)框的界面設計過(guò)程。


  1. 添加對話(huà)框資源


  (1) 啟動(dòng)Visual Studio .net,打開(kāi)上一講的單文檔應用程序項目Viewer。


  (2) 打開(kāi)"項目"菜單,單擊"添加資源",彈出"添加資源"對話(huà)框,如圖1所示。



圖1 "添加資源"對話(huà)框

 


  (3) 在該對話(huà)框中,"導入"按鈕是從外部導入一個(gè)已有的資源,"自定義"是用來(lái)創(chuàng )建一個(gè)新的資源類(lèi)型。在"資源類(lèi)型"中選定"Dialog",然后單擊"新建"按鈕。這時(shí)"添加資源"對話(huà)框消失,回到Visual C++ .NET開(kāi)發(fā)環(huán)境??梢钥吹?,系統為對話(huà)框資源自動(dòng)賦給它一個(gè)默認的標識名稱(chēng)IDD_DIALOG1,且有兩個(gè)按鈕:"確定"和"取消",在左側對話(huà)框編輯器窗口中,還會(huì )自動(dòng)彈出工具箱窗口。


  (4) 單擊工具箱窗口上的"

",使工具箱窗口??吭陂_(kāi)發(fā)環(huán)境的左側,不再會(huì )自動(dòng)隱藏。

 


  (5) 在對話(huà)框的空白處,單擊鼠標,將會(huì )在屬性窗口中顯示出對話(huà)框資源的屬性。圖2所示的僅是展開(kāi)"字體"屬性的情形,可以看出:對話(huà)框屬性有"外觀(guān)"、"位置"、"行為"、"雜項"和"字體"。其中,對話(huà)框Caption(標題)屬性在"外觀(guān)"中,ID屬性在"雜項"中,如圖2所示。



圖2 對話(huà)框資源的屬性

 


  (6) 保留默認的對話(huà)框資源ID號,在屬性窗口中,將該對話(huà)框的標題內容改為"設置"。
2. 在對話(huà)框加添加和布置控件


  在對話(huà)框中添加控件的方法有很多,這里我們推薦這樣的方法:在"工具箱"窗口中,單擊要添加的控件并按住鼠標不放,然后移動(dòng)到對話(huà)框中,此時(shí)鼠標指針帶有一個(gè)"+",在需要添加的位置處松開(kāi)鼠標,這樣就添加了該控件。一旦控件添加后,我們可以使用下列一些方法來(lái)布置控件。


  第一個(gè)方法是使用網(wǎng)格和參照線(xiàn)。默認時(shí)對話(huà)框顯示的是參照線(xiàn),如圖3所示,控件的位置一般不能超過(guò)參照線(xiàn)的范圍,但我們可以通過(guò)對話(huà)框四周的尺寸柄來(lái)調整對話(huà)框的尺寸,同時(shí)參照線(xiàn)也會(huì )自動(dòng)調整。單擊對話(huà)框編輯器工具欄上的"網(wǎng)絡(luò )"按鈕

,就會(huì )打開(kāi)網(wǎng)絡(luò ),一旦網(wǎng)格顯示,添加或移動(dòng)控件時(shí)都將自動(dòng)定位在網(wǎng)格線(xiàn)上。

 



圖3 對話(huà)框資源編輯器

 


  第二個(gè)方法是使用對話(huà)框編輯器工具欄。對話(huà)框編輯器工具欄上包含用于對話(huà)框控件布局的工具按鈕,如圖4所示,它與"格式"菜單下的菜單項命令相對應。



圖4 對話(huà)框編輯器工具欄

 


  需要說(shuō)明的是,


 ?、?在使用布局命令之前,首先要選取要布局的控件,一般有好幾個(gè),稱(chēng)為控件組,這時(shí)只有一個(gè)控件周?chē)袑?shí)心小方塊(一般有八個(gè)),這個(gè)控件稱(chēng)為"主導控件",布局操作都是以這個(gè)"主導控件"為參照的。


 ?、?選取多個(gè)控件的方法有兩個(gè)。一是框選,即:拖動(dòng)鼠標指針,在對話(huà)框中要選擇的控件周?chē)?huà)一個(gè)選框。當釋放鼠標按鈕后,選框內和與該框相交的所有控件都被選定。二是單選,即先按住Ctrl或Shift鍵,然后單擊要選擇的控件。若按住的鍵是Shift,則再次單擊已選定的控件,那么該控件被取消選定。


 ?、?當按住Ctrl鍵后,再單擊控件,則該控件就是"主導控件"。


  3. 為對話(huà)框創(chuàng )建一個(gè)類(lèi)


  要想顯示和控制對話(huà)框,必須先為其創(chuàng )建一個(gè)對話(huà)框類(lèi),如下面的過(guò)程:


  (1) 在對話(huà)框編輯器中,雙擊對話(huà)框的空白處,或右擊對話(huà)框,彈出快捷菜單,單擊"添加類(lèi)",彈出"MFC類(lèi)向導"對話(huà)框。


  (2) 在"類(lèi)名"框中,鍵入創(chuàng )建的類(lèi)名CSetDlg,注意我們一般將大寫(xiě)字母C作為類(lèi)名的第一個(gè)字符,以與其它標識符相區別。


  (3) 從"基類(lèi)"組合框中選擇"CDialog"(MFC對話(huà)框類(lèi)),結果如圖5所示。其中,".h文件"和".cpp文件"用來(lái)指定新類(lèi)的頭文件和實(shí)現文件。單擊

按鈕,可以從彈出的對話(huà)框中指定一個(gè)已有的文件或其他文件位置,一般不更改默認的代碼文件名稱(chēng)。

 



圖5 添加類(lèi)

 


  (4) 單擊"完成"按鈕,新的對話(huà)框類(lèi)CSetDlg就創(chuàng )建好了。
模式和無(wú)模式對話(huà)框的顯示


  對話(huà)框有兩種類(lèi)型,一種是模式對話(huà)框,另一種是無(wú)模式對話(huà)框。所謂"模式對話(huà)框"是指當對話(huà)框顯示后,用戶(hù)必須在對話(huà)框中作出相應的操作,在退出對話(huà)框之前,對話(huà)框所在的應用程序不能執行其他操作。所謂"無(wú)模式對話(huà)框"是指當對話(huà)框被彈出后,一直保留在屏幕上,用戶(hù)可繼續在應用程序中進(jìn)行其它操作。


  1. 模式對話(huà)框的顯示


  一般情況下,我們看見(jiàn)的對話(huà)框多數是模式對話(huà)框。下面將前面的對話(huà)框以"模式"方式來(lái)顯示。


  (1) 將解決方案資源管理器窗口切換到"資源視圖",雙擊Menu下的IDR_MAINFRAME,打開(kāi)Viewer中的菜單資源。


  (2) 在"格式"菜單中添加一個(gè)菜單項"背景設置(&B)…",其ID設為ID_FOMAT_SET。


  (3) 由于該對話(huà)框用來(lái)設置視圖的背景色,因此我們需將菜單項ID_FOMAT_SET的COMMAND事件映射添加在CViewerView類(lèi)中,并在映射函數CViewerView::OnFormatSet中添加顯示對話(huà)框代碼,如圖6所示。



圖6 在OnFormatSet中添加的代碼

 


  程序說(shuō)明:


 ?、?程序中, DoModal()是CDialog的成員函數,用來(lái)負責模式對話(huà)框的顯示和終止。


 ?、?當對話(huà)框顯示后,只有當用戶(hù)單擊"確定"按鈕后,系統才認定用戶(hù)在對話(huà)框中的選擇或輸入有效,函數DoModal返回IDOK,否則DoModal返回IDCANCEL,對話(huà)框中的選擇或輸入無(wú)效。


 ?、?MessageBox是一個(gè)MFC窗口類(lèi)CWnd的一個(gè)成員函數,用來(lái)顯示一個(gè)"消息對話(huà)框",顯示指定的內容。


  (4) 在類(lèi)CViewerView接口文件ViewerView.h的前面添加CSetDlg類(lèi)的包含頭文件,如圖7所示的加框部分。



圖7 添加類(lèi)CSetDlg類(lèi)的包含頭文件

 


  (5) 運行程序,打開(kāi)"格式"菜單,單擊"背景設置",結果如圖7所示。由于我們還沒(méi)有向對話(huà)框添加控件,因此顯示的是一個(gè)默認的對話(huà)框。單擊"確定"按鈕后,還將彈出一個(gè)消息對話(huà)框,這就是上述代碼的作用。



圖8 模式對話(huà)框的顯示結果
2. 無(wú)模式對話(huà)框的顯示


  無(wú)模式對話(huà)框與模式對話(huà)框的區別主要體現在:


 ?、?模式對話(huà)框是由系統自動(dòng)分配內存空間,在對話(huà)框退出時(shí),對話(huà)框對象自動(dòng)刪除。而無(wú)模式對話(huà)框則需要用戶(hù)來(lái)指定內存,退出時(shí)還需自己來(lái)刪除對話(huà)框對象。


 ?、?在退出時(shí),無(wú)模式對話(huà)框與模式對話(huà)框所使用的終止函數是不一樣的。模式對話(huà)框通過(guò)調用CDialog:: EndDialog來(lái)終止,而無(wú)模式對話(huà)框則是調用CWnd::DestroyWindow來(lái)終止的。


  由于用戶(hù)單擊"確定"或"取消"按鈕時(shí),無(wú)論是模式還是無(wú)模式,對話(huà)框都將終止。因此對于無(wú)模式對話(huà)框來(lái)說(shuō),我們須在CDiaolog::OnOK()和CDiaolog::OnCancel()的函數重載中調用DestroyWindow()來(lái)退出對話(huà)框窗口,并且由于當用戶(hù)單擊"確定"時(shí),對話(huà)框的輸入數據有效,因此我們還需要在對話(huà)框退出之前調用CWnd::UpdateData來(lái)使輸入有效(后面還要討論)。下面就來(lái)操作。


  (1) 將解決方案資源管理器窗口切換到"類(lèi)視圖",單擊CSetDlg,然后在其屬性窗口中單擊"重寫(xiě)"按鈕,這樣屬性窗口中就會(huì )列出了所有可重載的函數。


  (2) 打開(kāi)OnOK和OnCancel函數,添加它們的重載。圖9是在其屬性窗口中添加OnOK重載時(shí)的情形。



圖9 添加OnOK函數的重載

 


  (3) 在OnOK和OnCancel函數中添加代碼,如圖10所示。



圖10 在函數添加的代碼

 


  (4) 在CViewerView類(lèi)中添加一個(gè)成員指針變量m_pSetDlg,變量類(lèi)型為CSetDlg*。


  (5) 在CViewerView類(lèi)的析構函數中添加對該對話(huà)框指針的刪除代碼,如圖11所示。

 


圖11 在析構函數中添加刪除代碼


  (6) 修改CViewerView::OnFormatSet代碼,結果如圖12所示。



圖12 OnFormatSet修改后的代碼

 


  (7) 運行程序,結果和模式對話(huà)框一樣。問(wèn)題是,如何獲取無(wú)模式對話(huà)框中用戶(hù)輸入的數據呢?我們在下一講中將加以討論。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
對話(huà)框字體與對話(huà)框控件的像素尺寸
pic
屬性頁(yè)
vc++6.0使用串口控件例程
Excel在學(xué)校中的應用32-月考成績(jì)對比圖——交互式圖表(三)
Web報表工具FineReport內置JS的使用集錦
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久