資源描述:
《實驗二 使用mfc進行可視化編程中的標準控件》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。
1、實驗二使用MFC進行可視化編程中的標準控件實驗目的熟悉使用Windows控件,使用MFC進行基于對話框的可視化程序設計。實驗環(huán)境硬件環(huán)境:奔3以上處理器,512MB以上內存空間軟件環(huán)境:windows2000以上操作系統(tǒng),VC6.0編譯環(huán)境。實驗內容與完成情況(附上有價值的實驗步驟和結果)1.建立一個基于單文檔的應用程序,最后一步為view視圖類選擇基類為CFormView。2.添加一個空間listctrl,其屬性要設置為view:report。勾選singleselection。3.引入ADO組件。在StdAfx.h文件中加上以下代碼:#import"C:ProgramFil
2、esCommonFilesSystemadomsado15.dll"named_guidsrename("EOF","adoEOF"),rename("BOF","adoBOF")usingnamespaceADODB;msado15.dll是ADO的組件對象3.為視圖類添加兩個變量_RecordsetPtrm_pRecordset;_ConnectionPtrm_pConnection;為智能指針,對數(shù)據(jù)庫的連接操作都要通過這個兩個指針4.為視圖類添加一個函數(shù)voidOnInitADOCon();進行數(shù)據(jù)庫連接初始化智能指針m_pConnection;m_pConnec
3、tion.CreateInstance("ADODB.Connection");建立連接CStringstrConnect="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=學生.mdb;PersistSecurityInfo=False";m_pConnection->Open((_bstr_t)strConnect,"","",adModeUnknown);5.定義一個學生類,作為數(shù)據(jù)庫中學生表的一個映射類。在函數(shù)voidCTSETView::OnInitialUpdate()中初始化控件。插入表頭:各個參數(shù)的含義//參數(shù)1.新列,2.
4、表頭,3.對齊方式,4.列寬,5.子項索引m_cList.InsertColumn(0,"學號",LVCFMT_LEFT,50,0);連接數(shù)據(jù)庫:調用函數(shù)OnInitADOCon();將數(shù)據(jù)庫信息顯示到控件上:在此要用到智能指針m_pRecordset;一下兩句進行循環(huán)while(!m_pRecordset->adoEOF)m_pRecordset->MoveNext();顯示數(shù)據(jù):m_cList.InsertItem(0,"");//無此句,無任何內容m_cList.SetItemText(0,0,(char*)(_bstr_t)m_pRecordset->GetCollect
5、("學號"));至此數(shù)據(jù)庫連接成功,運行顯示6.添加添加和刪除快捷菜單:插入一個菜單為視圖類添加WM_CONTEXTMENU消息處理函數(shù):OnContextMenuCMenupopMenu;//聲明菜單對象popMenu.LoadMenu(IDR_MENU_POP);//加載菜單資源popMenu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this);//得到子菜單指針。顯示彈出菜單,并跟蹤所選項再插入一個對話框實現(xiàn)對數(shù)據(jù)表的增刪修改:為對話框聲明一個類,并為各個控件聲明合適的變量為菜單項編寫函數(shù)實現(xiàn)菜
6、單功能:添加學生信息:右擊顯示快捷菜單,單擊添加彈出對話框:填入信息,點擊確定實現(xiàn)學生信息的添加右擊顯示快捷菜單,單擊刪除如果之前沒選中刪除項擇提示:否則刪除成功:出現(xiàn)的問題及對問題的解決方法1.AfxMessageBox("數(shù)據(jù)庫連接失??!");用第二句替換原先的CStringstrConnect//CStringstrConnect="DRIVER={MicrosoftAccessDriver(*.mdb)};//uid="";pwd="";DBQ=學生.mdb;";CStringstrConnect="Provider=Microsoft.Jet.OLEDB.4.0;Da
7、taSource=學生.mdb;PersistSecurityInfo=False";m_pConnection->Open((_bstr_t)strConnect,"","",adModeUnknown);2.OnInitADOCon();//出錯m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);//adLockBatchOpt