




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1 MFC程序的基本操作流程1利用ClassWizard為控件添加成員變量時(shí),請(qǐng)寫(xiě)出所有的代碼變化。(必考)將控件定義為CMy0901Dlg類的成員: CStringm_yyy;在CMy0901Dlg:DoDataExchange()中,自動(dòng)維護(hù)DDX_Control() DDX_Text(pDX, IDC_EDIT1, m_yyy);在CMy0904Dlg:CMy0904Dlg()中初始化 m_yyy = _T("");2 利用ClassWizard為控件添加映射函數(shù)時(shí),請(qǐng)寫(xiě)出所有的代碼變化。(必考)在CMy0901Dlg類定義中,說(shuō)明了以上函數(shù):afx_msg void
2、 OnButton1();在CMy0901Dlg類實(shí)現(xiàn)中,創(chuàng)建控件CLICKED消息對(duì)應(yīng)的函數(shù): void CMy0901Dlg:OnButton1() 在CMy0901Dlg類實(shí)現(xiàn)中,在BEGIN_MESSAGE_MAP宏中,關(guān)聯(lián)事件和函數(shù):ON_BN_CLICKED(IDC_BUTTON1, OnButton1)3 常用事件的含義(抽五個(gè))視圖事件:WM_SIZE:改變窗口大小 WM_DESTROY:銷毀窗口 WM_TIMER: WM_CREATE:創(chuàng)建窗口對(duì)話框 WM_INITDIALOG對(duì)話框上所有的子控件創(chuàng)建完成之后選擇發(fā)送的消息 WM_PAINT:繪制窗口 WM_CLOSE:按鈕
3、BN_CLICKED 單擊了窗口菜單列表框:LBN_SELCHANGE列表框某項(xiàng)的選擇被取消 LBN_DBLCLK雙擊了列表框的某一項(xiàng)編輯框EN_CHANGE 編輯框中的文本被更新4 常用的虛函數(shù)的作用(都考)文檔類:OnOpenDocument OnSaveDocument Serialize 視圖類:OnUpdate OnDraw應(yīng)用程序類InitInstance 框架類PreCreateWindow OnCreateClient5 框架類的理解利用MFC的APPWizard創(chuàng)建一個(gè)應(yīng)用工程。簡(jiǎn)述MFC自動(dòng)生成了哪些類及其功能2 窗口程序中基本元素的操作技術(shù)(讀程序、補(bǔ)充程序)快捷菜單、動(dòng)
4、態(tài)菜單動(dòng)態(tài)菜單(兩個(gè)函數(shù)流程意思)/! / 獲得程序菜單指針CMenu* pMenu = GetMenu(); / 獲得第二個(gè)子菜單的指針 CMenu* pMenu1 = pMenu->GetSubMenu(1); / 添加一個(gè)分隔線pMenu1->AppendMenu(MF_SEPARATOR); / 在子菜單中增加一菜單項(xiàng)pMenu1->AppendMenu(MF_STRING,ID_NEW_MENUITEM+0,"新項(xiàng)1");/?AppendMenu ? ID_NEW_MENUITEM +0,"新項(xiàng)1" ?/ 避免系統(tǒng)將“無(wú)代碼的
5、菜單項(xiàng)”自動(dòng)置虛m_bAutoMenuEnable = FALSE; / 自動(dòng)更新菜單狀態(tài)開(kāi)關(guān) / 修改菜單后,應(yīng)重畫(huà)菜單 DrawMenuBar();return 0;/!BOOL CMainFrame:OnCommand(WPARAM wParam, LPARAM lParam) WORD nID =LOWORD(wParam); /?WORD nCode=HIWORD(wParam); /? if(nID=ID_NEW_MENUITEM+0) MessageBox("你選中了新的菜單項(xiàng)1");return CFrameWnd:OnCommand(wParam, lPa
6、ram);BOOL CMainFrame:PreCreateWindow(CREATESTRUCT& cs)if( !CFrameWnd:PreCreateWindow(cs) )return FALSE;/ TODO: Modify the Window class or styles here by modifying/ the CREATESTRUCT csreturn TRUE;快捷菜單(講清所標(biāo)程序流程)/!void CMainFrame:OnContextMenu(CWnd* pWnd, CPoint point) CMenu* pMenu=new CMenu; /? pM
7、enu->LoadMenu(IDR_MENU1); /? CMenu* pMenu1; pMenu1 = pMenu->GetSubMenu(0); /? pMenu1->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, point.x,point.y,this); /?void CMainFrame:OnMenu3() AfxMessageBox("OnMenu3()");狀態(tài)欄(cmainframe oncreate ctestview onmousemove)與視圖(?)cmainframe oncreate
8、:int CMainFrame:OnCreate(LPCREATESTRUCT lpCreateStruct)if (CFrameWnd:OnCreate(lpCreateStruct) = -1)return -1;if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) |!m_wndToolBar.LoadToolBar(IDR_MAINFRAME)TRACE0
9、("Failed to create toolbarn");return -1; / fail to createif (!m_wndStatusBar.Create(this) |!m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT)TRACE0("Failed to create status barn");return -1; / fail to create/ TODO: Delete these three lines if you don't
10、want the toolbar to/ be dockablem_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);EnableDocking(CBRS_ALIGN_ANY);DockControlBar(&m_wndToolBar);return 0;CTestview OnMouseMove:void CTestView:OnMouseMove(UINT nFlags, CPoint point) CString s; s.Format("X=%d, Y=%d",point.x, point.y); / 獲得窗口框架的指針 CM
11、ainFrame* pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd; pFrame->m_wndStatusBar.SetPaneText(1,s); CView:OnMouseMove(nFlags, point);時(shí)鐘與作圖(讀程序或補(bǔ)程序)圖形加刷子(?)void CTestView:OnSize(UINT nType, int cx, int cy) CView:OnSize(nType, cx, cy);/ TODO: Add your message handler code herevoid CTestView:OnGameSt
12、art() SetTimer(1,100,NULL);void CTestView:OnTimer(UINT nIDEvent) m_Box.left +=dx; m_Box.right+=dx; m_Box.top +=dy; m_Box.bottom+=dy; Invalidate();CView:OnTimer(nIDEvent);void CTestView:OnDraw(CDC* pDC)CTestDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data herepDC->
13、;Rectangle(&m_Box); /?void CTestView:OnGameStop() KillTimer(1);private:RECT m_Box;int dx,dy;位圖(MyBitmaps 某個(gè)成員變量(dcimage)的信息)數(shù)據(jù)庫(kù)(連接字符串。關(guān)閉鏈接顯示數(shù)據(jù)庫(kù))位圖:myBitmaps:myBitmaps(char fname,CDC *pDC)this->pDC=pDC;HBITMAP hBitmap=(HBITMAP)LoadImage(NULL,fname,IMAGE_BITMAP,0,0,LR_LOADFROMFILE); CBitmap obj
14、Bitmap; /操作位圖的類objBitmap.Attach(hBitmap);objBitmap.GetBitmap(&bm); /讀取位圖結(jié)構(gòu)(長(zhǎng)寬字節(jié)) /建立圖像設(shè)備上下文dcImage.CreateCompatibleDC(pDC); dcImage.SelectObject(&objBitmap); myBitmaps:myBitmaps()DeleteDC(dcImage);void myBitmaps:Draw(CDC *pDC)pDC->BitBlt(100,100, bm.bmWidth,bm.bmHeight,&dcImage, 0, 0,
15、SRCCOPY); class myBitmaps CDC dcImage;BITMAP bm;CDC *pDC;public:void Draw(CDC *pDC);myBitmaps(char fname,CDC *pDC);virtual myBitmaps();數(shù)據(jù)庫(kù):void CTestView:OnDbconnect() /!:CoInitialize(NULL); / 初始化COM環(huán)境m_Cn.CreateInstance("ADODB.Connection");m_Cn->Open("Provider=Microsoft.Jet.OLEDB.
16、4.0;Data Source=canyin.mdb","","",adModeUnknown);void CTestView:OnDbdisconnct() /!m_Cn->Close(); void CTestView:OnDbdisplay() /!_RecordsetPtr m_pRecordset;m_pRecordset.CreateInstance("ADODB.Recordset");/m_pRecordset->Open("cai",m_Cn.GetInterfacePtr(
17、), adOpenDynamic,adLockOptimistic, adCmdTable);CString scmd="Select * from cai where Price>20"m_pRecordset->Open(_variant_t)scmd, m_Cn.GetInterfacePtr(), adOpenDynamic,adLockOptimistic, adCmdText);while(!m_pRecordset->adoEOF)/?/查詢當(dāng)前記錄的各種字段的值/!int ID = (int)m_pRecordset->GetColl
18、ect("ID").lVal; /?CString Name =(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("Name"); /?float Price = m_pRecordset->GetCollect("Price").fltVal; /?m_ID=ID; m_Name=Name; /?UpdateData();/!m_pRecordset->MoveNext(); /當(dāng)前記錄后移/?void CTestView:OnDbchange() CString Sql;/Sq
19、l="Update cai set Price=Price+1 where ID=2"/Sql="Delete from cai where ID=2"Sql="Insert into cai(ID,Name,Price) Values(11,'ccc',90)"/!m_Cn->Execute(_bstr_t)Sql,NULL,adCmdText);一檔多視(A1,A2)(CFormView CListView)void CA2View:OnUpdate(CView* pSender, LPARAM lHint,
20、 CObject* pHint) m_List1.ResetContent();CA2Doc* pDoc = (CA2Doc*)GetDocument();for(int i=0; i<pDoc->GetCount(); i+) CPoint *p=pDoc->GetPoint(i);! CString s; s.Format("%d,%d",p->x,p->y); ! m_List1.AddString(s);類的序列化串行化wqline/!五個(gè)地方填空/支持串行化,需要使用宏定義class wqLine :public CObject /!
21、DECLARE_SERIAL(wqLine) /!POINT sp,ep;public:wqLine();wqLine(POINT sp,POINT ep);virtual wqLine();void Draw(CDC *pDC);virtual void Serialize(CArchive& ar); /!;CTestDoc serializationvoid CTestDoc:Serialize(CArchive& ar)if (ar.IsStoring()if(pLine!=NULL)pLine->Serialize(ar);elsepLine=new wqLin
22、e();pLine->Serialize(ar);public:wqLine * pLine;virtual CTestDoc();控件:CListCtrl CTreeView(樹(shù)形控件給層次結(jié)構(gòu)寫(xiě)代碼) void CTestDlg:OnButton1() HTREEITEM root=m_Tree.InsertItem("Parent",TVI_ROOT,TVI_LAST) ;m_Tree.InsertItem("son1",root,TVI_LAST) ;HTREEITEM son2=m_Tree.InsertItem("son2&q
23、uot;,root,TVI_LAST) ;m_Tree.InsertItem("son3",root,TVI_LAST) ;m_Tree.InsertItem("sonson1",son2,TVI_LAST) ;m_Tree.InsertItem("sonson2",son2,TVI_LAST) ;m_Tree.InsertItem("sonson3",son2,TVI_LAST) ;m_Tree.Expand(root,TVE_EXPAND);m_Tree.Expand(son2,TVE_EXPAND);void
24、 CTestDlg:OnSelchangedTree1(NMHDR* pNMHDR, LRESULT* pResult) NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;HTREEITEM p=m_Tree.GetSelectedItem();HTREEITEM parent=m_Tree.GetParentItem(p); CString ptext = m_Tree.GetItemText(p); CString parenttext = m_Tree.GetItemText(parent); AfxMessageBox(ptext + &q
25、uot;n" + parenttext);*pResult = 0;3 基本編程能力顯示對(duì)話框(考)列表框、組合框的操作(2選1)列表框:void CTestDlg:OnButtonappend() static int n=0;n+;CString s;s.Format("aaaaa %d", n) ;m_lstName.AddString (s);void CTestDlg:OnSelchangeListname() int index=m_lstName.GetCurSel() ;CString s;s.Format("index=%d"
26、, index) ; CString name;m_lstName.GetText(index, name); m_Name=s+": "+name;UpdateData(FALSE);組合框(droplist):void CTestDialog:OnButtonFill() CString ss7="星期一","星期二","星期三", "星期四","星期五","星期六","星期日" m_Combo1.ResetContent(); f
27、or(int i=0; i<7; i+) m_Combo1.AddString(ssi); m_Combo1.SetCurSel(0); / 必要 for( i=0; i<7; i+) m_Combo3.AddString(ssi);void CTestDialog:OnButtonClear() int n=m_Combo1.GetCount(); for(int i=n-1; i>=0; i-) m_Combo1.DeleteString(i); m_Combo1.SetCurSel(-1);void CTestDialog:OnSelchangeCombo1() int
28、 index=m_Combo1.GetCurSel(); CString s; m_Combo1.GetLBText(index, s); AfxMessageBox(s);void CTestDialog:OnEditchangeCombo3() CString s;m_Combo3.GetWindowText(s);m_Combo3.AddString(s);void CTestDialog:OnButtonFill() CString ss7="星期一","星期二","星期三","星期四", "星期
29、五","星期六","星期日" for(int i=0; i<7; i+) m_Combo1.AddString(ssi); m_Combo1.SetCurSel(0); void CTestDialog:OnButtonAppend() CString s; m_Combo1.GetWindowText(s); if(m_Combo1.FindString(0,s)=CB_ERR) m_Combo1.AddString(s); 繪圖程序(考)4 基本實(shí)踐能力(試圖條理清晰) 本學(xué)期你一定編寫(xiě)了一些窗口程序,或者經(jīng)歷了一些窗口程序的開(kāi)發(fā)過(guò)程。請(qǐng)寫(xiě)出其中你認(rèn)為最精彩的程序的設(shè)計(jì)方案。設(shè)計(jì)方案應(yīng)包括:程序的流程,類的組成,類中的核心數(shù)據(jù)成員,核心函數(shù)。貪吃蛇游戲程序流程:在菜單欄點(diǎn)擊按鈕“游戲”,選擇“開(kāi)始”,出現(xiàn)游戲頁(yè)面(矩形的游戲邊界、方塊體圓頭的貪吃蛇和方形食物),點(diǎn)擊方向按鈕啟動(dòng)游戲蛇開(kāi)始運(yùn)動(dòng),四個(gè)方向鍵控制蛇的方向。當(dāng)蛇頭接觸食物時(shí)食物消失,彈出“勝利”對(duì)話
溫馨提示
- 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 度戰(zhàn)略采購(gòu)合同解析
- 車位購(gòu)置合同范本
- 設(shè)備采購(gòu)代理合同
- 2025年超限構(gòu)件運(yùn)輸合同范文參考
- 2025年廣告銷售合同模板
- 國(guó)際物流合同范本協(xié)議書(shū)(例文)
- 家庭教育輔導(dǎo)合同范本
- 2025年雙方策劃同意和平解除勞動(dòng)合同示范文本
- 知名餐飲品牌區(qū)域代理授權(quán)合同范本
- 2025年企業(yè)用材購(gòu)買合同示范文本
- 《人工智能發(fā)展史》課件
- 經(jīng)濟(jì)學(xué)原理(雙語(yǔ))-教學(xué)大綱
- 臨床用血管理培訓(xùn)
- 介入手術(shù)室護(hù)理風(fēng)險(xiǎn)
- 春季安全行車教育培訓(xùn)
- 糖尿病飲食指南食譜
- 2024年6月第3套英語(yǔ)六級(jí)真題
- 2024年江蘇省公務(wù)員錄用考試《行測(cè)》題(A類)
- 2024年律師事務(wù)所代收款協(xié)議書(shū)模板
- 中國(guó)PHM系統(tǒng)行業(yè)政策、市場(chǎng)規(guī)模及投資前景研究報(bào)告(智研咨詢發(fā)布)
- 電梯維保安全培訓(xùn)
評(píng)論
0/150
提交評(píng)論