電子教案-《Visual-C++-6.0實例教程(第二版)》-楊國興_第1頁
電子教案-《Visual-C++-6.0實例教程(第二版)》-楊國興_第2頁
電子教案-《Visual-C++-6.0實例教程(第二版)》-楊國興_第3頁
電子教案-《Visual-C++-6.0實例教程(第二版)》-楊國興_第4頁
電子教案-《Visual-C++-6.0實例教程(第二版)》-楊國興_第5頁
已閱讀5頁,還剩305頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第10章數(shù)據(jù)庫編程學習目標建立ODBC數(shù)據(jù)源了解類CDatabase、CRecordSet的使用方法創(chuàng)建WindowsExplore風格的程序進一步熟練樹控件和列表控件的使用10.1MFC提供的ODBC數(shù)據(jù)庫類1.VisualC++數(shù)據(jù)庫編程概述ODBCAPIMFCODBCDAOOLEDBADO第10章多線程2.CDatabase類Open()IsOpen()Close()第10章多線程10.1MFC提供的ODBC數(shù)據(jù)庫類例:CDatabasedb;if(!db.IsOpen())//判斷db是否處于打開狀態(tài){ if(!db.Open(“Caie”)) { AfxMessageBox(“建立數(shù)據(jù)庫連接失??!”) }}db.Close();3.CRecordSet類第10章多線程10.1MFC提供的ODBC數(shù)據(jù)庫類CRecordSet類對象提供了從數(shù)據(jù)源中提取出的記錄集。在實際應用程序中,一般不直接使用CRecordSet類,而是從CRecordSet類產(chǎn)生一個派生類,并添加相應于數(shù)據(jù)庫表中字段的成員變量。10.2本章實例第10章多線程1.實例介紹

實例程序是“汽車及汽車零部件企業(yè)查詢系統(tǒng)”,主要功能就是查詢某個地區(qū)生產(chǎn)某產(chǎn)品的企業(yè)。單擊工具欄的“打印”按鈕,打印所查詢出來的公司清單。第10章多線程10.2本章實例雙擊右側(cè)窗口列表中的某個公司編碼,彈出對話框來顯示該公司的詳細信息。單擊“打印”或“打印信封標簽”按鈕打印公司的詳細信息或信封標簽。第10章多線程10.2本章實例(1)代碼設計產(chǎn)品編碼:*

*

**如2

1

02

地區(qū)編碼:**

**

如01

00

企業(yè)編碼:****

***如0100

001

2系統(tǒng)設計汽車零部件汽車發(fā)動機系統(tǒng)泵類零部件北京未用序號(2)數(shù)據(jù)庫設計地區(qū)編碼表(Dqbm)產(chǎn)品編碼表(Cpbm)公司情況表(Gsqk)產(chǎn)品情況表(Cpqk)本系統(tǒng)使用Access數(shù)據(jù)庫,數(shù)據(jù)庫名Caie.mdb第10章多線程10.2本章實例(1)用戶DSN(2)DriverdoMicrosoftAccess(*.mdb)(3)數(shù)據(jù)源名:Caie”3創(chuàng)建ODBC數(shù)據(jù)源10.3程序?qū)崿F(xiàn)第10章多線程創(chuàng)建工程Odbc創(chuàng)建與數(shù)據(jù)庫表相關聯(lián)的類處理工具欄處理左邊窗口處理右邊窗口初始封面公司詳細情況對話框處理狀態(tài)欄步驟1創(chuàng)建工程Odbc第10章多線程(1)單文檔(2)數(shù)據(jù)庫:Headerfilesonly可以在工程的在stdAfx.h文件中找到相應的代碼如下: #include<afxdb.h>//MFCODBCdatabaseclasses(3)界面風格:Windowsexplore10.3程序?qū)崿F(xiàn)步驟2創(chuàng)建與數(shù)據(jù)庫表相關聯(lián)的類第10章多線程添加以下4個與數(shù)據(jù)庫表相關聯(lián)的類:CRecordSet,CCpbmSet,CGsqkSet,CCpqkSet

方法:插入新類 選擇基類CRecordSet 選擇ODBC數(shù)據(jù)源,并選擇Caie 選擇4個相應的表10.3程序?qū)崿F(xiàn)步驟3處理工具欄1第10章多線程(1)除“打印”按鈕外,將工具欄上的所有按鈕刪除,載添加一個按鈕,ID為ID_COMBOBOX。(2)載主框架類中定義組合框成員變量

CComboBoxm_ComboBox;

(3)在主框架類的OnCreat()函數(shù)中創(chuàng)建工具欄代碼的下面添加創(chuàng)建組合框的代碼。 10.3程序?qū)崿F(xiàn)AddItemFromDqbm()調(diào)用步驟3處理工具欄2第10章多線程(4)添加AddItemFromDqbm()函數(shù)。在主框架類中添加成員函數(shù)AddItemFromDqbm()

在主框架類中添加一個公有數(shù)據(jù)成員m_strDqbm,用來保存所選擇地區(qū)的編碼。 CStringm_strDqbm;在主框架類的實現(xiàn)文件的開始位置加入文件包含。 #include"DqbmSet.h" #include"Cpqkset.h"10.3程序?qū)崿F(xiàn)步驟3處理工具欄3第10章多線程(5)添加組合框的消息響應函數(shù)OnSelChangeCombo()原型: afx_msgvoidOnSelChangeCombo();消息映射: ON_CBN_SELCHANGE(ID_COMBOBOX,OnSelChangeCombo)函數(shù)定義:voidCMainFrame::OnSelChangeCombo(){ CStringstrComboItem; m_ComboBox.GetWindowText(strComboItem); m_strDqbm=strComboItem.Left(4); COdbcView*pView=GetRightPane(); pView->ListBuild();}10.3程序?qū)崿F(xiàn)本函數(shù)在后面介紹步驟3處理工具欄4第10章多線程(6)在主框架類中添加成員函數(shù)GetLeftPane()CLeftView*CMainFrame::GetLeftPane(){ CWnd*pWnd=m_wndSplitter.GetPane(0,0); CLeftView*pView= DYNAMIC_DOWNCAST(CLeftView,pWnd); returnpView;}

在主框架類頭文件中,添加CLeftView類的聲明 classCLeftView;

10.3程序?qū)崿F(xiàn)步驟4處理左邊窗口1第10章多線程(1)添加資源和成員變量 IDI_CAR1,IDI_CAR2,IDI_CAR3,IDI_CAR4

10.3程序?qū)崿F(xiàn)在視類中添加CImageList成員變量classCLeftView:publicCTreeView{……protected: CImageListm_ImageList;……}在LeftView.cpp中添加:#include"CpbmSet.h"

步驟4處理左邊窗口2第10章多線程(2)設置視中樹控件的風格10.3程序?qū)崿F(xiàn)在CLeftView類的PreCreateWindow()函數(shù)中添加代碼

BOOLCLeftView::PreCreateWindow(CREATESTRUCT&cs){ cs.style|=TVS_HASLINES|TVS_HASBUTTONS| TVS_LINESATROOT|TVS_SHOWSELALWAYS; returnCTreeView::PreCreateWindow(cs);}步驟4處理左邊窗口3第10章多線程10.3程序?qū)崿F(xiàn)(3)在CLeftView::OnInitialUpdate()中建立樹控件節(jié)點(4)添加消息響應函數(shù)函數(shù)CLeftView::OnSelchanged()在CLeftView類中添加兩個成員變量classCLeftView:publicCTreeView{……public: CStringm_strCpbm; longm_nCurlParam;……}在LeftView.cpp類中添加文件包含:#include"MainFrm.h“#include"OdbcView.h"步驟5處理右邊窗口1第10章多線程10.3程序?qū)崿F(xiàn)(1)設置列表視的風格為reportBOOLCOdbcView::PreCreateWindow(CREATESTRUCT&cs){

cs.style|=LVS_REPORT; returnCListView::PreCreateWindow(cs);}步驟5處理右邊窗口2第10章多線程10.3程序?qū)崿F(xiàn)(2)在OnInitialUpdate()函數(shù)創(chuàng)建列表控件的列voidCOdbcView::OnInitialUpdate(){ CListView::OnInitialUpdate(); CListCtrl&refList=GetListCtrl();

refList.InsertColumn(0,"公司編碼",LVCFMT_LEFT,60); refList.InsertColumn(1,"公司名稱",LVCFMT_LEFT,240); refList.InsertColumn(2,"聯(lián)系電話",LVCFMT_LEFT,100); refList.InsertColumn(3,"郵政編碼",LVCFMT_LEFT,60); refList.InsertColumn(4,"通信地址",LVCFMT_LEFT,300); }步驟5處理右邊窗口3第10章多線程10.3程序?qū)崿F(xiàn)(3)添加COdbcView::ListBuild()函數(shù)在OdbcView.cpp文件中添加以下文件包:#include"MainFrm.h"#include"LeftView.h"#include"DqbmSet.h"#include"Cpqkset.h"#include"Gsqkset.h"步驟6初始封面第10章多線程10.3程序?qū)崿F(xiàn)(1)選擇菜單Project︱AddToProject︱ComponentsAndControls,彈出ComponentsAndControlsGallery對話框。(2)雙擊VisualC++Components,選擇Splashscreen,單擊“Insert”按鈕,再單擊“確定”按鈕。然后關閉ComponentsAndControlsGallery對話框。(3)可以在工程文件夾中找到位圖“Splsh16.bmp”,如果要使用自己制作的封面,只要替換這個位圖即可。步驟7公司詳細情況對話框1第10章多線程10.3程序?qū)崿F(xiàn)(1)編輯對話框資源。ID:IDD_DLG_COMPINFO編輯框的IDIDC_EDIT_NAME IDC_EDIT_POSTIDC_EDIT_ADRRESS IDC_EDIT_TELEPHONEIDC_EDIT_CZH

IDC_EDIT_FRDBIDC_EDIT_EMAIL

IDC_EDIT_PPIDC_EDIT_QYGM

IDC_EDIT_CPQK步驟7公司詳細情況對話框2第10章多線程10.3程序?qū)崿F(xiàn)(2)為文本框控件添加關聯(lián)變量IDC_EDIT_ADRRESS CString m_strAddress;IDC_EDIT_CPQK CString m_strCpqk;IDC_EDIT_CZH CString m_strFax;IDC_EDIT_EMAIL CString m_strEmail;IDC_EDIT_FRDB CString m_strFrdb;IDC_EDIT_NAME CString m_strName;IDC_EDIT_POST CString m_strPostNumber;IDC_EDIT_PP CString m_strPp;IDC_EDIT_QYGM CString m_strQygm;IDC_EDIT_TELEPHONE CString m_strTelephone;步驟7公司詳細情況對話框3第10章多線程10.3程序?qū)崿F(xiàn)(3)在對話框中添加私有成員變量m_strGsbm,并初始化CDlgCompinfo::CDlgCompinfo(CStringgsbm,CWnd*pParent/*=NULL*/): CDialog(CDlgCompinfo::IDD,pParent){…… m_strGsbm=gsbm;}步驟7公司詳細情況對話框4第10章多線程10.3程序?qū)崿F(xiàn)(4)顯示對話框函數(shù)COdbcView::OnLButtonDblClk()(5)將公司的詳細信息顯示在對話框中函數(shù)CDlgCompinfo::OnInitDialog()在OdbcView.cpp中添加文件包含: #include"DlgCompinfo.h“在對話框類的實現(xiàn)文件中添加文件包含: #include"GsqkSet.h"步驟8處理狀態(tài)欄1第10章多線程10.3程序?qū)崿F(xiàn)(1)將主框架類中的保護成員變量m_wndStatusBar改為公有成員。(2)在主框架類的實現(xiàn)文件中找到indicators數(shù)組,再添加一個ID_SEPARATOR(3)設置狀態(tài)欄前兩個指示器的風格在CMainFrame::OnCreate()添加以下代碼: m_wndStatusBar.SetPaneInfo(0,ID_STATUSBAR,SBPS_NORMAL,10); m_wndStatusBar.SetPaneInfo(1,ID_STATUSBAR,SBPS_NORMAL,600);

(4)在狀態(tài)欄顯示查詢過程在函數(shù)ListBuild()的第三行下面添加如下兩行代碼。 CStringstrMess="正在查詢,請稍候..."; pMainFrame->m_wndStatusBar.SetPaneText(1,strMess);步驟8處理狀態(tài)欄2第10章多線程10.3程序?qū)崿F(xiàn)在函數(shù)ListBuild()查詢的循環(huán)里面添加下面的代碼

…… nItemNumber++; if(nItemNumber%100==0) { strMess+="."; pMainFrame->m_wndStatusBar.SetPaneText(1,strMess); } pGsqkSet->MoveNext();

……在函數(shù)ListBuild()的最后添加下面兩行代碼。 strMess.Format("共有%d家公司",nItemNumber); pMainFrame->m_wndStatusBar.SetPaneText(1,strMess);小結(jié)CDatabase類CRecordSet類Tree控件List控件程序啟動封面

在狀態(tài)欄顯示信息

第10章多線程VisualC++6.0實例教程(第2版)第1章VC++基礎知識與VC6.0開發(fā)環(huán)境學習目標了解VC++的一些基本概念了解VisualC++6.0開發(fā)環(huán)境利用應用向?qū)Ы⒁粋€應用程序框架1.1VC++基礎知識

面向?qū)ο缶幊痰娜筇卣鞣庋b性繼承性多態(tài)性VisualC++和MFC的發(fā)展MFC(MicrosoftFoundationClassLibrary)SDK(SoftwareDevelopmentKit)第1章VC++基礎知識1.2VisualC++6.0開發(fā)環(huán)境簡介

標題欄菜單欄工具欄工作區(qū)(Workspace)客戶區(qū)輸出窗口狀態(tài)條第1章VC++基礎知識1.VisualC++6.0主界面2.應用向?qū)В∕FCAppWizard(exe))第一步:選擇程序類型單文檔應用程序多文檔應用程序基于對話框的應用程序第1章VC++基礎知識第二步:程序?qū)?shù)據(jù)庫的支持第三步:程序?qū)LE和ActiveX控件的支持第四步:程序外觀和對通信的支持第五步:程序的和風格、代碼加注釋、鏈接庫設置第六步:選擇視類的基類3.應用程序主要的類主框架類:CMainFrame第1章VC++基礎知識MainFrm.hMainFrm.cpp應用類:C***App***.h***.cpp文檔類:C***Doc***Doc.h***Doc.cpp***View.h***View.cpp視類:C***View第2章對話框與控件

學習目標了解MFC應用向?qū)蓱贸绦虻幕窘Y(jié)構(gòu)掌握對話框編程的一般方法學習用類向?qū)砑酉㈨憫瘮?shù)及控件關聯(lián)變量掌握Windows通用控件使用方法了解Windows通用對話框編程的使用方法2.1使用對話框與控件實例:口令對話框在程序開始運行時,彈出一個口令對話框,要求輸入口令,如果口令超過四個或不足四個數(shù)字,程序會給出警告,要求用戶重新輸入,如果輸入的口令不正確,則顯示出錯信息,然后程序結(jié)束,如果按下取消按鈕,程序也結(jié)束,如果口令正確,則進入該程序。第2章對話框與控件程序的實現(xiàn)步驟利用AppWizard生成多文檔程序(Dialog)編輯口令對話框資源添加控件關聯(lián)變量添加代碼第2章對話框與控件2.1使用對話框與控件步驟1生成程序框架(Dialog)

1.項目名稱:Dialog

2.選擇多文檔界面應用程序第2章對話框與控件2.1使用對話框與控件步驟2編輯口令對話框資源對話框ID:IDD_PASSWORD_DIALOG,Caption:“口令”類:CPasswordDialog添加控件:ID控件類型屬性IDC_STATIC

StaticTextCaption:請輸入口令IDC_STATICStaticTextCaption:口令為一個0-9999之間的整數(shù) (Clientedge、Staticedge和Modalframe選中) IDC_PASSWORD_EDITEditBoxPassword:選中IDOKButton Caption:確定IDCANCELButtonCaption:取消步驟3

添加控件關聯(lián)變量第2章對話框與控件2.1使用對話框與控件步驟4顯示對話框

應用類CDialogApp的成員函數(shù)InitInstance()完成程序的初始化工作,因此可以在該函數(shù)中添加代碼,顯示對話框并檢測口令。為了在DialogApp.cpp文件中使用對話框類CPasswordDialog,需在文件的開始部分添加如下文件包含:#include“PasswordDialog.h”IDC_PASSWORD_EDITintm_PasswordMinimumValue:0MaximumValue:9999第2章對話框與控件2.1使用對話框與控件在函數(shù)

InitInstance()最后一行returnTRUE;的前面加入以下代碼:

CPasswordDialogcDlg;//聲明CpasswordDialog類的一個對象

if(cDlg.DoModal()==IDOK)//用戶按了確定按鈕

{ if(cDlg.m_Password!=1925)//口令為整數(shù)1925 {//如果口令不對,則顯示出錯信息,然后程序結(jié)束

AfxMessageBox("口令錯誤,確定后將退出程序。"); returnFALSE; }}else//如果按下取消按鈕,程序也結(jié)束

returnFALSE;第2章對話框與控件2.1使用對話框與控件小結(jié)編輯對話框資源添加控件關聯(lián)變量應用類的成員函數(shù)InitInstance()對話框類的成員函數(shù)DoModal()MessageBox()函數(shù)2.2模態(tài)對話框模態(tài)對話框彈出后,獨占了系統(tǒng)資源,只有在關閉該對話框后才可能繼續(xù)執(zhí)行程序的其他代碼,不能夠在關閉對話框之前執(zhí)行應用程序其他部分的代碼。第2章對話框與控件本節(jié)在前一節(jié)程序的基礎上,在菜單“查看”下面添加菜單項“模態(tài)對話框”,選擇該菜單項彈出左面的對話框,作出各種選擇后,單擊“確定”按鈕后,程序?qū)⑦x擇的信息顯示在文本框中,單擊“退出”按鈕,結(jié)束程序的運行。程序的實現(xiàn)步驟編輯菜單資源編輯對話框資源,創(chuàng)建類顯示對話框添加控件關聯(lián)變量添加消息響應函數(shù)第2章對話框與控件2.2模態(tài)對話框步驟1添加菜單資源在“查看(V)”菜單中添加以下菜單項SeparatorID_VIEW_MODALDIALOG 模態(tài)對話框ID_VIEW_MODALLESSDIALOG 非模態(tài)對話框ID_VIEW_PROGRESSDIALOG 進度條對話框ID_VIEW_PROPERTIES 屬性頁對話框ID_VIEW_COMMONDIALOG 通用對話框第2章對話框與控件2.2模態(tài)對話框步驟2編輯對話框資源第2章對話框與控件2.2模態(tài)對話框IDC_SEX1 RadioButton Caption:男Group:選中IDC_SEX2 RadioButton Caption:女IDC_INSTEREST1 CheckBox Caption:登山Group:選中IDC_INSTEREST2 CheckBox Caption:游泳IDC_INSTEREST3 CheckBox Caption:看書IDC_INSTEREST4 CheckBox Caption:玩游戲IDC_COMBO ComboBoxIDC_EDIT EditBox將對話框中OK按鈕的標題改為“確定”,ID改為ID_OK。CANCE按鈕標題改為“退出”ID:IDD_MODAL_DIALOGCaption:“ModalDialog”Class:CDialogModal注意:一組單選鈕的TABORDER連續(xù),且選中第一個單選鈕的GROUP屬性。步驟3顯示對話框第2章對話框與控件2.2模態(tài)對話框使用類向?qū)г谝曨愔刑砑硬藛蔚南㈨憫瘮?shù):Classname:CDialogViewObjectIDs:ID_VIEW_MODALLESSDIALOGMessages:COMMAND

在文件DialogView.cpp中包含頭文件:#include"DialogModal.h"voidCDialogView::OnViewModaldialog(){ //TODO:Addyourcommandhandlercodehere CDialogModalcDlg; cDlg.DoModal();}步驟4添加控件關聯(lián)變量第2章對話框與控件2.2模態(tài)對話框使用類向?qū)У腗enberVariable標簽添加IDC_COMBOCComboBox m_Combo;IDC_SEX1CButton m_Radio;IDC_EDITCStringm_Edit;值型控件關聯(lián)變量:int,char,CString,float等控制型控件關聯(lián)變量:每個控件都有對應的類管理,如CComboBox,CButton,CEdit等。也可以添加這些類型的關聯(lián)變量,稱為控制型控件關聯(lián)變量。步驟5添加消息響應函數(shù)第2章對話框與控件2.2模態(tài)對話框初始化:Classname:CDialogModalObjects:CDialogModalMessage:WM_INITDIALOG代碼單擊確定按鈕:Classname:CDialogModalObjects:ID_OKMessage:BN_CLICKED代碼小結(jié)第2章對話框與控件2.2模態(tài)對話框1.單選鈕SetCheck(),GetCheck()2.復選框 GetCheck()3.組合框InsertString(),SetCurSel(),GetCurSel(),GetLBText()4.對話框

GetDlgItem()2.3非模態(tài)對話框非模態(tài)對話框彈出后,程序可以在不關閉該對話框的情況下繼續(xù)執(zhí)行,在轉(zhuǎn)入到應用程序其他部分的代碼時可以不需要用戶做出響應。第2章對話框與控件本節(jié)在前一節(jié)程序的基礎上,當選擇“查看”菜單中的“非模態(tài)對話框”菜單項時,彈出左面的對話框。選擇左邊樹控件中的某個班級,在右邊的列表控件顯示該班級的學生。程序的實現(xiàn)步驟編輯對話框資源,創(chuàng)建類顯示對話框?qū)崿F(xiàn)對話框的功能:添加控件關聯(lián)變量添加消息響應函數(shù)第2章對話框與控件2.3非模態(tài)對話框步驟1編輯對話框資源第2章對話框與控件2.3非模態(tài)對話框ID:IDD_MODALLESS_DIALOGCaption:“ModallessDialog”Class:CDialogModallessID號控件屬性IDC_TREETreeControl選中復選框Hasbuttons,Haslines和LinesatrootIDC_LISTListControlStyles|View:ReportIDOKButtonCaption:確定步驟2顯示對話框第2章對話框與控件2.3非模態(tài)對話框在視類中添加成員公有變量:

CDialogModalless*m_pModallessDlg;在視類的頭文件添加文件包含:#include”DialogModalless.h”2.在構(gòu)造函數(shù)中初始化:m_pModallessDlg=NULL;

3.在析構(gòu)函數(shù)中釋放:

if(m_pModallessDlg!=NULL)

{ deletem_pModallessDlg;//釋放空間

}4.添加菜單消息響應函數(shù),顯示對話框。代碼步驟3實現(xiàn)對話框的功能第2章對話框與控件2.3非模態(tài)對話框添加控件關聯(lián)變量

控件 變量類型 變量名 IDC_LIST ClistCtrl m_List IDC_Tree CteeCtrl m_Tree2.添加消息響應函數(shù)(1)初始化函數(shù):

CDialogModalless::OnInitDialog()(2)樹控件節(jié)點選擇改變函數(shù):

CDialogModalless::OnSelchangedTree()調(diào)用的三個函數(shù)BuildJsj()BuildGl()BuildRj()小結(jié)第2章對話框與控件2.3非模態(tài)對話框1.樹控件

TV_INSERTSTRUCT,HTREEITEMInsertItem(),GetSelectedItem(),GetItemText(),GetItem()2.列表控件

InsertColumn(),InsertItem(),SetItemText(),3.非模態(tài)對話框的顯示

ShowWindow(SW_SHOW);4.創(chuàng)建對話框m_pModallessDlg=newCDialogModalless;m_pModallessDlg->Create(IDD_MODALLESS_DIALOG,this);2.4進度條對話框當程序中有一項任務需要較長時間時,一般可以顯示一個進度條反映任務的完成情況。第2章對話框與控件本節(jié)在前一節(jié)程序的基礎上,當選擇“查看”菜單中的“進度條對話框”菜單項時,彈出左面的對話框。設置好每次前進百分比和每兩次前進的時間間隔,單擊“進度條”顯示,觀察進度條演示。程序的實現(xiàn)步驟編輯對話框資源,創(chuàng)建類顯示對話框?qū)崿F(xiàn)對話框的功能:添加控件關聯(lián)變量添加消息響應函數(shù)第2章對話框與控件2.4進度條對話框步驟1編輯對話框資源第2章對話框與控件2.4進度條對話框ID:IDD_PROGRESS_DIALOGCaption:“ProgressDialog”Class:CDialogProgressID號控件屬性IDC_PROGRESSProgressBorder:選中IDC_TIME_SLIDERSliderIDC_EDITEditBoxIDC_PERCENT_SPINSpin選中Autobuddy和SetbuddyintegerIDC_PROGRESS_BUTTONButtonCaption:進度條演示IDC_QUIT_BUTTONButtonCaption:退出注意:要保證Edit控件與Spin控件的TabOrder連續(xù),且Edit控件在前。步驟2顯示對話框第2章對話框與控件2.4進度條對話框使用類向?qū)г谝曨愔刑砑硬藛蔚南㈨憫瘮?shù):Classname:CDialogViewObjectIDs:ID_VIEW_PROGRESSDIALOGMessages:COMMAND

在文件DialogView.cpp中包含頭文件:#include"DialogProgress.h"voidCDialogView::OnViewProgressdialog

(){ //TODO:Addyourcommandhandlercodehere CDialogProgressdlg; dlg.DoModal();}步驟3實現(xiàn)對話框的功能第2章對話框與控件2.4進度條對話框添加控件關聯(lián)變量

控件 變量類型 變量名IDC_PERCENT_SPINCSpinButtonCtrlm_SpinIDC_PROGRESSCProgressCtrlm_ProgressIDC_TIME_SLIDERCSliderCtrlm_Time2.添加消息響應函數(shù)(1)初始化函數(shù):

CDialogProgress::OnInitDialog()(2)單擊“進度條演示”按鈕函數(shù):

CDialogProgress::OnProgressButton()(3)單擊“退出”按鈕函數(shù):

CDialogProgress::OnQuitButton(){OnOK();}小結(jié)第2章對話框與控件2.4進度條對話框1.進度條控件

SetRange(),GetRange(),SetPos(),GetPos(),OffsetPos()2.滑桿控件SetRange(),GetRange(),SetPos(),GetPos(),3.微調(diào)控件Autobuddy,Alignment

SetRange(),GetRange(),SetPos(),GetPos()4.其他Sleep()函數(shù)2.5屬性頁對話框?qū)傩皂搶υ捒驅(qū)⒍鄠€對話框集中起來,通過標簽或按鈕來激活各個頁面。第2章對話框與控件本節(jié)在前一節(jié)程序的基礎上,當選擇“查看”菜單中的“屬性頁對話框”菜單項時,彈出左面的對話框。單擊“學生守則”標簽顯示學生守則,單擊“市民公約”顯示市民公約。程序的實現(xiàn)步驟編輯對話框資源,創(chuàng)建類顯示對話框?qū)崿F(xiàn)對話框的功能:添加控件關聯(lián)變量添加消息響應函數(shù)第2章對話框與控件2.5屬性頁對話框步驟1編輯對話框資源第2章對話框與控件2.5屬性頁對話框ID:IDD_TAB_DIALOGCaption:“TabDialog”Class:CDialogTab注意:由于Tab控件一般要與其它控件占用同一個位置,這樣在編輯對話框資源時非常不方便,可以先將對話框調(diào)大,在不同位置調(diào)整好控件的大小及設置號屬性后,再將這些控件放在同一個位置上。ID號控件屬性IDC_TABTabControlBorder:選中IDC_STATIC1StaticTextCaption:學生守則:\n1...\n2...\n3...\n4...\n......,Clientedge:選中IDC_SCROLLBARVerticalScrollBarIDC_STATIC2StaticTextCaption:市民公約:\n1...\n2...\n3...\n4...\n......,Clientedge:選中ID_BUTTON_CANCELButtonCaption:退出步驟2顯示對話框第2章對話框與控件2.5屬性頁對話框使用類向?qū)г谝曨愔刑砑硬藛蔚南㈨憫瘮?shù):Classname:CDialogViewObjectIDs:ID_VIEW_TABMessages:COMMAND

在文件DialogView.cpp中包含頭文件:#include"DialogTab.h"voidCDialogView::OnViewTab(){ CDialogTabdlg; dlg.DoModal();}步驟3實現(xiàn)對話框的功能第2章對話框與控件2.5屬性頁對話框添加控件關聯(lián)變量

控件 變量類型 變量名IDC_SCROLLBAR CScrollBar m_ScrollBarIDC_TAB CTabCtrl m_Tab2.添加消息響應函數(shù)(1)初始化函數(shù):

CDialogTab::OnInitDialog()(2)Tab控件頁面選擇改變的消息響應函數(shù):

CDialogTab::OnSelchangeTab()(3)滾動條發(fā)生變化的消息響應函數(shù)

CDialogTab::OnVScroll()小結(jié)第2章對話框與控件2.5屬性頁對話框1.Tab控件

TC_ITEMInsertItem(),GetCurSel()

2.滾動條控件 SetScrollPos

(),GetScrollPos(),SetScrollRange(),3.其他

ShowWindow(SW_SHOW);

ShowWindow(SW_HIDE);2.6通用對話框在MFC中,提供了一些通用對話框類來實現(xiàn)Windows系統(tǒng)提供的通用對話框,包括文件對話框、顏色對話框、字體對話框、打印對話框和查找與替換對話框等。第2章對話框與控件本節(jié)在前一節(jié)程序的基礎上,當選擇“查看”菜單中的“通用對話框”菜單項時,彈出左面的對話框。再單擊“打開”按鈕,彈出“打開”對話框。選擇一個文件,單擊“打開”按鈕,所選擇的文件名顯示在前面對話框的文本框中。程序的實現(xiàn)步驟編輯對話框資源,創(chuàng)建類顯示對話框?qū)崿F(xiàn)對話框的功能

——添加消息響應函數(shù)第2章對話框與控件2.6通用對話框步驟1編輯對話框資源第2章對話框與控件2.6通用對話框ID:IDD_COMMON_DIALOGCaption:“CommonDialog”Class:CDialogCommonID號控件屬性IDC_STATICStaticTextCaption:請選擇一個文本文件IDC_EDITEditBoxRead-only:選中IDC_OPEN_BUTTONButtonCaption:打開ID_QUITButtonCaption:退出步驟2顯示對話框第2章對話框與控件2.6通用對話框使用類向?qū)г谝曨愔刑砑硬藛蔚南㈨憫瘮?shù):Classname:CDialogViewObjectIDs:ID_VIEW_COMMONDIALOGMessages:COMMAND

在文件DialogView.cpp中包含頭文件:#include"DialogCommon.h"voidCDialogView::OnViewCommondialog(){ CDialogCommondlg; dlg.DoModal();}步驟3實現(xiàn)對話框的功能第2章對話框與控件2.6通用對話框添加消息響應函數(shù):

“打開”按鈕的單擊消息響應函數(shù) CDialogCommon::OnOpenButton()

小結(jié)第2章對話框與控件2.6通用對話框CFileDialog類

構(gòu)造函數(shù)

GetPathName()第3章菜單與控制條學習目標響應菜單消息和控制菜單狀態(tài)使用快捷鍵快捷菜單編程實現(xiàn)動態(tài)菜單工具條編程狀態(tài)條編程3.1菜單

通過選擇菜單分別在視中畫矩形和橢圓,通過另外兩個菜單項控制“矩形”菜單項的狀態(tài),在菜單前顯示“√”表示該菜單項當前被選中。還可以通過快捷鍵畫矩形和橢圓。第3章菜單與控件條程序的實現(xiàn)步驟利用AppWizard生成單文檔程序(MenuTest)編輯菜單資源添加菜單消息響應函數(shù),實現(xiàn)畫矩形和橢圓。編輯快捷鍵資源控制菜單的狀態(tài) 第3章菜單與控件條3.1菜單步驟1生成程序框架(MenuTest)項目名稱:MenuTest選擇單文檔界面應用程序步驟2編輯菜單資源CaptionIDPrompt畫圖(Pop-up選中)矩形(&R)\tCtrl+RID_DRAW_RECT視中畫矩形橢圓(&C)\tAlt+CID_DRAW_CIRCLE在視中畫橢圓第3章菜單與控件條3.1菜單在幫助子菜單后面再添加一個子菜單“畫圖”,包括兩個菜單項。步驟3

添加菜單消息響應函數(shù)Classname:CMenuTestViewObjectIDs:ID_DRAW_RECT(ID_DRAW_CIRCLE)Messages:COMMAND第3章菜單與控件條3.1菜單voidCMenuTestView::OnDrawRect(){ CClientDCdc(this); dc.Rectangle(50,50,200,150);}voidCMenuTestView::OnDrawCircle(){ CClientDCdc(this); dc.Ellipse(250,50,400,150);}步驟4

編輯快捷鍵資源第3章菜單與控件條3.1菜單打開Workspace窗口的ResourceView標簽,展開Accelerator資源,添加兩個快捷鍵資源。IDKeyModifiersID_DRAW_RECTRCtrlID_DRAW_CIRCLECAlt步驟5 控制菜單的狀態(tài)(1)第3章菜單與控件條3.1菜單1.在畫圖菜單中再添加三個菜單項CaptionIDPromptSeparator -------------------允許畫矩形 ID_DRAW_ENABLE--------禁止畫矩形 ID_DRAW_DISABLE--------2.在視類中添加一個記錄當前“矩形”菜單項狀態(tài)的變量 BOOLm_Enable;并在構(gòu)造函數(shù)中初始化數(shù)據(jù)成員m_Enable

m_Enable=TRUE;步驟5 控制菜單的狀態(tài)(2)第3章菜單與控件條3.1菜單3.添加上面兩個菜單項的響應函數(shù),改變m_Enable的值Classname:CMenuTestViewObjectIDs:ID_DRAW_ENABLE(ID_DRAW_DISABLE)Messages:COMMANDvoidCMenuTestView::OnDrawEnable(){ m_Enable=TRUE; }voidCMenuTestView::OnDrawDisable(){ m_Enable=FALSE; }步驟5 控制菜單的狀態(tài)(3)第3章菜單與控件條3.1菜單4.添加“矩形”菜單的UPDATE_COMMAND_UI響應函數(shù),控制菜單的狀態(tài)Classname:CMenuTestViewObjectIDs:ID_DRAW_RECTMessages:UPDATE_COMMAND_UIvoidCMenuTestView::OnUpdateDrawRect(CCmdUI*pCmdUI){ pCmdUI->Enable(m_Enable);}步驟5 控制菜單的狀態(tài)(4)第3章菜單與控件條3.1菜單5.添加“允許畫矩形”和“禁止畫矩形”菜單的UPDATE_COMMAND_UI響應函數(shù),控制兩個菜單項的狀態(tài)Classname:CMenuTestViewObjectIDs:ID_DRAW_ENABLE(

ID_DRAW_DISABLE)Messages:UPDATE_COMMAND_UIvoidCMenuTestView::OnUpdateDrawEnable(CCmdUI*pCmdUI){ pCmdUI->SetCheck(m_Enable?1:0);}voidCMenuTestView::OnUpdateDrawDisable(CCmdUI*pCmdUI){ pCmdUI->SetCheck(m_Enable?0:1);}小結(jié)第3章菜單與控件條3.1菜單菜單:Popup,Separator編輯快捷鍵使用COMMAND消息響應菜單項的選擇事件UPDATE_COMMAND_UI消息控制菜使用單項狀態(tài)pCmdUI->Enable(true|false);pCmdUI->SetCheck(1|0);3.2快捷菜單

上一節(jié)程序的基礎上,在視窗口內(nèi)單擊鼠標右鍵,彈出一個快捷菜單,菜單中包含“編輯矩形坐標”和“編輯橢圓坐標”,當選擇“編輯矩形坐標”時,彈出一個對話框,允許輸入矩形左上角坐標和右下角坐標,當選擇“編輯橢圓坐標”時,也彈出一個對話框,用于輸入橢圓外接矩形左上角坐標和右下角坐標。第3章菜單與控件條程序的實現(xiàn)步驟編輯快捷菜單資源顯示跟蹤菜單編輯對話框資源及對話框的功能添加菜單響應函數(shù),實現(xiàn)程序功能第3章菜單與控件條3.2快捷菜單步驟1編輯快捷菜單資源再添加一個菜單資源(IDR_POPUP_MENU)

子菜單:Popup1選中Pop-upCaptionID

編輯矩形坐標ID_EDIT_RECT

編輯橢圓坐標ID_EDIT_CIRCLE選擇與其關聯(lián)的類為CMainFrame。第3章菜單與控件條3.2快捷菜單步驟2 顯示快捷菜單Classname:CMainFrameObjectIDs:CMainFrameMessages:WM_CONTEXTMENU第3章菜單與控件條3.2快捷菜單函數(shù):voidCMainFrame::OnContextMenu(CWnd*pWnd,CPointpoint)CMenu:LoadMenu GetSubMenu TrackPopupMenu TPM_CENTERALIGN 彈出式菜單的水平中心為point.x。 TPM_LEFTALIGN 彈出式菜單的左邊位于point.x。 TPM_RIGHTALIGN 彈出式菜單的右邊位于point.x。 TPM_LEFTBUTTON 彈出式菜單只跟蹤鼠標左鍵。 TPM_RIGHTBUTTON彈出式菜單也跟蹤鼠標右鍵。步驟3 編輯對話框資源及對話框的功能(1)第3章菜單與控件條3.2快捷菜單編輯對話框資源ID:IDD_DIALOG_EDIT,Class:CDlgEdit

控件IDCaption靜態(tài)文本框IDC_STATIC左上角坐標(X1,Y1)靜態(tài)文本框IDC_STATIC右下角坐標(X2,Y2)編輯框IDC_EDIT_X1

編輯框IDC_EDIT_Y1

編輯框IDC_EDIT_X2

編輯框IDC_EDIT_Y2

按鈕控件IDOK確定按鈕控件IDCANCEL取消步驟3 編輯對話框資源及對話框的功能(2)第3章菜單與控件條3.2快捷菜單添加控件關聯(lián)變量控件變量類型 變量名IDC_EDIT_X1

int

m_nX1IDC_EDIT_Y1

int

m_nY1IDC_EDIT_X2

int

m_nX2IDC_EDIT_Y2

int

m_nY2步驟4 添加菜單響應函數(shù),實現(xiàn)程序功能(1)第3章菜單與控件條3.2快捷菜單(1)在視類中添加控制矩形和橢圓位置和大小的變量 intm_nRectLeft; intm_nRectTop; intm_nRectRight; intm_nRectBottom; intm_nCircleLeft; intm_nCircleTop; intm_nCircleRight; intm_nCircleBottom;步驟4 添加菜單響應函數(shù),實現(xiàn)程序功能(2)第3章菜單與控件條3.2快捷菜單(2)在視類的構(gòu)造函數(shù)中初始化變量CMenuTestView::CMenuTestView(){ m_nRectLeft=50; m_nRectTop=50; m_nRectRight=200; m_nRectBottom=150; m_nCircleLeft=50; m_nCircleTop=50; m_nCircleRight=200; m_nCircleBottom=150;}步驟4 添加菜單響應函數(shù),實現(xiàn)程序功能(3)第3章菜單與控件條3.2快捷菜單(3)修改視類中的OnDrawRect()和OnDrawCircle()函數(shù)

voidCMenuTestView::OnDrawRect(){ CClientDCdc(this); dc.Rectangle(m_nRectLeft,

m_nRectTop,

m_nRectRight,

m_nRectBottom);}voidCMenuTestView::OnDrawCircle(){ CClientDCdc(this); dc.Ellipse(m_nCircleLeft,

m_nCircleTop,

m_nCircleRight,

m_nCircleBottom);}步驟4 添加菜單響應函數(shù),實現(xiàn)程序功能(4)第3章菜單與控件條3.2快捷菜單(4)添加快捷菜單消息響應函數(shù)

Class:CMenuTestView

ObjectIDs:ID_EDIT_RECT(ID_EDIT_CIRCLE)Message:COMMAND函數(shù):voidCMenuTestView::OnEditRect()函數(shù):voidCMenuTestView::OnEditCircle()在視類的實現(xiàn)文件中包含頭文件:#include"DlgEdit.h"

小結(jié)第3章菜單與控件條3.2快捷菜單OnContextMenuCMenu:LoadMenu() TrackPopupMenu()

GetSubMenu()3.3動態(tài)菜單

在上一節(jié)程序的基礎上,在快捷菜單中再添加兩個菜單項,當選擇“添加橢圓控制菜單”時,在畫圖菜單中的最后添加兩個菜單項“允許畫橢圓”和“禁止畫橢圓”。通過這兩個菜單項控制菜單項“橢圓”的狀態(tài)。當選擇“刪除橢圓控制菜單”時,則刪除這兩個菜單項。第3章菜單與控件條程序的實現(xiàn)步驟編輯快捷菜單資源添加菜單響應函數(shù)加入動態(tài)菜單響應函數(shù)添加橢圓菜單狀態(tài)控制函數(shù)第3章菜單與控件條3.3動態(tài)菜單步驟1編輯快捷菜單資源打開上節(jié)編輯的菜單資源IDR_POPUP_MENU,為其再增加兩個菜單項如下:ID CaptionSeparatorID_ADD_MENU 增加橢圓控制菜單ID_DELETE_MENU 刪除橢圓控制菜單第3章菜單與控件條3.3動態(tài)菜單步驟2 加入菜單響應函數(shù)

Classname:CMainFrameObjectIDs:ID_ADD_MENU(ID_DELETE_MENU)

Messages:WM_COMMAND第3章菜單與控件條3.3動態(tài)菜單函數(shù):voidCMainFrame::OnAddMenu()函數(shù):voidCMainFrame::OnDeleteMenu()CWind::GetMenuCMenu:GetMenuItemCount() GetSubMenu() GetMenuItemID() DeleteMenu() AppendMenu() 步驟3 加入動態(tài)菜單響應函數(shù)(1)第3章菜單與控件條3.3動態(tài)菜單(1)由于兩個動態(tài)菜單項用于控制“橢圓”菜單的狀態(tài),在主框架類中添加一個變量記錄選擇的是哪個菜單。并在構(gòu)造函數(shù)中初始化。CMainFrame::CMainFrame(){ //TODO:addmemberinitializationcodehere m_nSelectMenu=0;//0允許畫橢圓}//1禁止畫橢圓步驟3 加入動態(tài)菜單響應函數(shù)(2)第3章菜單與控件條3.3動態(tài)菜單(2)為了響應動態(tài)菜單的消息,重載主框架類的OnCmdMsg()函數(shù)ClassName:CMainFrameObjectsIDs:CMainFrameMessages:OnCmdMsg函數(shù):CMainFrame::OnCmdMsg()用到的兩個函數(shù):DoSelectMenu()

DoUpdateSelectMenu()步驟4 添加橢圓菜單狀態(tài)控制函數(shù)第3章菜單與控件條3.3動態(tài)菜單ClassName:CMainFrameObjectsIDs:ID_VIEW_CIRCLEMessages:UPDATE_COMMAND_UIvoidCMainFrame::OnUpdateDrawCircle(CCmdUI*pCmdUI){ if(m_nSelectMenu==0) pCmdUI->Enable(true); else pCmdUI->Enable(false);}小結(jié)第3章菜單與控件條3.3動態(tài)菜單CWnd類:GetMenu()

函數(shù)CMenu類GetMenuItemCount()函數(shù)GetSubMenu()GetMenuItemID()函數(shù)DeleteMenu()函數(shù)AppendMenu()函數(shù)OnCmdMsg消息3.4工具條

在上一節(jié)的基礎上,加入另一個工具條。工具條上有三個按鈕和一個組合框,三個按鈕的功能分別是畫矩形、畫橢圓和畫直線,當選擇組合框中的某項時,彈出一個信息框。第3章菜單與控件條程序的實現(xiàn)步驟編輯工具條資源創(chuàng)建工具條在工具條上添加控件加入控件響應函數(shù)第3章菜單與控件條3.4工具條步驟1編輯工具條資源添加工具條資源:IDR_MYTOOLBAR在工具條上添加四個工具按扭其ID分別是: ID_DRAW_RECT,ID_DRAW_CIRCLE ID_DRAW_LINE,ID_COMBOBOX第3章菜單與控件條3.4工具條步驟2創(chuàng)建工具條(1)在類CMainFrame中定義工具條類的成員變量CToolBarm_wndMyToolBar;第3章菜單與控件條3.4工具條(2)在類CMainFrame的OnCreate函數(shù)中添加代碼

函數(shù):OnCreate()(3)添加工具條按鈕的消息響應函數(shù) 由于矩形和橢圓按鈕的ID和菜單項相同,具有相同的功能,只需添加畫線按鈕的消息響應函數(shù):OnDrawLine()步驟3在工具條上添加組合框(1)在類CMainFrame中定義組合框類的成員變量CComboBoxm_ComboBox;第3章菜單與控件條3.4工具條(2)在類CMainFrame的OnCreate函數(shù)中添加代碼

函數(shù):OnCreate()步驟4加入組合框控件響應函數(shù)第3章菜單與控件條3.4工具條(1)在類CMainFrame的消息響應函數(shù)的聲明位置添加消息響應函數(shù)的原形

afx_msgvoidOnSelchangeCombo();由于類向?qū)е荒軐⒐ぞ邨l傷得按鈕做按鈕對待,無法添加組合框的消息響應函數(shù),需要手工處理。(2)在MainFrm.cpp的消息映射宏添加消息映射宏:

ON_CBN_SELCHANGE(ID_COMBOBOX,OnSelchangeCombo)(3)在MainFrm.cpp中添加函數(shù)定義:

函數(shù):voidCMainFrame::OnSelchangeCombo()小結(jié)第3章菜單與控件條3.4工具條創(chuàng)建工具條CreateEx()LoadToolBar()SetButtonInfo()GetItemRect()在工具條上創(chuàng)建組合框Create()AddString()SetCurSel()手工添加消息響應函數(shù)消息映射函數(shù)聲明函數(shù)定義3.5狀態(tài)條

在上一節(jié)的基礎上,在狀態(tài)條上添加兩個狀態(tài)信息,用來指示鼠標在視圖窗口中的位置。同時加入兩個狀態(tài)指示器,分別用來顯示鍵盤上的Ctrl鍵和Shift鍵是否被按下。第3章菜單與控件條程序的實現(xiàn)步驟在文件MainFrm.cpp中,找到狀態(tài)條indicators數(shù)組的定義處添加代碼創(chuàng)建Ctrl鍵和Shift鍵狀態(tài)指示器的字符串資源為狀態(tài)條添加標識號在函數(shù)CMainFrame::OnCreate()函數(shù)中,添加狀態(tài)條的設置代碼顯示控制鍵狀態(tài)顯示鼠標在視中的位置坐標第3章菜單與控件條3.5狀態(tài)條步驟1.在文件MainFrm.cpp中的狀態(tài)條indicators數(shù)組的定義處添加代碼

staticUINTindicators[]={ ID_SEPARATOR,//statuslineindicator ID_SEPARATOR,//顯示x坐標 ID_SEPARATOR,//顯示y坐標 ID_INDICATOR_CTRL,//顯示Ctrl鍵的狀態(tài) ID_INDICATOR_SHIFT,//顯示Shift鍵的狀態(tài) ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICATOR_SCRL,};第3章菜單與控件條3.5狀態(tài)條步驟2創(chuàng)建Ctrl鍵和Shift鍵狀態(tài)指示器的字符串資源插入兩個字符串資源ID CaptionID_INDICATOR_CTRLCtrlID_INDICATOR_SHIFTShift。第3章菜單與控件條3.5狀態(tài)條步驟3為狀態(tài)條添加標識號選擇View菜單下的Res

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論