版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、不可多得的好資料Windows程序設(shè)計(jì)(VC+.NET)上機(jī)實(shí)驗(yàn)指導(dǎo)書中原工學(xué)院計(jì)算機(jī)科學(xué)系郭清宇實(shí)驗(yàn)一Visual C+ .NET集成開發(fā)環(huán)境的使用1、 實(shí)驗(yàn)?zāi)康氖煜isual C+ .NET集成開發(fā)環(huán)境,了解菜單和工具欄的功能。掌握生成應(yīng)用程序框架的過(guò)程,熟悉解決方案資源管理器、類視圖、資源視圖,初步掌握文檔-視圖結(jié)構(gòu)。2、 實(shí)驗(yàn)內(nèi)容(1) Visual C+ NET的IDE環(huán)境了解集成開發(fā)環(huán)境的菜單功能,掌握程序的編譯、連接、運(yùn)行及調(diào)試方法。(2) 應(yīng)用程序的生成能利用集成開發(fā)環(huán)境生成Single document、Multiple documents、Dialog based三個(gè)應(yīng)用
2、程序框架,熟悉握生成應(yīng)用程序框架的步驟。使用解決方案資源管理器、類視圖、資源視圖,瀏覽生成三個(gè)應(yīng)用程序中包含的文件、類及資源信息,熟悉它們的作用。初步掌握基于MFC的Windows應(yīng)用程序框架結(jié)構(gòu),理解文檔-視圖結(jié)構(gòu)。實(shí)例1:建立跨平臺(tái)應(yīng)用程序目的:使用AppWizard向?qū)?chuàng)建一個(gè)MFC應(yīng)用程序,運(yùn)行后只顯示一個(gè)標(biāo)準(zhǔn)Windows 窗口。1)啟動(dòng)VS.NET,選擇新建項(xiàng)目,類型選擇“VC+項(xiàng)目”,模板選擇“MFC應(yīng)用程序”。指定路徑,輸入項(xiàng)目名稱,單擊確定。應(yīng)用程序類型選擇“單文檔”;復(fù)合文檔支持、數(shù)據(jù)庫(kù)支持、用戶界面、生成類等接受系統(tǒng)默認(rèn)設(shè)置。2)單擊菜單“生成、生成解決方案”編輯程序;3
3、)單擊菜單“調(diào)試、啟動(dòng)”運(yùn)行程序。實(shí)例2:創(chuàng)建控制臺(tái)應(yīng)用程序目的:創(chuàng)建DOS界面的應(yīng)用程序。1)啟動(dòng)VS.NET,選擇新建項(xiàng)目,類型選擇“VC+項(xiàng)目”,模板選擇“Win32項(xiàng)目”,指定路徑,輸入項(xiàng)目名稱,單擊確定。應(yīng)用程序類型選擇“控制臺(tái)應(yīng)用程序”,選擇“空項(xiàng)目”,單擊“完成”2)在“解決方案資源管理器”右鍵單擊“源文件”,選擇“添加、添加新項(xiàng)”。選擇“C+文件(.cpp)”,單擊“打開”。3)添加代碼;#include<iostream.h> /預(yù)編譯c+頭文件void main() int x=0,y=0,sum=0; /聲明三個(gè)代表整數(shù)的符號(hào):x,y為兩個(gè)被加的數(shù),sum為和
4、 /它們的初值都為0 cout<<"Enter 2 integers separated by space:" /界面提示用戶輸入 cin>>x>>y; /輸入操作 sum=x+y; /加操作 cout<<"The sum is:" /界面:提示用戶將得到輸出 <<sum /輸出sum <<endl; /輸出一個(gè)換行單擊菜單“生成、生成解決方案”編輯程序;單擊菜單“調(diào)試、啟動(dòng)”運(yùn)行程序。實(shí)例3:應(yīng)用程序窗口初始化目的:初始化Windows 窗口。1)啟動(dòng)VS.NET,選擇新建項(xiàng)目,類
5、型選擇“VC+項(xiàng)目”,模板選擇“MFC應(yīng)用程序”。指定路徑,輸入項(xiàng)目名稱,單擊確定。應(yīng)用程序類型選擇“單文檔”;復(fù)合文檔支持、數(shù)據(jù)庫(kù)支持、用戶界面、生成類等接受系統(tǒng)默認(rèn)設(shè)置。2)添加代碼:在MainFrm.CPP中添加(黑體部分)BOOL CMainFrame:PreCreateWindow(CREATESTRUCT& cs)if( !CFrameWnd:PreCreateWindow(cs) )return FALSE;/初始化應(yīng)用程序窗口大小和位置 int xSize = :GetSystemMetrics (SM_CXSCREEN); int ySize = :GetSystem
6、Metrics (SM_CYSCREEN); cs.cx = xSize*2/3; cs.cy = ySize*2/3; cs.x = (xSize-cs.cx)/2; cs.y = (ySize-cs.cy)/2; cs.style &=(WS_MAXIMIZEBOX|WS_MINIMIZEBOX); /去掉最小化和最大化按鈕 cs.style &=WS_THICKFRAME; /使窗口大小固定 cs.style &=FWS_ADDTOTITLE; /去掉無(wú)標(biāo)題 m_strTitle="My Program" /改變窗口標(biāo)題內(nèi)容/ TODO: 在此
7、處通過(guò)修改 CREATESTRUCT cs 來(lái)修改窗口類或/ 樣式return TRUE;3)單擊菜單“生成、生成解決方案”編輯程序。4)單擊菜單“調(diào)試、啟動(dòng)”運(yùn)行程序。實(shí)例4:改變應(yīng)用程序窗口圖標(biāo)目的:對(duì)Windows 窗口進(jìn)行個(gè)性化設(shè)置。1)啟動(dòng)VS.NET,選擇新建項(xiàng)目,類型選擇“VC+項(xiàng)目”,模板選擇“MFC應(yīng)用程序”。指定路徑,輸入項(xiàng)目名稱,單擊確定。應(yīng)用程序類型選擇“單文檔”;復(fù)合文檔支持、數(shù)據(jù)庫(kù)支持、用戶界面、生成類等接受系統(tǒng)默認(rèn)設(shè)置。2)打開資源視圖窗口,刪除“IDR_MAINFRAME”圖標(biāo)。3)添加圖標(biāo)資源,設(shè)置圖標(biāo)ID為IDR_MAINFRAME。4)單擊菜單“生成、生成
8、解決方案”編輯程序。5)單擊菜單“調(diào)試、啟動(dòng)”運(yùn)行程序。注意:添加資源前,需要將添加的圖標(biāo)文件拷貝到對(duì)應(yīng)項(xiàng)目文件夾的“res”文件夾中。實(shí)驗(yàn)二文檔、視圖模型與 MFC1. 實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)文檔、視圖模型。包括文檔、視圖概念、作用和相互關(guān)系;掌握如何創(chuàng)建文檔視圖應(yīng)用程序的方法;以及多文檔視圖界面應(yīng)用程序的架構(gòu)和創(chuàng)建方法。2. 實(shí)驗(yàn)內(nèi)容初步掌握基于MFC的Windows應(yīng)用程序框架結(jié)構(gòu),理解文檔-視圖結(jié)構(gòu)。實(shí)例一:滾動(dòng)視圖1.新建項(xiàng)目啟動(dòng)“Visual Studio.Net”,選擇新建項(xiàng)目,類型選擇“Visual C+項(xiàng)目”,模板選擇“MFC應(yīng)用程序”,輸入項(xiàng)目名稱t8,單擊確定。生成的類中,基類選擇
9、CscrollView,其他接受系統(tǒng)默認(rèn)值,單擊完成。2.修改“t8view.cpp”文件中的代碼:void Ct8View:OnInitialUpdate()CScrollView:OnInitialUpdate();CSize sizeTotal;/ TODO: 計(jì)算此視圖的合計(jì)大小sizeTotal.cx = sizeTotal.cy = 100; /此處100為出現(xiàn)滾動(dòng)條時(shí)的窗口大小,將此值適當(dāng)增大。SetScrollSizes(MM_TEXT, sizeTotal);3.編譯運(yùn)行程序?qū)嵗悍指钜晥D1.新建項(xiàng)目啟動(dòng)“Visual Studio.Net”,選擇新建項(xiàng)目,類型選擇“Vis
10、ual C+項(xiàng)目”,模板選擇“MFC應(yīng)用程序”,輸入項(xiàng)目名稱t9,單擊確定。用戶界面功能中選擇“拆分窗口”,其他接受系統(tǒng)默認(rèn)值,單擊完成。2.修改“ChildFrm.cpp”文件中的代碼:BOOL CChildFrame:OnCreateClient(LPCREATESTRUCT /*lpcs*/, CCreateContext* pContext)return m_wndSplitter.Create(this,1, 2,/ TODO:調(diào)整行號(hào)和列號(hào)CSize(10, 10),/ TODO: 調(diào)整最小窗格大小pContext);3.編譯運(yùn)行程序選擇菜單命令“窗口、拆分”。當(dāng)前窗口將被拆分成指
11、定樣式。實(shí)例三:列表視圖1.新建項(xiàng)目啟動(dòng)“Visual Studio.Net”,選擇新建項(xiàng)目,類型選擇“Visual C+項(xiàng)目”,模板選擇“MFC應(yīng)用程序”,輸入項(xiàng)目名稱listview,單擊確定。生成的類中,基類選擇CListView,其他接受系統(tǒng)默認(rèn)值,單擊完成。2.在listviewView.cpp中添加代碼BOOL CListViewView:PreCreateWindow(CREATESTRUCT& cs)/ TODO: 在此處通過(guò)修改 CREATESTRUCT cs 來(lái)修改窗口類或/ 樣式return CListView:PreCreateWindow(cs);void C
12、ListViewView:OnInitialUpdate()CListView:OnInitialUpdate();/ TODO: 調(diào)用 GetListCtrl() 直接訪問(wèn) ListView 的列表控件,/ 從而可以用項(xiàng)填充 ListView。/設(shè)置列表控件的風(fēng)格,為“報(bào)表”風(fēng)格GetListCtrl().ModifyStyle(0,LVS_REPORT|LVS_SHOWSELALWAYS|LVS_SORTASCENDING) ; /設(shè)置兩種列表控件風(fēng)格:第一種擴(kuò)展風(fēng)格,在列表上畫線,分隔行和列;第二種風(fēng)格允許用戶選中整行。 GetListCtrl().SendMessage(LVM_SET
13、EXTENDEDLISTVIEWSTYLE,0, LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT) ; CDC* pDC = GetDC();/獲得設(shè)備環(huán)境對(duì)象 TEXTMETRIC tm; pDC->GetTextMetrics(&tm) ; /定義列表頭 GetListCtrl().InsertColumn (0,"姓名",LVCFMT_LEFT,20*tm.tmAveCharWidth, 0); GetListCtrl().InsertColumn (1,"地址",LVCFMT_LEFT,80*tm.tmA
14、veCharWidth, 1); / CListViewView 診斷3.編譯運(yùn)行程序?qū)嶒?yàn)三對(duì)話框和控件基本知識(shí)(一)1. 實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)對(duì)話框和控件的基本知識(shí)和應(yīng)用。3. 實(shí)驗(yàn)內(nèi)容初步掌握模態(tài)對(duì)話框和非模態(tài)對(duì)話框的概念,了解各種Windows標(biāo)準(zhǔn)控件的功能和使用方法,以及對(duì)話框和控件的設(shè)計(jì)、初始化、通知消息等概念。實(shí)例1:設(shè)置對(duì)話框背景色1.新建項(xiàng)目類型:Visual C+項(xiàng)目;模板:MFC應(yīng)用程序;項(xiàng)目名稱:BgColorDlg;應(yīng)用程序類型:基于對(duì)話框。2.對(duì)話框編輯器選擇菜單“視圖、資源視圖”命令,打開資源視圖編輯框,設(shè)置屬性。3.添加代碼(1)建立WM_CTLCOLOR消息的相應(yīng)函數(shù):
15、在屬性框里,單擊消息圖標(biāo),設(shè)置WM_CTLCOLOR消息的相應(yīng)函數(shù)為:ONCtlColor。(2)添加成員變量在BgColorDlgDlg.h頭文件中添加成員變量(斜體字)/ CBgColorDlgDlg 對(duì)話框class CBgColorDlgDlg : public CDialog/ 構(gòu)造public:CBgColorDlgDlg(CWnd* pParent = NULL);/ 標(biāo)準(zhǔn)構(gòu)造函數(shù)public: CBrush m_brush;/創(chuàng)建畫刷對(duì)象在BgColorDlgDlg.cpp : 實(shí)現(xiàn)文件中添加以下代碼:SetIcon(m_hIcon, TRUE);/ 設(shè)置大圖標(biāo)SetIcon(
16、m_hIcon, FALSE);/ 設(shè)置小圖標(biāo)/ TODO:在此添加額外的初始化代碼m_brush.CreateSolidBrush(RGB(255,255,200);/初始化畫刷return TRUE; / 除非設(shè)置了控件的焦點(diǎn),否則返回 TRUEHBRUSH CBgColorDlgDlg:OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)HBRUSH hbr = CDialog:OnCtlColor(pDC, pWnd, nCtlColor);/ TODO: 在此更改 DC 的任何屬性return m_brush;/ TODO: 如果默認(rèn)的不是
17、所需畫筆,則返回另一個(gè)畫筆/return hbr;4. 編譯執(zhí)行程序?qū)嵗?:模態(tài)對(duì)話框1.新建項(xiàng)目類型:Visual C+項(xiàng)目;模板:MFC應(yīng)用程序;項(xiàng)目名稱:ModalDlg;應(yīng)用程序類型:?jiǎn)挝臋n。2.新建對(duì)話框選擇菜單“視圖、資源視圖”、打開資源視圖編輯框,插入新對(duì)話框資源。設(shè)計(jì)新對(duì)話框,標(biāo)題為“模態(tài)對(duì)話框”。3添加代碼(1)增加一個(gè)頭文件MyDlg.h#pragma once/ CMyDlg 對(duì)話框class CMyDlg : public CDialogDECLARE_DYNAMIC(CMyDlg)public:CMyDlg(CWnd* pParent = NULL); / 標(biāo)準(zhǔn)構(gòu)造函
18、數(shù)virtual CMyDlg();/ 對(duì)話框數(shù)據(jù)enum IDD = IDD_DIALOG1 ;protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV 支持DECLARE_MESSAGE_MAP();(2) 增加一個(gè)C+文件MyDlg.cpp/ MyDlg.cpp : 實(shí)現(xiàn)文件/#include "stdafx.h"#include "ModalDlg.h"#include "MyDlg.h"/ CMyDlg 對(duì)話框IMPLEMENT_DYNAMIC(
19、CMyDlg, CDialog)CMyDlg:CMyDlg(CWnd* pParent /*=NULL*/): CDialog(CMyDlg:IDD, pParent)CMyDlg:CMyDlg()void CMyDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);BEGIN_MESSAGE_MAP(CMyDlg, CDialog)END_MESSAGE_MAP()(3)在資源視圖中雙擊Menu、IDR_MAINFRAME,打開菜單編輯器,添加新菜單。在視圖菜單的狀態(tài)欄下增加“模態(tài)對(duì)話框”菜單,并在其屬性欄中將ID
20、修改為ID_VIEW_MODALDLG。選擇菜單“視圖、類視圖”、選擇CmodalDlgView類,打開其屬性菜單;單擊屬性菜單中的事件按鈕,選擇ID_VIEW_MODALDLG,點(diǎn)擊左側(cè)的“+”號(hào),選擇“COMMAND”,在右側(cè)為CmodalDlgView類添加菜單響應(yīng)函數(shù)OnViewModaldlg()。Void CmodalDlgView:OnViewModaldlg()/TODO: 在此添加命令處理程序代碼CMyDlg m_Dlg;/創(chuàng)建自定義對(duì)話框?qū)ο髆_Dlg.DoModal ();/啟動(dòng)對(duì)話框(4)在ModalDlgView.cpp中的起始位置添加#include "M
21、yDlg.h"4.編譯、運(yùn)行運(yùn)行程序,選擇視圖、模態(tài)對(duì)話框命令,顯示模態(tài)對(duì)話框。實(shí)例3:非模態(tài)對(duì)話框1.新建項(xiàng)目類型:Visual C+項(xiàng)目;模板:MFC應(yīng)用程序;項(xiàng)目名稱:ModallessDlg;應(yīng)用程序類型:?jiǎn)挝臋n。2.新建對(duì)話框選擇菜單“視圖、資源視圖”、打開資源視圖編輯框,插入新對(duì)話框資源。設(shè)計(jì)新對(duì)話框,標(biāo)題為“非模態(tài)對(duì)話框”。3添加代碼(1)增加一個(gè)頭文件MyDlg.h#pragma once/ CMyDlg 對(duì)話框class CMyDlg : public CDialogDECLARE_DYNAMIC(CMyDlg)public:CMyDlg(CWnd* pParent
22、 = NULL); / 標(biāo)準(zhǔn)構(gòu)造函數(shù)virtual CMyDlg();/ 對(duì)話框數(shù)據(jù)enum IDD = IDD_DIALOG1 ;protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV 支持DECLARE_MESSAGE_MAP();(2)增加一個(gè)C+文件MyDlg.cpp#include "stdafx.h"#include "ModallessDlg.h"#include "MyDlg.h"/ CMyDlg 對(duì)話框IMPLEMENT_DYNAMIC
23、(CMyDlg, CDialog)CMyDlg:CMyDlg(CWnd* pParent /*=NULL*/): CDialog(CMyDlg:IDD, pParent)CMyDlg:CMyDlg()void CMyDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);BEGIN_MESSAGE_MAP(CMyDlg, CDialog)END_MESSAGE_MAP()(3)在資源視圖中雙擊Menu、IDR_MAINFRAME,打開菜單編輯器,添加新菜單。在視圖菜單的狀態(tài)欄下增加“非模態(tài)對(duì)話框”菜單,并在其屬性欄中將
24、ID修改為ID_VIEW_MODALLESSDLG。選擇菜單“視圖、類視圖”、選擇CmodallessDlgView類,打開其屬性菜單;單擊屬性菜單中的事件按鈕,選擇ID_VIEW_MODALLESSDLG,點(diǎn)擊左側(cè)的“+”號(hào),選擇“COMMAND”,在右側(cè)為CmodalDlgView類添加菜單響應(yīng)函數(shù)OnViewModaldlg()。在ModalDlgView.cpp中添加代碼:/ ModallessDlgView.cpp : CModallessDlgView 類的實(shí)現(xiàn)/#include "stdafx.h"#include "ModallessDlg.h&q
25、uot;#include "MyDlg.h"#include "ModallessDlgDoc.h"#include "ModallessDlgView.h"#ifdef _DEBUG#define new DEBUG_NEW#endif/ CModallessDlgViewIMPLEMENT_DYNCREATE(CModallessDlgView, CView)BEGIN_MESSAGE_MAP(CModallessDlgView, CView)/ 標(biāo)準(zhǔn)打印命令ON_COMMAND(ID_FILE_PRINT, CView:OnFi
26、lePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView:OnFilePrintPreview)ON_COMMAND(ID_VIEW_MODALLESSDLG, OnViewModallessdlg)END_MESSAGE_MAP()/ CModallessDlgView 構(gòu)造/銷毀CModallessDlgView:CModallessDlgView()/ TODO: 在此處添加構(gòu)造代碼m_pDlg=NULL;/初始化指針對(duì)象CModallessDlgV
27、iew:CModallessDlgView()if(m_pDlg!=NULL)delete m_pDlg;/釋放指針對(duì)象空間BOOL CModallessDlgView:PreCreateWindow(CREATESTRUCT& cs)/ TODO: 在此處通過(guò)修改 CREATESTRUCT cs 來(lái)修改窗口類或/ 樣式return CView:PreCreateWindow(cs);/ CModallessDlgView 繪制void CModallessDlgView:OnDraw(CDC* /*pDC*/)CModallessDlgDoc* pDoc = GetDocument(
28、);ASSERT_VALID(pDoc);/ TODO: 在此處為本機(jī)數(shù)據(jù)添加繪制代碼/ CModallessDlgView 打印BOOL CModallessDlgView:OnPreparePrinting(CPrintInfo* pInfo)/ 默認(rèn)準(zhǔn)備return DoPreparePrinting(pInfo);void CModallessDlgView:OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: 打印前添加額外的初始化void CModallessDlgView:OnEndPrinting(CDC* /*
29、pDC*/, CPrintInfo* /*pInfo*/)/ TODO: 打印后添加清除過(guò)程/ CModallessDlgView 診斷#ifdef _DEBUGvoid CModallessDlgView:AssertValid() constCView:AssertValid();void CModallessDlgView:Dump(CDumpContext& dc) constCView:Dump(dc);CModallessDlgDoc* CModallessDlgView:GetDocument() const / 非調(diào)試版本是內(nèi)聯(lián)的ASSERT(m_pDocument-&
30、gt;IsKindOf(RUNTIME_CLASS(CModallessDlgDoc);return (CModallessDlgDoc*)m_pDocument;#endif /_DEBUG/ CModallessDlgView 消息處理程序void CModallessDlgView:OnViewModallessdlg()/ TODO: 在此添加命令處理程序代碼if(m_pDlg=NULL)m_pDlg=new CMyDlg;/為指針對(duì)象分配空間m_pDlg->Create(IDD_DIALOG1,this);/創(chuàng)建對(duì)話框資源m_pDlg->ShowWindow(SW_SHO
31、W);/顯示對(duì)話框在ModallessDlgView.h文件中添加代碼:/ ModallessDlgView.h : CModallessDlgView 類的接口/#include "MyDlg.h"#pragma onceclass CModallessDlgView : public CViewprotected: / 僅從序列化創(chuàng)建CModallessDlgView();DECLARE_DYNCREATE(CModallessDlgView)/ 屬性public:CModallessDlgDoc* GetDocument() const;/ 操作public:CMyD
32、lg * m_pDlg;/創(chuàng)建指向?qū)υ捒蝾愔羔? 重寫public:virtual void OnDraw(CDC* pDC); / 重寫以繪制該視圖virtual BOOL PreCreateWindow(CREATESTRUCT& cs);protected:virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
33、/ 實(shí)現(xiàn)public:virtual CModallessDlgView();#ifdef _DEBUGvirtual void AssertValid() const;virtual void Dump(CDumpContext& dc) const;#endifprotected:/ 生成的消息映射函數(shù)protected:DECLARE_MESSAGE_MAP()public:afx_msg void OnViewModallessdlg();#ifndef _DEBUG / ModallessDlgView.cpp 的調(diào)試版本inline CModallessDlgDoc* CM
34、odallessDlgView:GetDocument() const return reinterpret_cast<CModallessDlgDoc*>(m_pDocument); #endif實(shí)例4:消息框1.新建項(xiàng)目類型:Visual C+項(xiàng)目;模板:MFC應(yīng)用程序;項(xiàng)目名稱:MsgBox;應(yīng)用程序類型選擇“基于對(duì)話框”。2.新建對(duì)話框選擇菜單“視圖、資源視圖”、打開資源視圖編輯框,選中DialogIDD_MSGBOX_DIALOG,展開對(duì)話框編輯器,設(shè)計(jì)對(duì)話框。增加兩個(gè)按鈕控件,標(biāo)題分別為“彈出消息框1”和“彈出消息框2”。將兩個(gè)按鈕控件的ID屬性修改為Msgbox1和M
35、sgbox2。3添加代碼單擊按鈕控件,為兩個(gè)控件添加代碼:void CMsgBoxDlg:OnBnClickedMsgbox1()/ TODO: 在此添加控件通知處理程序代碼/創(chuàng)建消息框MessageBox("程序運(yùn)行出錯(cuò),是否繼續(xù)","提示",MB_ICONWARNING+MB_YESNO+MB_DEFBUTTON1);void CMsgBoxDlg:OnBnClickedMsgbox2()/ TODO: 在此添加控件通知處理程序代碼/創(chuàng)建消息框AfxMessageBox("你好!");4.編譯運(yùn)行實(shí)驗(yàn)四對(duì)話框和控件基本知識(shí)(二)1
36、. 實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)對(duì)話框和控件的基本知識(shí)和應(yīng)用。5. 實(shí)驗(yàn)內(nèi)容初步掌握模態(tài)對(duì)話框和非模態(tài)對(duì)話框的概念,了解各種Windows標(biāo)準(zhǔn)控件的功能和使用方法,以及對(duì)話框和控件的設(shè)計(jì)、初始化、通知消息等概念。實(shí)例一:列表框要點(diǎn):InsertItem函數(shù):插入新條目。 SetItemText函數(shù):改變條目中的文本。1.新建項(xiàng)目類型:Visual C+項(xiàng)目;模板:MFC應(yīng)用程序;項(xiàng)目名稱:ListDlg;應(yīng)用程序類型:基于對(duì)話框。2.對(duì)話框編輯設(shè)計(jì)對(duì)話框, 添加一個(gè)列表框控件:List Control,將View屬性改為“報(bào)告”。ID改為IDD_LIST_DIALOG添加一個(gè)靜態(tài)文本控件:Static Tex
37、t,將Caption屬性改為“學(xué)生”。添加一個(gè)文本編輯控件:Edit Control,將Read Only屬性改為“True”。如圖所示:3.添加代碼:實(shí)例二:組合框要點(diǎn):AddString函數(shù):插入新條目。1.新建項(xiàng)目類型:Visual C+項(xiàng)目;模板:MFC應(yīng)用程序;項(xiàng)目名稱:CombolBoxDlg;應(yīng)用程序類型:基于對(duì)話框。2.對(duì)話框編輯設(shè)計(jì)對(duì)話框, 添加一個(gè)組合框控件。如圖所示:3.添加代碼:實(shí)例三:彈出式菜單要點(diǎn):TrackPopupMenu 函數(shù)定義了彈出菜單項(xiàng)及位置。1.新建項(xiàng)目類型:Visual C+項(xiàng)目;模板:MFC應(yīng)用程序;項(xiàng)目名稱:PopMenu;應(yīng)用程序類型:?jiǎn)挝臋n。
38、2.創(chuàng)建新菜單打開資源視圖編輯框,單擊鼠標(biāo)右鍵,選擇“插入Menu”,建立新菜單“IDR_MENU1”,雙擊IDR_MENU1,編輯新菜單。如圖:3.為CpopMenuView類添加鼠標(biāo)右鍵響應(yīng)函數(shù):打開類視圖,選擇CpopMenuView類,在屬性框中單擊消息圖標(biāo),添加消息處理函數(shù)。如圖:4.添加代碼:編輯PopMenuView.cpp文件/ CPopMenuView 消息處理程序void CPopMenuView:OnRButtonDown(UINT nFlags, CPoint point)/ TODO: 在此添加消息處理程序代碼和/或調(diào)用默認(rèn)值CMenu menu;/創(chuàng)建菜單對(duì)象men
39、u.LoadMenu(IDR_MENU1);/裝載菜單CMenu* pM=menu.GetSubMenu(0);/獲得子級(jí)菜單CPoint pt;/創(chuàng)建點(diǎn)對(duì)象GetCursorPos(&pt);/獲得鼠標(biāo)位置pM->TrackPopupMenu(TPM_LEFTALIGN,pt.x,pt.y,this);/在指定位置顯示彈出菜單CView:OnRButtonDown(nFlags, point);實(shí)例四:編輯工具欄,增加工具欄按鈕1.新建項(xiàng)目類型:Visual C+項(xiàng)目;模板:MFC應(yīng)用程序;項(xiàng)目名稱:ToolBar;應(yīng)用程序類型:?jiǎn)挝臋n。2.添加菜單代碼和工具欄按鈕打開資源視圖
40、編輯框,展開菜單,在視圖菜單下增加一新的菜單命令“新增工具按鈕”,將ID改為AddTool,打開類視圖,找到ID_AddTool,為其添加命令響應(yīng)函數(shù)OnAddtool/ CToolBarView 消息處理程序void CToolBarView:OnAddtool()/ TODO: 在此添加命令處理程序代碼AfxMessageBox("新增工具欄按鈕");/消息對(duì)話框選擇“ToolBar|IDR_MAINFRAME”,展開工具欄編輯器,新增工具按鈕,將新增按鈕的ID改為ID_AddTool(和新增菜單的ID相同),如圖:注意:如果沒(méi)有相應(yīng)的菜單命令和處理函數(shù),工具欄按鈕不可
41、用(灰色).實(shí)例五:修改狀態(tài)欄1.新建項(xiàng)目類型:Visual C+項(xiàng)目;模板:MFC應(yīng)用程序;項(xiàng)目名稱:ToolBar;應(yīng)用程序類型:?jiǎn)挝臋n。2.新建狀態(tài)條打開資源視圖編輯框,選中”StringTable| StringTable”,雙擊展開字符串編輯框,如圖:將新增字符串的ID改為”ID_STATUS1”,標(biāo)題改為”當(dāng)前狀態(tài):”3.增加代碼:打開MainaFrm.cpp加入狀態(tài)行指示器代碼:static UINT indicators =ID_SEPARATOR, / 狀態(tài)行指示器ID_INDICATOR_CAPS,ID_INDICATOR_NUM,ID_INDICATOR_SCRL,ID_
42、STATUS1,其中:數(shù)組indicators用開定義狀態(tài)條.實(shí)例六:創(chuàng)建登錄對(duì)話框1.新建項(xiàng)目類型:Visual C+項(xiàng)目;模板:MFC應(yīng)用程序;項(xiàng)目名稱:Log_On_Dlg;應(yīng)用程序類型:?jiǎn)挝臋n。2.插入編輯新對(duì)話框:打開資源視圖,插入新對(duì)話框,ID為“IDD_DIALOG_Log_On”,添加一靜態(tài)文本和一文本控件,如圖:其中:靜態(tài)文本控件的標(biāo)題屬性改為提示內(nèi)容“請(qǐng)輸入口令”;文本控件的ID設(shè)置為 IDC_EDIT_Password,Password屬性改為True。也可以設(shè)置對(duì)話框的標(biāo)題、圖標(biāo)和ID。3.生成對(duì)話框類并添加變量:鼠標(biāo)右鍵單擊文本控件,選擇添加類:鼠標(biāo)右鍵單擊文本控件,
43、選擇添加變量,設(shè)置變量如圖:4.添加代碼:在Log_On_Dlg.cpp中添加代碼:/ Log_On_Dlg.cpp : 定義應(yīng)用程序的類行為。/#include "stdafx.h"#include "Log_On_Dlg.h"#include "MainFrm.h"#include "Log_On_DlgDoc.h"#include "Log_On_DlgView.h"#include "MyDlg.h"#ifdef _DEBUG#define new DEBUG_NEW
44、#endif/ CLog_On_DlgApp/ CLog_On_DlgApp 初始化BOOL CLog_On_DlgApp:InitInstance()/ 如果一個(gè)運(yùn)行在 Windows XP 上的應(yīng)用程序清單指定要/ 使用 ComCtl32.dll 版本 6 或更高版本來(lái)啟用可視化方式,/則需要 InitCommonControls()。否則,將無(wú)法創(chuàng)建窗口。InitCommonControls();CWinApp:InitInstance();MyDlg m_Dlg;/創(chuàng)建對(duì)話框?qū)ο骾f(m_Dlg.DoModal ()=IDOK)/啟動(dòng)對(duì)話框if(m_Dlg.My_PWD !=11111
45、)/設(shè)置密碼MessageBox(NULL,"口令不對(duì),退出!","出錯(cuò)",MB_OK);/錯(cuò)誤提示 return false;elsereturn false;/ 初始化 OLE 庫(kù)編譯運(yùn)行,如果口令不等于“11111”,程序提示以后結(jié)束;口令正確繼續(xù)執(zhí)行。實(shí)驗(yàn)五對(duì)話框和控件高級(jí)應(yīng)用1. 實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)對(duì)話框和控件的基本知識(shí)和高級(jí)應(yīng)用。6. 實(shí)驗(yàn)內(nèi)容了解各種Windows高級(jí)控件的功能和使用方法。實(shí)例一:標(biāo)簽式對(duì)話框1.新建項(xiàng)目類型:Visual C+項(xiàng)目;模板:MFC應(yīng)用程序;項(xiàng)目名稱:Tab;應(yīng)用程序類型:基于對(duì)話框。2.插入編輯新對(duì)話框:打開資源視
46、圖,展開對(duì)話框編輯器,設(shè)計(jì)對(duì)話框。把命令按鈕移動(dòng)到下部,然后增加一個(gè)Tab Control控件,一個(gè)靜態(tài)文本控件Static Text,一個(gè)編輯框Edit Control控件。如圖:3.設(shè)置屬性4.添加代碼:1)TabDlg.h : 頭文件/ TabDlg.h : 頭文件/#pragma once#include "afxcmn.h"/ CTabDlg 對(duì)話框class CTabDlg : public CDialog/ 構(gòu)造public:CTabDlg(CWnd* pParent = NULL);/ 標(biāo)準(zhǔn)構(gòu)造函數(shù)/ 對(duì)話框數(shù)據(jù)enum IDD = IDD_TAB_DIAL
47、OG ;protected:virtual void DoDataExchange(CDataExchange* pDX);/ DDX/DDV 支持/ 實(shí)現(xiàn)protected:HICON m_hIcon;/ 生成的消息映射函數(shù)virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();DECLARE_MESSAGE_MAP()public:CTabCtrl m_TabCtrl;/創(chuàng)建T
48、ab控件對(duì)象afx_msg void OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult);2)TabDlg.cpp/ TabDlg.cpp : 實(shí)現(xiàn)文件/#include "stdafx.h"#include "Tab.h"#include "TabDlg.h"#ifdef _DEBUG#define new DEBUG_NEW#endif/ 用于應(yīng)用程序“關(guān)于”菜單項(xiàng)的 CAboutDlg 對(duì)話框class CAboutDlg : public CDialogpublic:CAbo
49、utDlg();/ 對(duì)話框數(shù)據(jù)enum IDD = IDD_ABOUTBOX ;protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV 支持/ 實(shí)現(xiàn)protected:DECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD)void CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);BEGIN_MESSAGE_MAP(CAboutDlg, C
50、Dialog)END_MESSAGE_MAP()/ CTabDlg 對(duì)話框CTabDlg:CTabDlg(CWnd* pParent /*=NULL*/): CDialog(CTabDlg:IDD, pParent)m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);void CTabDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);DDX_Control(pDX, IDC_TAB1, m_TabCtrl);BEGIN_MESSAGE_MAP(CTabDlg, CD
51、ialog)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()/AFX_MSG_MAPON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, OnTcnSelchangeTab1)END_MESSAGE_MAP()/ CTabDlg 消息處理程序BOOL CTabDlg:OnInitDialog()CDialog:OnInitDialog();/ 將“關(guān)于.”菜單項(xiàng)添加到系統(tǒng)菜單中。/ IDM_ABOUTBOX 必須在系統(tǒng)命令范圍內(nèi)。ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBO
52、X);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL)CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ 設(shè)置此對(duì)話框的圖標(biāo)。當(dāng)應(yīng)用程序
53、主窗口不是對(duì)話框時(shí),框架將自動(dòng)/ 執(zhí)行此操作SetIcon(m_hIcon, TRUE);/ 設(shè)置大圖標(biāo)SetIcon(m_hIcon, FALSE);/ 設(shè)置小圖標(biāo)/ TODO:在此添加額外的初始化代碼/設(shè)置選項(xiàng)卡標(biāo)題TC_ITEM * m_pItem;m_pItem=new TC_ITEM;m_pItem->mask =TCIF_TEXT;m_pItem->pszText="第一頁(yè)"m_TabCtrl.InsertItem (0,m_pItem);m_pItem->pszText="第二頁(yè)"m_TabCtrl.InsertItem (1,m_pItem);/初始化選項(xiàng)卡,默認(rèn)為第一頁(yè)GetDlgIt
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年專車租車協(xié)議
- 2024年個(gè)人大額存單質(zhì)權(quán)設(shè)立協(xié)議
- 2024年勞動(dòng)爭(zhēng)議調(diào)解協(xié)議:工傷賠償
- 環(huán)保材料課程設(shè)計(jì)
- stm32開發(fā)課程設(shè)計(jì)
- 2024至2030年中國(guó)電子連鎖不銹鋼傳遞窗數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2024至2030年中國(guó)車載MP3轉(zhuǎn)發(fā)器數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2024至2030年中國(guó)鈣鈉磷肥行業(yè)投資前景及策略咨詢研究報(bào)告
- 生產(chǎn)計(jì)劃課程設(shè)計(jì)數(shù)據(jù)
- 2024至2030年中國(guó)超柔床墊數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2023-2024學(xué)年重慶市大足區(qū)八年級(jí)(上)期末數(shù)學(xué)試卷(含解析)
- 肺結(jié)節(jié)科普知識(shí)宣講
- 網(wǎng)絡(luò)直播營(yíng)銷
- 2024年節(jié)能減排培訓(xùn)資料
- 2024傳染病預(yù)防ppt課件完整版
- 2024年華融實(shí)業(yè)投資管理有限公司招聘筆試參考題庫(kù)含答案解析
- 2024年1月普通高等學(xué)校招生全國(guó)統(tǒng)一考試適應(yīng)性測(cè)試(九省聯(lián)考)歷史試題(適用地區(qū):貴州)含解析
- 《寬容待人 正確交往》班會(huì)課件
- HSK五級(jí)必過(guò)考前輔導(dǎo)課件
- 小兒胃腸功能紊亂護(hù)理查房課件
- 大學(xué)生職業(yè)生涯規(guī)劃書鐵道工程
評(píng)論
0/150
提交評(píng)論