




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、版權(quán)所有版權(quán)所有 復制必究復制必究 對話框?qū)υ捒蚴荳indows應(yīng)用程序中一種常用的資源,其主要功能是輸出信息和接收用戶的輸入數(shù)據(jù)。控件控件是嵌入在對話框中或其它父窗口中的一個特殊的小窗口,它用于完成不同的輸入、輸出功能。 對話框與控件關(guān)系密切,在每個對話框上一般都有一些控件,對話框依靠這些控件與用戶進行信息的交互。本章主要介紹對話框的工作原理和編程方法,并通過實例學習一些標準控件和公共控件的使用方法。l就用戶交互輸入功能而言,菜單和工具欄的功能是極其有限的。而對話框除了用來顯示提示信息(如程序啟動時顯示版權(quán)和運行進度信息),一個主要功能是用于接收用戶的輸入數(shù)據(jù)。l在MFC中,對話框的功能被封
2、裝在CDialog類中,而CDialog類是CWnd類的派生類。作為窗口,對話框和其它窗口一樣具有窗口的一切功能。l對話框的一個典型應(yīng)用是通過菜單命令或工具欄按鈕打開一個對話框,當然,對話框也可以作為一個程序的主界面。l可以直接利用MFC AppWizard向?qū)?chuàng)建一個基于對話框的應(yīng)用程序,這種程序運行后首先出現(xiàn)一個對話框。在向?qū)У牡谝徊竭x擇Dialog Based項。此時,應(yīng)用程序向?qū)⒊霈F(xiàn)與單文檔和多文檔程序向?qū)Р煌牟僮鞑襟E,因為對話框應(yīng)用程序一般不包含文檔,故不支持數(shù)據(jù)庫和復合文檔。l按照對話框應(yīng)用程序向?qū)崾镜牟襟E進行操作就得到一個對話框應(yīng)用程序項目,出現(xiàn)對話框編輯器和控件工具欄浮動
3、窗口,它們采用的是一種所見即所得的可視化工作方式。利用向?qū)?chuàng)建應(yīng)用程序的框架后,程序員可根據(jù)程序具體功能要求添加代碼。1執(zhí)行File|New命令出現(xiàn)New對話框,選擇MFC AppWizardexe項,輸入程序名MyDialog,單擊OK按鈕。在隨后出現(xiàn)的MFC AppWizard-Step 1對話框窗口中選擇Dialog Based選項,單擊Finish按鈕就創(chuàng)建了應(yīng)用程序項目,并在Developer Studio中打開了對話框編輯器和控件工具欄。2去掉對話框中標題為“TODO: 在這里設(shè)置對話控制”的靜態(tài)文本控件,調(diào)整對話框大小,在成員函數(shù)CMyDialogDlg:OnPaint()中添加
4、代碼。 void CMyDialogDlg:OnPaint() . . . . . . else CPaintDC dc(this); dc.SetBkMode(TRANSPARENT); dc.TextOut(20, 50, 這是一個對話框應(yīng)用程序!); CDialog:OnPaint(); MFC提供了一系列對話框類,并實現(xiàn)了對話框消息響應(yīng)和處理機制。CDialog類是對話框類中最重要的類,我們在程序中創(chuàng)建的對話框類一般都是CDialog類的派生類。CDialog類還是其它所有對話框類的基類,其派生關(guān)系如下所示:CObject CCmdTarget CWnd CDialog 對話框類為程序
5、員提供了管理對話框的編程接口。 CDialog類從CWnd類派生而來,所以它繼承了CWnd類的成員函數(shù),具有CWnd類的基本功能,可以編寫代碼移動、顯示或隱藏對話框,并能根據(jù)對話框的特點增加新的成員函數(shù),擴展它的功能。在你的CDialog類的派生類中可以直接調(diào)用CDialog類的成員函數(shù)。大部分的成員函數(shù)是虛函數(shù),可以在你的派生類中重載,以實現(xiàn)特定的目的。除了CDialog類成員函數(shù),類CWnd和CWinApp也提供了一些成員函數(shù)用于對話框的管理。有關(guān)對話框的常用處理函數(shù)有關(guān)對話框的常用處理函數(shù)CDialog:CDialog() 通過調(diào)用派生類構(gòu)造函數(shù),根據(jù)對話框資源模板定義一個對話框。CDi
6、alog:DoModal() 激活模態(tài)對話框模態(tài)對話框,顯示對話框窗口。CDialog:Create() 根據(jù)對話框資源模板創(chuàng)建非模態(tài)對話框非模態(tài)對話框窗口。如果對話框不是Visible屬性,還需通過調(diào)用CWnd:ShowWindow()函數(shù)顯示非模態(tài)對話框窗口。CDialog:OnOk() 單擊OK按鈕時調(diào)用該函數(shù),接收對話框輸入數(shù)據(jù),關(guān)閉對話框。CDialog:OnCancel() 單擊Cancel按鈕或按Esc鍵時調(diào)用該函數(shù),不接收對話框輸入數(shù)據(jù),關(guān)閉對話框。CDialog:OnInitDialog() WM_INITDIALOG消息處理函數(shù),在調(diào)用DoModal或Create函數(shù)時系統(tǒng)
7、發(fā)送WM_INITDIALOG消息,在顯示對話框前調(diào)用該函數(shù)進行初始化。CDialog:EndDialog() 用于關(guān)閉模態(tài)對話框窗口。CWnd:ShowWindow() 顯示或隱藏對話框窗口CWnd:DestroyWindow() 關(guān)閉并銷毀非模態(tài)對話框CWnd:UpdateData() 通過調(diào)用DoDataExchange()設(shè)置或獲取對話框控件的數(shù)據(jù)CWnd:DoDataExchange() 被UpdateData()調(diào)用以實現(xiàn)對話框數(shù)據(jù)交換,不能直接調(diào)用。CWnd:GetWindowText() 獲取對話框窗口的標題CWnd:SetWindowText() 修改對話框窗口的標題CWnd
8、:GetDlgItemText() 獲取對話框中控件的文本內(nèi)容CWnd:SetDlgItemText() 設(shè)置對話框中控件的文本內(nèi)容CWnd:GetDlgItem() 獲取控件或子窗口的指針CWnd:MoveWindow() 用于移動對話框窗口CWnd:EnableWindow() 使窗口處于禁用或可用狀態(tài)l在對話框中實現(xiàn)用戶數(shù)據(jù)輸入和輸出的一般方法是通過ClassWizard類向?qū)υ捒蚩丶c成員變量相關(guān)聯(lián),利用對話框數(shù)據(jù)交換DDX(Dialog Data Exchange)和驗證DDV(Dialog Data Validation)機制實現(xiàn)數(shù)據(jù)的輸入和輸出。l當利用ClassWizard
9、類向?qū)砑映蓡T變量時,用戶如果在窗口的左下角輸入數(shù)據(jù)的范圍,ClassWizard將自動加入函數(shù)DDV的調(diào)用代碼。 例如,當添加一個UINT型的成員變量m_nInput時指定它的最小值和最大值分別為0和100,則ClassWizard類向?qū)⒃诔蓡T函數(shù)DoDataExchange()中添加以下DDV函數(shù)的調(diào)用語句:DDV_MinMaxUInt(pDX, m_nInput, 0, 100); 程序運行后,如果用戶的輸入數(shù)據(jù)超出0100的范圍,DDV將顯示一個提示信息對話框(例7-2c),提示用戶有效的輸入范圍。 當調(diào)用UpdateData(TRUE)時,MFC通過調(diào)用DDX函數(shù)將數(shù)據(jù)從控件傳遞到
10、關(guān)聯(lián)的成員變量;當調(diào)用UpdateData(FALSE)時,MFC通過調(diào)用DDX函數(shù)將數(shù)據(jù)從成員變量傳遞到關(guān)聯(lián)的的控件。利用UpdateData()函數(shù)實現(xiàn)了在刷新后重新獲取成員變量。注意:注意: 表面上看程序并沒有調(diào)用UpdateData(),但是,當程序調(diào)用CDialog:DoModal()創(chuàng)建并顯示對話框時,將自動調(diào)用CDialog:OnInitDialog()完成初始化的工作。在OnInitDialog()中調(diào)用了UpdateData(FALSE),將數(shù)據(jù)從成員變量傳遞到關(guān)聯(lián)的控件,從而顯示在控件中。而單擊OK按鈕將調(diào)用CDialog:OnOk()函數(shù),在OnOK()中調(diào)用了Updat
11、eData(TRUE),將數(shù)據(jù)從控件傳遞到關(guān)聯(lián)的成員變量。 由此看來,不管MFC將DDX技術(shù)如何復雜化,我們只需知道,DDX就如同一條雙向通道,而方向控制開關(guān)就是UpdateData()函數(shù)中的BOOL類型參數(shù)是TRUE還是FALSE。 提示信息對話框也稱消息對話框,用來顯示有關(guān)的提示信息。提示信息對話框是一種最簡單的對話框,不需要用戶自己創(chuàng)建它就可以直接使用,Visual C+提供了相應(yīng)的函數(shù)實現(xiàn)這樣的功能。: int AfxMessageBox(LPCTSTR lpText, UINT nType=MB_OK, UINT nlDHelp=0); int MessageBox(HWND hW
12、nd, LPCTSTR lpText,LPCTSTR lpCaption, UINT nType); int CWnd:MessageBox(LPCTSTR lpText, LPCTSTR lpCaption=NULL, UINT nType=MB_OK); 這三個函數(shù)分別是MFC全局函數(shù)、API函數(shù)和CWnd類的成員函數(shù),它們的功能基本相同,但適用范圍有所不同。AfxMessageBox()和:MessageBox()可以在程序中任何地方使用,而CWnd:MessageBox()只能用于控件、對話框、窗口等一些窗口類中。 例如,在軟件安裝過程中為了彈出如下圖所示的警告提示信息對話框并進行相應(yīng)
13、的處理:編寫的代碼如下: int nChoice=MessageBox(文件復制失??!, 錯誤, MB_ICONWARNING | MB_ABORTRETRYIGNORE ); switch(nChoice) case IDABORT: / 用戶按下終止按鈕. . . . . . caseIDRETRY: / 用戶按下重試按鈕. . . . . . case IDIGNORE: / 用戶按下忽略按鈕. . . . . . 為了在屏幕上顯示對話框: (1)首先需要建立對話框資源及其與資源相關(guān)的對話框類; (2)然后添加控件、與控件關(guān)聯(lián)的成員變量和消息處理函數(shù); (3)最后在程序中顯示對話框并訪問
14、與控件關(guān)聯(lián)的成員變量。 在Visual C+中可以利用集成工具如對話框編輯器和ClassWizard類向?qū)Ш芊奖愕貏?chuàng)建對話框,不需要程序員手工編寫太多的源代碼。l當定義了一個對話框類后,就可以利用這個對話框類聲明一個對話框?qū)ο?,即一個能夠在屏幕上顯示的對話框。 l聲明了一個對話框?qū)ο蠛?,可以調(diào)用對話框類的成員函數(shù)DoModal()建立對話框窗口并顯示對話框。例如,假設(shè)定義了一個名為CMyDialog的對話框類,為了在屏幕上顯示一個對話框,可以編寫如下代碼: CMyDialog myDlg; myDlg.DoModal();函數(shù)函數(shù)OnOK()、 OnCancel()與與DoModal()的關(guān)系
15、:的關(guān)系: 對話框中一般都有OK和Cancel按鈕,單擊OK按鈕時調(diào)用CDialog:OnOK()函數(shù),單擊Cancel按鈕時調(diào)用CDialog:OnCancel()函數(shù)。OnOK()函數(shù)和OnCancal()函數(shù)都將結(jié)束DoModal()函數(shù)調(diào)用,但令DoModal()返回不同的值。OnOK()函數(shù)令DoModal()返回IDOK,OnCancel()函數(shù)令DoModal()返回IDCANCAL。用戶可以根據(jù)DoModal()的返回值做出不同的選擇。如: if (myDlg.DoModal() = = IDOK ) 對話框的初始化對話框的初始化可以在三個不同的階段所調(diào)用的函數(shù)中進行: (1)
16、對話框類構(gòu)造函數(shù); (2)WM_CREATE消息處理函數(shù); (3)WM_INITDIALOG消息處理函數(shù)。 通常是在消息WM_INITDIALOG的消息處理函數(shù)OnInitDialog()中進行初始化。在收到WM_INIT- DIALOG消息時,對話框的框架已創(chuàng)建,對話框中的每個控件也已建立起來,但它們還沒有在屏幕上顯示。此時自然可以設(shè)置或優(yōu)化對話框中各個控件的外觀、尺寸、位置以及其它屬性。函數(shù)OnInitDialog()將被成員函數(shù)DoModal()調(diào)用。 在Windows中對話框是作為一種資源被使用,在程序中要創(chuàng)建一個對話框,首先要創(chuàng)建一個對話框模板資源,然后創(chuàng)建一個基于該對話框模板資源的
17、對話框類。對話框模板資源指定了對話框本身的屬性(如大小、位置、風格、類型等)和對話框中的控件及屬性,而對話框類規(guī)定了對話框和對話框中每個控件的行為。通過對話框模板資源才能創(chuàng)建對話框類和對象。 為了向應(yīng)用程序項目中添加一個對話框資源,執(zhí)行Insert| |Resource命令或直接按Ctrl+R鍵,彈出Insert Resource資源列表框。一般要加入通用對話框資源,所以在Insert Resource框中直接選擇Dialog項,然后單擊New按鈕。系統(tǒng)將給對話框資源設(shè)置一個默認的ID標識,對話框的默認標題Caption為Dialog,對話框有OK和Cancel兩個按鈕。添加對話框資源的簡單方
18、法:添加對話框資源的簡單方法: 在項目工作區(qū)鼠標右擊資源項Dialog,從彈出式菜單中選擇“Insert Dialog”命令項。 對話框是在對話框模板資源和對話框類的基礎(chǔ)上形成的,在完成了對話框的屬性和外觀設(shè)計后,再來設(shè)計對話框的行為。我們需要利用ClassWizard類向?qū)?chuàng)建一個對話框類,并將這個類同先前創(chuàng)建的對話框資源連接起來。在創(chuàng)建對話框類之前或之后,都可以為對話框資源添加控件控件。而在創(chuàng)建對話框類之后,還可以為對話框資源添加與對話框控件相關(guān)聯(lián)的成員變量成員變量和消息消息處理函數(shù)處理函數(shù)。 如果按Ctrl+W鍵或在對話框資源的非控件區(qū)域雙擊鼠標,ClassWizard類向?qū)l(fā)現(xiàn)已添加
19、了一個對話框模板資源,卻沒有設(shè)計其對應(yīng)的類,因此將彈出Adding a Class對話框,詢問用戶是否需要利用該對話框資源創(chuàng)建一個對話框類。lName框:用于輸入對話框類的名稱;lFile Name框:列出類的文件名,單擊Change按鈕可改變文件名;lBase class下拉框:列出可選擇的基類;lDialog ID下拉框:列出可選擇對話框資源的ID。 例例 假設(shè)已利用MFC AppWizard應(yīng)用程序向?qū)Ы⒘艘粋€名為Mysdi的單文檔應(yīng)用程序,請向應(yīng)用程序中添加對話框資源和對話框類。1首先向應(yīng)用程序項目添加一個對話框資源,在項目工作區(qū)鼠標右擊資源項Dialog,從彈出式菜單中執(zhí)行Inse
20、rt Dialog命令,插入一個對話框資源。2設(shè)置對話框的屬性,將光標指向?qū)υ捒虻目瞻孜恢?,單擊鼠標右鍵,從彈出式菜單中選擇Properties項,或直接按Enter鍵,彈出Dialog Properties屬性對話框。該對話框包括General、Styles、More Styles、Extended Styles、More Extended Styles等頁面,用于設(shè)置對話框多種不同的屬性。3創(chuàng)建對話框類,鼠標雙擊對話框資源的非控件區(qū)域。l如果沒有控件控件,對話框完成不了什么具體功能,對話框與控件有著密不可分的關(guān)系。結(jié)合對話框編輯器,利用Controls控件工具欄可給當前正在編輯的對話框模板
21、資源添加控件。l若Visual C+窗口中沒有出現(xiàn)Controls工具欄,只需將光標指向菜單欄并單擊鼠標右鍵,從彈出式菜單中選擇Controls項。l控件工具欄上的每一個圖標都代表了一種控件,如果不能確定控件的類型,只要將光標在該控件圖標上停留片刻,就會顯示該控件類型的提示。 向?qū)υ捒蛱砑涌丶r,先在Controls工具欄單擊要添加的控件,再將光標指向?qū)υ捒蚩瞻讌^(qū)域并單擊鼠標。 在生成自己的對話框類并添加需要的控件后,可以利用ClassWizard類向?qū)г趯υ捒蝾惖亩x中為對話框資源上的每一個控件添加一個或多個對應(yīng)的成員變量。ClassWizard類向?qū)У腗ember Variables頁面主
22、要用來為對話框類添加和刪除與對話框控件關(guān)聯(lián)的成員變量,我們在編寫對話框程序時經(jīng)常同該頁面打交道。lClass name下拉框:選擇要添加成員變量的對話 框類;lControl IDs欄:選擇控件,因為要添加的成員變量總是與一個對話框控件ID聯(lián)系在一起,它們代表控件對象本身或控件的某項屬性;lAdd Variable按鈕:添加與控件關(guān)聯(lián)的成員變量;lDelete Variable按鈕:刪除控件的某個成員變量。lControl IDs欄:列出對話框資源上已有的控件,第1列Control IDs表示控件的ID,第2列Type表示變量的類型,第3列Member表示成員變量名。lMember varia
23、ble name框:輸入成員變量名;lCategory下拉框:選擇成員變量的類別,可為Control或 Value;lVariable type下拉框:選擇成員變量的類型。l如果在Category下拉框選擇Value項,表示要為該控件的某項屬性定義一個變量,這意味著程序關(guān)心的是控件中的值,而不是控件對象本身。這時,還可以通過Variable type下拉框為變量選擇不同的類型,可以選擇一般的C+數(shù)據(jù)類型或Visual C+自定義的數(shù)據(jù)類型。l例如,對于編輯框控件,此時成員變量的類型可以是int、float、long、BOOL等C+一般數(shù)據(jù)類型或者是UINT、CString等Visual C+自
24、定義數(shù)據(jù)類型。l如果在Category下拉框中選擇Control項,則表示定義的變量代表控件對象本身, Control類別的變量實質(zhì)是一個控件對象,其類型是MFC控件類。l例如,對于編輯框控件,此時成員變量的類型為CEdit。因此,可以通過添加的控件對象訪問控件類的成員變量和調(diào)用控件類的成員函數(shù),實現(xiàn)對控件行為的控制和管理。l可以為一個控件同時定義一個Control類別的變量和一個Value類別的變量。這些變量都是作為對話框派生類的成員變量,為了在程序其它地方能夠直接訪問添加的成員變量,它們都被聲明為public屬性。例例 完善Mysdi程序,向?qū)υ捒蛸Y源添加需要使用的控件,并添加與控件關(guān)聯(lián)的
25、成員變量。1向?qū)υ捒蛸Y源添加控件。添加一個靜態(tài)文本控件,其Caption為“請輸入半徑”。添加一個Edit Box編輯框控件,其ID標識為IDC_EDIT_ RADIUS,該控件用于接收用戶的輸入數(shù)據(jù)。2 添 加 與 控 件 關(guān) 聯(lián) 的 成 員 變 量 。 按 C t r l + W 鍵 啟 動ClassWizard類向?qū)В瑔螕鬗ember Variables標簽。在Class name下拉框選擇類CRadiusDialog,在Control IDs欄選擇編輯框IDC_EDIT_RADIUS,單擊Add Variable按鈕。通過Add Member Variable對話框添加成員變量m_nR
26、adius,其數(shù)據(jù)類型為UINT。3使用對話框數(shù)據(jù)驗證DDV功能,在該頁面的左下角輸入成員變量m_nRadius的最小值5和最大值250。 例例 完善Mysdi程序,通過“編輯”菜單中的“輸入半徑(I)”命令打開上述標題為“輸入半徑”的對話框,并根據(jù)輸入的半徑畫一個圓。1為了在視圖對象中接收并存儲對話框編輯控件的值,在視圖類CMysdiView中手工定義一個UINT類型的成員變量m_nCViewRadius。2利用菜單編輯器在“編輯”菜單增加一個菜單項“輸入半徑(I)”,其ID標識為ID_EDIT_INPUTRADIUS,Caption為“輸入半徑(&I).”。按Ctrl+W鍵啟動Cl
27、assWzard類向?qū)В谝晥D類中為ID_EDIT_INPUTRADIUS菜單項添加消息COMMAND的處理函數(shù),在函數(shù)中添加代碼。 void CMysdiView:OnEditInputradius() / TODO: Add your command handler code here CRadiusDialog dlg; / 定義一個對話框?qū)ο?dlg.m_nRadius=100;/ 設(shè)置編輯框顯示的初始值 if (dlg.DoModal()=IDOK) / 顯示對話框 m_nCViewRadius=dlg.m_nRadius; / 接收并存儲編輯框數(shù)據(jù) Invalidate(); /
28、刷新視圖 3在視圖類構(gòu)造函數(shù)CMysdiView:CMysdiView()中將成員變量m_nCViewRadius初始化為0。在函數(shù)CMysdiView:OnDraw()中添加如下畫圓的語句:pDC-Ellipse(0, 0, 2*m_nCViewRadius, 2*m_nCViewRadius); 在視圖類實現(xiàn)文件MysdiView.cpp的開始位置加入包含對話框類頭文件的語句: #include RadiusDialog.h”l模態(tài)對話框在關(guān)閉之前,不允許用戶切換到程序的其它窗口。因為當彈出模態(tài)對話框時,它就獲得了程序的控制權(quán),并且,模態(tài)對話框擁有自己的消息循環(huán),因此其窗口中所有產(chǎn)生的消息
29、都不會送到主窗口的消息循環(huán)。 l非模態(tài)對話框彈出后,用戶不需要關(guān)閉它就可以在非模態(tài)對話框和應(yīng)用程序其它窗口之間進行切換。常用的Find查找和Replace替換對話框就是非模態(tài)對話框。如果關(guān)閉非模態(tài)對話框的父窗口,非模態(tài)對話框一般也自動關(guān)閉。 l對于非模態(tài)對話框,使用對話框編輯器創(chuàng)建對話框資源和使用ClassWizard類向?qū)砑訉υ捒蝾?、成員變量和消息處理函數(shù)的方法與模態(tài)對話框一樣,但創(chuàng)建和退出對話框的方式有所不同。l創(chuàng)建模態(tài)對話框時是由系統(tǒng)自動分配內(nèi)存空間,因 此 在 退 出 對 話 框 時 , 系 統(tǒng) 自 動 調(diào) 用CDialog:EndDialog()函數(shù)來刪除對話框。而創(chuàng)建非模態(tài)對話框
30、則需要用戶來分配內(nèi)存,退出時還需用戶自己刪除非模態(tài)對話框。 l非模態(tài)對話框的實例應(yīng)聲明為全局對象,不能象模態(tài)對話框那樣作為局部對象。一般用new操作符生成,使用結(jié)束時用delete操作符將其刪除。l區(qū)別于模態(tài)對話框,非模態(tài)對話框用new生成對象后,不是調(diào)用CDialog:DoModal()函數(shù),而是調(diào)用CDialog:Create()函數(shù)裝入對話框資源,并創(chuàng)建和顯示對話框。lCreate()函數(shù)在顯示非模態(tài)對話框后就立即返回,而DoModal()函數(shù)是在模態(tài)對話框被關(guān)閉之后才返回。并且,由于Create()函數(shù)不會啟動新的消息循環(huán),非模態(tài)對話框與應(yīng)用程序共用一個消息循環(huán),這樣,非模態(tài)對話框就不
31、會壟斷用戶的輸入。 lWindows將一些常用的對話框集成到操作系統(tǒng)中,作為Windows公用對話框庫Commdlg.dll的一部分。用戶在程序中可以直接使用這些公用對話框,不必再創(chuàng)建對話框資源和對話框類,減少了大量的編程工作。并且,用戶還可以定制公用對話框的外觀和性能。l為了在MFC應(yīng)用程序中使用公用對話框,MFC提供了封裝這些公用對話框的類。這些公用對話框類都是從CCommonDialog類派生而來,而CCommonDialog類又是CDialog類的派生類。公用對話框公用對話框 MFC公用對話框類公用對話框類 CColorDialog CFileDialog CFindReplaceDi
32、alog CFontDialog CPagesSetupDialog CPrintDialog COleDialog說說 明明顏色設(shè)定對話框,選擇不同的顏色文件存取對話框,打開或保存文件查找和替換對話框,查找和替換文本串字體設(shè)定對話框,選擇不同的字體。頁面設(shè)置對話框,設(shè)置頁碼、頁眉等標準的打印對話框,用于打印和打印設(shè)置該類及其派生類用于生成OLE對話框lWindows提供的控件分為兩類:標準控件和公共控件。l標準控件:靜態(tài)控件、編輯框、按鈕、列表框、組合框和滾動條等。利用標準控件可滿足大部分用戶界面程序設(shè)計的要求。l公共控件:滑塊、進度條、列表視控件、樹視控件和標簽控件等,利用公共控件實現(xiàn)應(yīng)用
33、程序用戶界面風格的多樣性。 l控件是Windows提供的完成特定功能的獨立小部件,它使應(yīng)用程序?qū)υ捁δ艿脑O(shè)計更容易完成,在對話框與用戶的交互過程中擔任主要角色,用于完成用戶輸入和程序運行過程中的輸出。l控件對應(yīng)一個CWnd派生類的對象,它實際上也是一個窗口,可以通過調(diào)用窗口類的成員函數(shù)實現(xiàn)控件的移動、顯示或隱藏、禁用或可用等操作,也可以重新設(shè)置它們的尺寸和風格等屬性。lMFC以類的形式對標準控件和公共控件進行了封裝,這些類大部分是從CWnd類直接派生而來。MFC類類控控 件件CStatic靜態(tài)文本、圖片控件CEdit編輯框CButton按鈕、復選框、單選按鈕、組框CComboBox組合框CLi
34、stBox列表框CScrollBar滾動條CSpinButtonCtrl旋轉(zhuǎn)按鈕CProgressCtrl進度條CSliderCtrl滑塊CListCtrl列表視控件MFC類類控控 件件CTreeCtrl樹視控件CTabCtrl標簽CAnimateCtrl動畫控件CRichEditCtrl復合編輯框CDateTimeCtrl日期時間選取器CMonthCalCtrl日歷CComboBoxEx擴展組合框CStatusBarCtrl狀態(tài)條控件CToolBarCtrl工具條控件CImageList圖像列表l用戶對控件的操作將引發(fā)控件事件,Windows產(chǎn)生對應(yīng)的控件通知Notification消息,消
35、息由其父窗口(如對話框)接收并處理。l標準控件發(fā)送WM_COMMAND控件通知消息,公共控件一般發(fā)送WM_NOTIFY控件通知消息,有時也發(fā)送WM_COMMAND消息。l通過WM_COMMAND消息參數(shù)標識發(fā)出消息的控件和具體的事件,消息參數(shù)中包含了控件的ID標識和通知碼(如BN_CLICKED單擊按鈕事件)。控件通知碼前綴最后一個字母為N。l程序員不必關(guān)心消息具體的發(fā)送和接收,只需利用ClassWizard將控件映射到成員變量,將控件消息映射到成員函數(shù),然后編寫具體的處理代碼。 l控件在程序中可作為對話框控件或獨立的窗口兩種形式存在,因此,控件的創(chuàng)建方法也有兩種。l一種方法是在對話框模板資源
36、中指定控件,這樣當應(yīng)用程序創(chuàng)建對話框時,Windows就會為對話框創(chuàng)建控件,編程時我們一般都采用這種方法。l一種方法是通過調(diào)用MFC控件類的成員函數(shù)C r e a t e ( ) 創(chuàng) 建 控 件 , 也 可 以 調(diào) 用 A P I 函 數(shù)CreateWindow()或CreateWindowEx()創(chuàng)建控件。l控件也可以用于其它窗口,如在程序視圖窗口顯示控件。這時,需要首先聲明一個MFC控件類的對象,然后調(diào)用Create()函數(shù)創(chuàng)建控件。 1. 添加或刪除控件添加或刪除控件 打開對話框編輯器和控件工具欄,在控件工具欄中單擊要添加的控件,此時,當光標指向?qū)υ捒驎r將變成十字形狀,在對話框指定位置處
37、單擊鼠標左鍵,則該控件被添加到對話框中指定的位置。也可以將光標指向控件工具欄中的控件,然后按住鼠標不放,采用鼠標拖曵的方法將控件拖入到對話框中。 要刪除已添加的控件,先單擊對話框中的控件,再按Delete鍵即可刪除指定的控件。2. 設(shè)置控件屬性設(shè)置控件屬性 將光標指向?qū)υ捒蛑行柙O(shè)置屬性的控件,按回車鍵(或右擊鼠標,在彈出式菜單中選擇Properties項)彈出Properties對話框,在Properties對話框中設(shè)置控件屬性??梢詫傩詫υ捒蚴冀K保持打開,只需要按下屬性對話框左上角的圖釘按鈕。3. 調(diào)整控件的大小調(diào)整控件的大小 對于靜態(tài)文本控件,當輸入標題內(nèi)容時,控件的大小會自動改變。對于
38、其它控件,先單擊控件,然后利用控件周圍的尺寸調(diào)整點來改變控件的大小。所選對象的位置和大小將顯示在狀態(tài)欄的右端。 4. 同時選取多個控件同時選取多個控件 一種方法是在對話框內(nèi)按住鼠標不放,拖曵出一個大的虛線框,然后釋放鼠標,則被該虛線框所包圍的控件都將被同時選??;另一種方法是按住Shift(或Ctrl)鍵不放,然后用鼠標連續(xù)選取控件。 5. 移動和復制控件移動和復制控件 當單個或多個控件被選取后,按方向鍵或用鼠標拖動選擇的控件可移動控件。若在鼠標拖動過程中按住Ctrl鍵則復制控件,復制的控件保持原來控件的大小和屬性。并且,控件能夠通過復制和粘貼操作而加入到其它對話框中。 6. 編排控件編排控件
39、編排控件主要是指同時調(diào)整對話框中一組控件的大小或位置。編排控件有兩種方法,一種方法是使用控件布局工具欄,自動編排對話框中同時選定的多個控件;另一種方法是使用Layout菜單,當打開對話框編輯器時,Layout菜單將出現(xiàn)在菜單欄上。為了便于用戶在對話框內(nèi)精確定位各個控件,系統(tǒng)還提供了網(wǎng)格、標尺等輔助功能。 測試對話框和控件的方法:測試對話框和控件的方法: 通過按下Ctrl+T組合鍵就能測試對話框運行時的界面效果。 l控件的屬性決定了控件的外觀和功能,我們只有通過控件屬性對話框才能設(shè)置控件的屬性。l控件屬性對話框上有若干選項卡,如General(通用屬性)、Style(風格)及Extend Sty
40、les(擴展風格)選項卡等,其中General頁用于設(shè)置控件的通用屬性,Styles和Extendcd Styles頁用來設(shè)置控件的外觀和輔助屬性。l不同控件有不同的屬性,但它們都具有通用屬性,如控件標識ID、標題Caption等項, 項項 目目說說 明明 ID控件的標識,對話框編輯器會為每一個加入的控件分配一個默認的ID Caption控件的標題,作為程序執(zhí)行時在控件位置上顯示的文本 Visible指明顯示對話框時該控件是否可見 Group用于指定一個控件組中的第一個控件 HelpID表示為該控件建立一個上下文相關(guān)的幫助標識ID Disabled指定控件初始化時是否禁用 Tab Stop表示
41、對話框運行后該控件可以通過使用Tab鍵來獲取焦點l靜態(tài)控件靜態(tài)控件(Static control)是用來顯示一個文本串或圖形信息的控件,它包括靜態(tài)文本控件、圖片控件和組框。l靜態(tài)文本控件用來顯示一般不需要變化的文本;圖片控件用來顯示邊框、矩形、圖標或位圖等圖形;組框用來顯示一個文本標題和一個矩形邊框,通常用來作為一組控件周圍的虛擬邊界,并將一組控件組織在一起。l管理靜態(tài)文本控件和圖片控件的MFC類是CStatic類,而管理組框的MFC類是CButton類。 l所有靜態(tài)控件默認的ID標識都為IDC_STATIC,如果要為一個靜態(tài)控件添加成員變量或消息處理函數(shù),必須重新為它指定一個唯一的ID標識。
42、l編程時用的最多是靜態(tài)文本控件,它被用來作為其它控件的標題。每一個靜態(tài)文本控件最多可以顯示255個字符,可以使用“n”換行符,并可以通過Styles頁面設(shè)置控件的風格。l編輯框編輯框(Edit box)又稱文本框或編輯控件,它一般與靜態(tài)文本控件一起使用,用于數(shù)據(jù)的輸入和輸出。編輯框提供了完整的鍵盤輸入和編輯功能,可以輸入各種文本、數(shù)字或者口令。l編輯框為用戶提供了良好的輸入、輸出功能,能夠?qū)㈡I盤輸入的字符串轉(zhuǎn)化為要求的數(shù)據(jù)類型,并驗證它是否符合輸入要求(字符串長度或數(shù)值范圍)。通過前述對話框內(nèi)容的學習我們已經(jīng)知道,完成上述工作是利用了MFC提供的對話框數(shù)據(jù)交換(DDX)和數(shù)據(jù)驗證(DDV)技術(shù)
43、。 l編輯框常用屬性: Multiline設(shè)置單行或多行編輯,Align text設(shè)置文本對齊方式,Number表示只能輸入數(shù)字,Password表示鍵入編輯框的字符都將顯示為“*”,Uppercase或Lowercase表示鍵入編輯框的字符全部轉(zhuǎn)換成大寫或小寫形式,Read-Only表示只能輸出數(shù)據(jù)。l當編輯框的文本被修改,會向父窗口發(fā)送消息,可以利用ClassWizard在對話框類中添加消息處理函數(shù)。編輯框發(fā)送消息有:EN_CHANGE、EN_KILLFOCUS、EN_SETFOCUS、EN_MAX TEXT、EN_UPDATE等。 按鈕按鈕(Button)包括按鍵按鈕、單選按鈕、復選框和
44、組框等4種類型。雖然封裝按鈕控件的MFC類都是CButton類,但它們具有不同的功能。按鍵按鈕在被按下時會立即執(zhí)行某個命令,也被稱為命令按鈕;單選按鈕用于在一組互相排斥的選項中選擇其中一項;復選框用于在一組選項中選擇其中一項或多項;組框可以使一組控件關(guān)聯(lián)起來。 l幾乎所有的對話框都使用簡單的按鍵按鈕,如OK按鈕。通過Properties對話框可以設(shè)置按鈕的不同風格,如通過設(shè)置Default button屬性設(shè)置一個默認按鈕。默認按鈕是指當對話框剛顯示時的命令執(zhí)行按鈕,此時按下Enter鍵將執(zhí)行該按鈕的命令功能。一個對話框只能有一個Default button默認按鈕,通常情況下將OK按鈕設(shè)置為
45、默認按鈕。l其它屬性:Owner draw利用WM_DRAWITEM消息處理函數(shù)定制按鈕的外觀,Icon表示用圖標代替原來的文本標題,Bitmap表示用位圖代替原來的文本標題,Client edge、Static edge、Modal frame用于設(shè)置按鈕的外觀。 l單選按鈕是由一個圓圈和緊隨其后的文本標題組成,當它被選中時,圓圈中就標上一個黑點。l單選按鈕設(shè)置Auto自動屬性為默認屬性,Auto屬性表示用戶若選中同組中的某個單選按鈕,則自動清除其余單選按鈕的選中狀態(tài),保證一組選項中始終只有一項被選中。l一般將一組單選按鈕放在一個組框中,在一組單選按鈕中,第一個(Tab鍵順序)按鈕最重要,其
46、ID值可用于在對話框中為控件建立關(guān)聯(lián)的成員變量。必須為同組中的第一個單選按鈕設(shè)置Group屬性,而同組的其它單選按鈕不可再設(shè)置Group屬性。 l復選框是由一個空心方框和緊隨其后的文本組成,當它被選中時,空心方框中就加上一個“”或“”標記。l不同于單選按鈕,在一組復選框中每次可以同時選擇多項。除了選中和沒選中兩種狀態(tài),復選框還有第三種狀態(tài),此時選中標記顯示為暗色,它表示該項不可以由用戶選擇。通過設(shè)置Tri-state屬性得到這種三態(tài)復選框。另外,我們可以通過設(shè)置Push-like屬性使單選按鈕或復選框具有普通按鈕的外觀。 l按鈕控件只能發(fā)送通知碼為BN_CLICKED(單擊按鈕)和BN_DOU
47、BLECLICKED(雙擊按鈕)的WM_COMMAND消息,我們經(jīng)常需要編寫按鈕的BN_CLICKED消息處理函數(shù)。lCButton類提供了一些成員函數(shù)實現(xiàn)對按鈕控件對象的控制和管理,如利用成員函數(shù)GetCheck()或SetCheck()獲取或設(shè)置單選按鈕或復選框的當前狀態(tài),利用成員函數(shù)GetButtonStyle()或SetButtonStyle()獲取或改變按鈕控件的風格。 lWindows提供了幾個列表類型控件,如列表框、組合框、列表視控件和樹視控件,其中列表框是一種最簡單的列表類型控件。l列表框列表框(List box)是一個列出了一些文本項的窗口,常用來顯示類型相同的一系列清單,如
48、文件、字體和用戶等。與復選框類似,用戶可以選擇其中一項或多項,但同時列表框中選項的數(shù)目和內(nèi)容可以動態(tài)變化,用戶可往列表框中添加或刪除某些選項。l列表框有單選Single、多選Multiple、擴展多選Extended、不選None四種風格,在控件Properties屬性對話框的Selection下拉框中設(shè)置。 l當列表框中發(fā)生了某個事件,列表框就會向其父窗口發(fā)送一條通知消息。列表框常用的通知消息有:用戶雙擊列表框中的列表項時發(fā)送消息LBN_DBLCLK,列表框失去鍵盤輸入焦點時發(fā)送消息LBN_KILLFOCUS,列表框獲得鍵盤輸入焦點時發(fā)送消息LBN_SETFOCUS,列表框中的當前選擇項發(fā)生
49、改變時發(fā)送消息LBN_SELCHANGE。l封裝列表框控件的MFC類是CListBox類,當列表框創(chuàng)建之后,在程序中可以通過調(diào)用CListBox類成員函數(shù)來實現(xiàn)列表項的添加、刪除、修改和獲取等操作。例例 編寫一個對話框應(yīng)用程ExmpList,對話框中有一個列表框,當用戶單擊列表框中的一個列表項(一個國家)時,在四個編輯框分別顯示指定國家的名稱、首都、面積和人口。單擊“添加”按鈕時,“國家”編輯框中的文本將被添加到列表框中;單擊“刪除”按鈕時,當前的列表項將被刪除。l編輯框和列表框在使用時受到一些限制,編輯框允許用戶輸入文本內(nèi)容,但用戶卻不能直接選擇以前已輸入的文本內(nèi)容。列表框可列出各種可能的選
50、項,但用戶卻不能在列表框中輸入新的列表項。而組合框組合框(Combo box)吸收了列表框和編輯框的優(yōu)點,它可以顯示列表項供用戶進行選擇,也允許用戶輸入新的列表項。實質(zhì)上,組合框是多個控件的組合,包括編輯框、列表框和按鈕。l組合框有簡單組合框(Simple)、下拉組合框(Dropdown)和下拉列表框(Drop List)等三種形式,通過控件Properties屬性對話框Styles頁面的Type下拉框設(shè)置這三種形式。 與編輯框或列表框相比,組合框有一個新的功能屬性,可以通過組合框控件屬性對話框的Data頁面添加初始的列表項。注意,每輸入完一個列表項,按下Ctrl+Enter鍵后才能換行輸入下
51、一項。也可以在對話框類的初始化成員函數(shù)OnInitDialog()中編寫代碼添加列表項。 組合框消息有:關(guān)閉組合框消息CBN_CLOSEUP,打開列表框消息CBN_DROPDOWN,雙擊列表項消息CBN_DBLCLK,選擇一個列表項并按下Enter鍵或單擊下拉按鈕隱藏列表框時發(fā)送消息CBN_SELENDOK,當前選項被取消時(如重新選擇其它控件或關(guān)閉對話框)發(fā)送消息CBN_SELENDCANCEL,當前選項改變消息CBN_SELCHANGE;當組合框的編輯框中的文本被修改且新的文本顯示之后發(fā)送消息CBN_EDIT CHANGE,當編輯框中的文本被修改且新的文本顯示之前發(fā)送消息CBN_EDITU
52、PDATE;組合框失去鍵盤輸入焦點消息CBN_KILLFOCUS,組合框獲得鍵盤輸入焦點消息CBN_SETFOCUS。 l滾動條滾動條作為一個獨立的控件,其主要作用通過可視化的滾動操作實現(xiàn)程序設(shè)計所要求的功能,如滾動顯示數(shù)據(jù)內(nèi)容、在一個有效范圍內(nèi)選取合適的數(shù)值等。 l滾動條分為垂直滾動條和水平滾動條兩種類型。滾動條兩端有兩個箭頭按鈕,中間有一個可沿滾動條方向移動的滾動塊。 l當移動滾動條時發(fā)送消息WM_HSCROLL或WM_VSCROLL。滾動消息含有通知碼,表示用戶對滾動條的操作方式,如SB_LINEUP和SB_LINEDOWN表示向上或下滾動一行(或一個單位),SB_PAGEUP表示向上滾
53、動一頁。 l在Window 95推出之前,只提供了靜態(tài)文本、按鈕、編輯框、列表框和組合框等標準控件。在推出Window 95時,將其中一些較為流行的控件作為公共控件引入到Windows中,如旋轉(zhuǎn)按鈕、進度條、滑塊、列表視控件、樹視控件、日期時間選取器等公共控件。 l標準控件保存在System目錄下的User.exe文件中,公共控件保存在System目錄下的Comctl32.dll中文件。MFC對這些公共控件以類的形式進行了封裝,如CProgressCtrl、CListCtrl和CTreeCtrl等。 l旋轉(zhuǎn)旋轉(zhuǎn)(Spin)按鈕控件也稱微調(diào)控件或上下控件,其形狀與滾動條類似,兩端也有兩個箭頭按鈕
54、,但中間沒有滾動塊。用戶單擊箭頭按鈕可以增加或減少一個數(shù)值,這個值表示旋轉(zhuǎn)按鈕滾動位置或另一個與旋轉(zhuǎn)按鈕相關(guān)聯(lián)的控件中的數(shù)據(jù)。l當程序需要用戶在某個范圍內(nèi)輸入一個值時可以使用旋轉(zhuǎn)按鈕,其好處是無需當心用戶輸入一個無效值而導致程序的崩潰。l旋轉(zhuǎn)按鈕控件經(jīng)常和一個關(guān)聯(lián)控件(如編輯框)綁定在一起使用,用戶只需用鼠標單擊旋轉(zhuǎn)按鈕控件的上下箭頭,就能設(shè)置關(guān)聯(lián)控件中的數(shù)據(jù)內(nèi)容。對用戶而言,一個旋轉(zhuǎn)按鈕和它的關(guān)聯(lián)控件看起來就象一個控件。l可以在程序中通過調(diào)用成員函數(shù)設(shè)置關(guān)聯(lián)控件,但常用的方法是通過控件Properties對話框直接設(shè)置關(guān)聯(lián)控件。l在Alignment下拉框設(shè)置旋轉(zhuǎn)按鈕與關(guān)聯(lián)控件的位置關(guān)系,R
55、ight和Lift分別表示旋轉(zhuǎn)按鈕緊靠在關(guān)聯(lián)控件窗口的右內(nèi)側(cè)或左內(nèi)側(cè),Unattached表示旋轉(zhuǎn)按鈕的位置與關(guān)聯(lián)控件無關(guān);屬性Auto buddy表示旋轉(zhuǎn)按鈕把它前一個控件(按TabOrder順序)作為關(guān)聯(lián)控件;屬性Set buddy integer表示單擊旋轉(zhuǎn)按鈕改變位置時,關(guān)聯(lián)控件窗口能自動顯示這個位置值。l在控件Properties屬性對話框的Orientation下拉框中設(shè)置垂直(Vertical)或水平(Horizontal)方向兩種風格;Wrapt表示當旋轉(zhuǎn)按鈕達到最大(最?。┲禃r重新回繞到最?。ㄗ畲螅┲?;No thousands表示取消顯示數(shù)值中的千分位分隔符;Arrow ke
56、ys表示可以使用鍵盤“”和“”鍵改變控件位置值。l對 旋 轉(zhuǎn) 按 鈕 的 操 作 通 過 調(diào) 用 M F C 類CSpinButtonCtrl的成員函數(shù)來完成,主要成員函數(shù)有:SetRange()和GetRange()用于設(shè)置或獲得旋轉(zhuǎn)按鈕的上下限范圍,SetPos()和GetPos()用于設(shè)置或獲得旋轉(zhuǎn)按鈕的當前位置值,函數(shù)SetBuddy()用于動態(tài)設(shè)置關(guān)聯(lián)控件,函數(shù)GetBuddy()用于獲得關(guān)聯(lián)控件窗口的指針。 l滑塊滑塊(Slider)控件也稱滑動條或游標控件,它由滑杠、可沿著滑杠方向移動的滑塊和可選擇刻度的標尺組成。用戶可以通過鼠標或鍵盤移動滑塊,滑塊不同的位置代表了一個不同的數(shù)值
57、。 l與滾動條相比,滑塊控件中間只有一個滑塊,兩端箭頭按鈕。與旋轉(zhuǎn)按鈕相比,滑塊控件比旋轉(zhuǎn)按鈕控件更具獨立性,一般不需要關(guān)聯(lián)控件。 l滑塊控件的屬性:Orientation下拉框設(shè)置滑塊控件的垂直(Vertical)或水平(Horizontal)方向風格。Point設(shè)置刻度標尺的位置,Both表示滑塊是一個矩形塊,Top/Left表示標尺位于滑桿的左邊或上方,Bottom/Right表示標尺位于滑桿的右邊或下方。 l當滑動滑塊時,滑塊控件將發(fā)送滾動消息來通知父窗口,垂直滑塊發(fā)送消息WM_VSCROLL,水平滑塊發(fā)送WM_HSCROLL。 l可調(diào)用封裝滑塊控件的MFC類CSliderCtrl的成
58、員函數(shù)設(shè)置滑塊的最小、最大值、刻度出現(xiàn)的疏密、行和頁間距。如:GetLineSize()、SetLineSize()、GetPageSize()、SetPageSize()、GetRange()、Set- Range()、GetPos()、SetPos()等。 l進度條進度條(Progress)是一個在進行一系列費時操作時顯示反饋信息的控件,通過其狀態(tài)的動態(tài)變化告訴用戶當前的操作進度。進度條也能表示某個范圍內(nèi)的值,如溫度、水平面高度以及音響系統(tǒng)頻率的模擬顯示。l形狀上看,進度條由一個細長的矩形窗口和一些填充塊組成,其中的填充塊越多,表示任務(wù)越接近于完成,當藍色塊填滿時,任務(wù)也就完成了。l我們一
59、般使用進度條的默認屬性,其常用的屬性有:Border表示進度條有一個邊框;Vertical表示垂直進度條;Smooth表示使用不間斷的藍色條填充控件窗口。 l進度條控件也有一個“范圍”和“當前位置”,范圍表示整個操作需要完成的工作量,當前位置表明該操作已完成了多少。初始化時只需設(shè)置進度條值的范圍、當前值和使用步長。l進度條控件用于輸出,一般不需要進行消息處理。l為了設(shè)置和獲得進度條有關(guān)參數(shù),需要調(diào)用封裝進度條控件MFC類CProgressCtrl的有關(guān)成員函數(shù)。函數(shù)SetRange()或GetRange()用于設(shè)置或獲取控件值的范圍,函數(shù)SetPos()和GetPos()用于設(shè)置或獲取控件的當
60、前位置,函數(shù)SetStep()用于設(shè)置步長,函數(shù)StepIt()用于在控件窗口填充一個藍色塊。 1. 標簽(標簽(Tab)控件控件l標簽(Tab)控件也稱選項卡控件,它是一個分割成多個頁面的窗口,每個頁面都配有一個帶有標題的標簽,單擊一個標簽就顯示對應(yīng)的頁面。l標簽控件在功能上等價一系列對話框窗口,但使用起來更接近于我們的使用習慣。編程時使用標簽控件,可以在一個窗口的相同區(qū)域內(nèi)定義多個頁面,其中每個頁面(可以是一個對話框)上包括一些不同的控件,以實現(xiàn)不同的對話功能。l標簽作為控件使用,它不是對話框,編程時不能直接在各個標簽頁上添加控件,只能在選中不同標簽時在相同位置顯示含有不同控件的對話框。l標簽控件
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030中國精釀啤酒市場需求現(xiàn)狀與投資價值評估報告
- 2025至2030中國石化催化劑行業(yè)需求趨勢及投資潛力研究報告
- 2025至2030中國電站鍋爐市場融資渠道及前景營銷戰(zhàn)略研究報告
- 2025至2030中國生物醫(yī)學動畫市場運行趨勢與發(fā)展機遇可行性報告
- 2025至2030中國豬油膏行業(yè)銷售態(tài)勢及消費趨勢研究報告
- 2025至2030中國溫控電夾板行業(yè)市場運營模式及未來發(fā)展動向研究報告
- 2025至2030中國海藻糖行業(yè)競爭狀況及需求潛力研究報告
- 2025至2030中國瀝青纖維行業(yè)競爭趨勢與需求前景研究報告
- 2025至2030中國氯茴香硫醚行業(yè)未來趨勢與前景運行態(tài)勢展望報告
- 2025至2030中國核糖核酸鈉鹽市場競爭對手及發(fā)展前景戰(zhàn)略規(guī)劃報告
- 1.1細胞是生命活動的基本單位課件高一上學期生物人教版(2019)必修1
- SL631水利水電工程單元工程施工質(zhì)量驗收標準第3部分:地基處理與基礎(chǔ)工程
- 新22J01 工程做法圖集
- 2024年建筑業(yè)10項新技術(shù)
- DB32∕T 2172-2012 公路橋梁橡膠支座病害評定技術(shù)標準
- 06 第六章 管理心理學(第二版)
- 班主任到場簽到表
- 義務(wù)教育《歷史》課程標準(2022年版)
- 銀鷺渠道合理布建,服務(wù)代管
- 空調(diào)凈化系統(tǒng)驗證方案及報告
- 中國少先隊隊歌歌詞(校隊排版加注音)
評論
0/150
提交評論