版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、1 MFC程序的基本操作流程1利用ClassWizard為控件添加成員變量時,請寫出所有的代碼變化。(必考)將控件定義為CMy0901Dlg類的成員: CStringm_yyy;在CMy0901Dlg:DoDataExchange()中,自動維護DDX_Control() DDX_Text(pDX, IDC_EDIT1, m_yyy);在CMy0904Dlg:CMy0904Dlg()中初始化 m_yyy = _T("");2 利用ClassWizard為控件添加映射函數(shù)時,請寫出所有的代碼變化。(必考)在CMy0901Dlg類定義中,說明了以上函數(shù):afx_msg void
2、 OnButton1();在CMy0901Dlg類實現(xiàn)中,創(chuàng)建控件CLICKED消息對應(yīng)的函數(shù): void CMy0901Dlg:OnButton1() 在CMy0901Dlg類實現(xiàn)中,在BEGIN_MESSAGE_MAP宏中,關(guān)聯(lián)事件和函數(shù):ON_BN_CLICKED(IDC_BUTTON1, OnButton1)3 常用事件的含義(抽五個)視圖事件:WM_SIZE:改變窗口大小 WM_DESTROY:銷毀窗口 WM_TIMER: WM_CREATE:創(chuàng)建窗口對話框 WM_INITDIALOG對話框上所有的子控件創(chuàng)建完成之后選擇發(fā)送的消息 WM_PAINT:繪制窗口 WM_CLOSE:按鈕
3、BN_CLICKED 單擊了窗口菜單列表框:LBN_SELCHANGE列表框某項的選擇被取消 LBN_DBLCLK雙擊了列表框的某一項編輯框EN_CHANGE 編輯框中的文本被更新4 常用的虛函數(shù)的作用(都考)文檔類:OnOpenDocument OnSaveDocument Serialize 視圖類:OnUpdate OnDraw應(yīng)用程序類InitInstance 框架類PreCreateWindow OnCreateClient5 框架類的理解利用MFC的APPWizard創(chuàng)建一個應(yīng)用工程。簡述MFC自動生成了哪些類及其功能2 窗口程序中基本元素的操作技術(shù)(讀程序、補充程序)快捷菜單、動
4、態(tài)菜單動態(tài)菜單(兩個函數(shù)流程意思)/! / 獲得程序菜單指針CMenu* pMenu = GetMenu(); / 獲得第二個子菜單的指針 CMenu* pMenu1 = pMenu->GetSubMenu(1); / 添加一個分隔線pMenu1->AppendMenu(MF_SEPARATOR); / 在子菜單中增加一菜單項pMenu1->AppendMenu(MF_STRING,ID_NEW_MENUITEM+0,"新項1");/?AppendMenu ? ID_NEW_MENUITEM +0,"新項1" ?/ 避免系統(tǒng)將“無代碼的
5、菜單項”自動置虛m_bAutoMenuEnable = FALSE; / 自動更新菜單狀態(tài)開關(guān) / 修改菜單后,應(yīng)重畫菜單 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("你選中了新的菜單項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);時鐘與作圖(讀程序或補程序)圖形加刷子(?)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 某個成員變量(dcimage)的信息)數(shù)據(jù)庫(連接字符串。關(guān)閉鏈接顯示數(shù)據(jù)庫)位圖: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)(長寬字節(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ù)庫: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/!五個地方填空/支持串行化,需要使用宏定義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(樹形控件給層次結(jié)構(gòu)寫代碼) 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 基本編程能力顯示對話框(考)列表框、組合框的操作(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 基本實踐能力(試圖條理清晰) 本學(xué)期你一定編寫了一些窗口程序,或者經(jīng)歷了一些窗口程序的開發(fā)過程。請寫出其中你認為最精彩的程序的設(shè)計方案。設(shè)計方案應(yīng)包括:程序的流程,類的組成,類中的核心數(shù)據(jù)成員,核心函數(shù)。貪吃蛇游戲程序流程:在菜單欄點擊按鈕“游戲”,選擇“開始”,出現(xiàn)游戲頁面(矩形的游戲邊界、方塊體圓頭的貪吃蛇和方形食物),點擊方向按鈕啟動游戲蛇開始運動,四個方向鍵控制蛇的方向。當(dāng)蛇頭接觸食物時食物消失,彈出“勝利”對話
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全球及中國中置電機自行車行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國PTZ電子體積校正器行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國軍用飛行器模擬器行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國工業(yè)木鋸機行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 期末測試卷01【考試范圍:6-10單元】(原卷版)
- 2025國際商業(yè)代理合同詳細版樣本
- 擔(dān)保合同范文集錦年
- 健身房私教合同范文
- 電力設(shè)備采購合同模板
- 2025XL數(shù)字地震儀器租賃合同
- 《瘋狂動物城》全本臺詞中英文對照
- 中專數(shù)學(xué)(基礎(chǔ)模塊)上冊課件
- 高考作文復(fù)習(xí)任務(wù)驅(qū)動型作文的審題立意課件73張
- 品質(zhì)部經(jīng)理KRA KPI考核表
- 國家中小學(xué)智慧教育平臺推動家校共育
- 《馬克思主義與社會科學(xué)方法論》授課教案
- 一個28歲的漂亮小媳婦在某公司打工-被老板看上之后
- 馬工程教育哲學(xué)課件第十章 教育哲學(xué)與教師發(fā)展
- GB/T 11376-2020金屬及其他無機覆蓋層金屬的磷化膜
- 成功源于自律 主題班會課件(共34張ppt)
- 新青島版(五年制)五年級下冊小學(xué)數(shù)學(xué)全冊導(dǎo)學(xué)案(學(xué)前預(yù)習(xí)單)
評論
0/150
提交評論