版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
中南大學《面向對象程序設計》上機報告題目:對話框學生姓名:學號:專業(yè)班級:指導老師:數(shù)學科學與計算技術學院2011年11月上機目的、內(nèi)容:學習向對話框控件聯(lián)接數(shù)據(jù)成員及其實現(xiàn)機理;向對話框控關聯(lián)控件類;利用對話框類的成員函數(shù)向控件發(fā)送消息和獲取對話框控件的類指針。明白如何讓對話框上的文本框在程序啟動后立即獲得焦點,如何利用SetWindowLong改變窗口的回調(diào)函數(shù),通過改變文本框的默認回車處理方式進行演示。最后利用對話框制作一個簡單的計算器。上機程序設計具體內(nèi)容:對話框運用對話框制作計算器:1.1創(chuàng)建工程(單文檔)1.2工程的“資源視圖”處—>右擊—>添加—>資源—>Dialog—>新建1.3左鍵雙擊上圖、設置類名等。1.4添加菜單項,使得點擊菜單時出現(xiàn)這個窗口:(1).資源視圖—>menu—>雙擊IDR_MAINFRAME(2).添加菜單名稱為“對話框”(3).在右邊出現(xiàn)的屬性中將Popup設置為“false”上機程序設計心得:我們通過學習面向對象程序設計,發(fā)現(xiàn)在VS2008中添加MFC中消息處理函數(shù)和VC6.0是不一樣的。我們只能通過類視圖,右鍵需要添加處理函數(shù)的類,選擇屬性,在屬性窗口中,單擊“消息”按鈕,然后在消息列表框中,選擇需要添加的消息。而在運用MessageBox時,我們需要用到一種中間類型TEXT對字符進行轉換。這些都是我們所遇到的問題,但我們都可以通過查詢MSDN進行解決。四、附錄:(3)源程序主要代碼//MainFrm.cpp:CMainFrame類的實現(xiàn)#include"stdafx.h"#include"MyBole.h"#include"MainFrm.h"#ifdef_DEBUG#definenewDEBUG_NEW#endif//CMainFrameIMPLEMENT_DYNCREATE(CMainFrame,CFrameWnd)BEGIN_MESSAGE_MAP(CMainFrame,CFrameWnd) ON_WM_CREATE()END_MESSAGE_MAP()staticUINTindicators[]={ ID_SEPARATOR,//狀態(tài)行指示器 ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICATOR_SCRL,};//CMainFrame構造/析構CMainFrame::CMainFrame(){ //TODO:在此添加成員初始化代碼}CMainFrame::~CMainFrame(){}intCMainFrame::OnCreate(LPCREATESTRUCTlpCreateStruct){ 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("未能創(chuàng)建工具欄\n"); return-1;//未能創(chuàng)建 } if(!m_wndStatusBar.Create(this)|| !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) { TRACE0("未能創(chuàng)建狀態(tài)欄\n"); return-1;//未能創(chuàng)建 } //TODO:如果不需要工具欄可???,則刪除這三行 m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndToolBar); return0;}BOOLCMainFrame::PreCreateWindow(CREATESTRUCT&cs){ if(!CFrameWnd::PreCreateWindow(cs)) returnFALSE; //TODO:在此處通過修改 //CREATESTRUCTcs來修改窗口類或樣式 returnTRUE;}//CMainFrame診斷#ifdef_DEBUGvoidCMainFrame::AssertValid()const{ CFrameWnd::AssertValid();}voidCMainFrame::Dump(CDumpContext&dc)const{ CFrameWnd::Dump(dc);}#endif//_DEBUG//CMainFrame消息處理程序//MyBole.cpp:定義應用程序的類行為。#include"stdafx.h"#include"MyBole.h"#include"MainFrm.h"#include"MyBoleDoc.h"#include"MyBoleView.h"#ifdef_DEBUG#definenewDEBUG_NEW#endif//CMyBoleAppBEGIN_MESSAGE_MAP(CMyBoleApp,CWinApp) ON_COMMAND(ID_APP_ABOUT,&CMyBoleApp::OnAppAbout) //基于文件的標準文檔命令 ON_COMMAND(ID_FILE_NEW,&CWinApp::OnFileNew) ON_COMMAND(ID_FILE_OPEN,&CWinApp::OnFileOpen) //標準打印設置命令 ON_COMMAND(ID_FILE_PRINT_SETUP,&CWinApp::OnFilePrintSetup)END_MESSAGE_MAP()//CMyBoleApp構造CMyBoleApp::CMyBoleApp(){ //TODO:在此處添加構造代碼, //將所有重要的初始化放置在InitInstance中}//唯一的一個CMyBoleApp對象CMyBoleApptheApp;//CMyBoleApp初始化BOOLCMyBoleApp::InitInstance(){ //如果一個運行在WindowsXP上的應用程序清單指定要 //使用ComCtl32.dll版本6或更高版本來啟用可視化方式, //則需要InitCommonControlsEx()。否則,將無法創(chuàng)建窗口。 INITCOMMONCONTROLSEXInitCtrls; InitCtrls.dwSize=sizeof(InitCtrls); //將它設置為包括所有要在應用程序中使用的 //公共控件類。 InitCtrls.dwICC=ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); CWinApp::InitInstance(); //初始化OLE庫 if(!AfxOleInit()) { AfxMessageBox(IDP_OLE_INIT_FAILED); returnFALSE; } AfxEnableControlContainer(); //標準初始化 //如果未使用這些功能并希望減小 //最終可執(zhí)行文件的大小,則應移除下列 //不需要的特定初始化例程 //更改用于存儲設置的注冊表項 //TODO:應適當修改該字符串, //例如修改為公司或組織名 SetRegistryKey(_T("應用程序向導生成的本地應用程序")); LoadStdProfileSettings(4);//加載標準INI文件選項(包括MRU) //注冊應用程序的文檔模板。文檔模板 //將用作文檔、框架窗口和視圖之間的連接 CSingleDocTemplate*pDocTemplate; pDocTemplate=newCSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CMyBoleDoc), RUNTIME_CLASS(CMainFrame),//主SDI框架窗口 RUNTIME_CLASS(CMyBoleView)); if(!pDocTemplate) returnFALSE; AddDocTemplate(pDocTemplate); //分析標準外殼命令、DDE、打開文件操作的命令行 CCommandLineInfocmdInfo; ParseCommandLine(cmdInfo); //調(diào)度在命令行中指定的命令。如果 //用/RegServer、/Register、/Unregserver或/Unregister啟動應用程序,則返回FALSE。 if(!ProcessShellCommand(cmdInfo)) returnFALSE; //唯一的一個窗口已初始化,因此顯示它并對其進行更新 m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->UpdateWindow(); //僅當具有后綴時才調(diào)用DragAcceptFiles //在SDI應用程序中,這應在ProcessShellCommand之后發(fā)生 returnTRUE;}//用于應用程序“關于”菜單項的CAboutDlg對話框classCAboutDlg:publicCDialog{public: CAboutDlg();//對話框數(shù)據(jù) enum{IDD=IDD_ABOUTBOX};protected: virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDV支持//實現(xiàn)protected: DECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg():CDialog(CAboutDlg::IDD){}voidCAboutDlg::DoDataExchange(CDataExchange*pDX){ CDialog::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)END_MESSAGE_MAP()//用于運行對話框的應用程序命令voidCMyBoleApp::OnAppAbout(){ CAboutDlgaboutDlg; aboutDlg.DoModal();}//CMyBoleApp消息處理程序//MyBoleDoc.cpp:CMyBoleDoc類的實現(xiàn)#include"stdafx.h"#include"MyBole.h"#include"MyBoleDoc.h"#ifdef_DEBUG#definenewDEBUG_NEW#endif//CMyBoleDocIMPLEMENT_DYNCREATE(CMyBoleDoc,CDocument)BEGIN_MESSAGE_MAP(CMyBoleDoc,CDocument)END_MESSAGE_MAP()//CMyBoleDoc構造/析構CMyBoleDoc::CMyBoleDoc(){//TODO:在此添加一次性構造代碼}CMyBoleDoc::~CMyBoleDoc(){}BOOLCMyBoleDoc::OnNewDocument(){ if(!CDocument::OnNewDocument()) returnFALSE; //TODO:在此添加重新初始化代碼 //(SDI文檔將重用該文檔) returnTRUE;}//CMyBoleDoc序列化voidCMyBoleDoc::Serialize(CArchive&ar){ if(ar.IsStoring()) { //TODO:在此添加存儲代碼 } else { //TODO:在此添加加載代碼 }}//CMyBoleDoc診斷#ifdef_DEBUGvoidCMyBoleDoc::AssertValid()const{ CDocument::AssertValid();}voidCMyBoleDoc::Dump(CDumpContext&dc)const{ CDocument::Dump(dc);}#endif//_DEBUG//CMyBoleDoc命令//MyBoleView.cpp:CMyBoleView類的實現(xiàn)#include"stdafx.h"#include"MyBole.h"#include"MyBoleDoc.h"#include"MyBoleView.h"#include"TestDialog.h"#ifdef_DEBUG#definenewDEBUG_NEW#endif//CMyBoleViewIMPLEMENT_DYNCREATE(CMyBoleView,CView)BEGIN_MESSAGE_MAP(CMyBoleView,CView) //標準打印命令 ON_COMMAND(ID_FILE_PRINT,&CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_DIRECT,&CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW,&CView::OnFilePrintPreview) ON_COMMAND(IDM_DIALOG,&CMyBoleView::OnDialog)END_MESSAGE_MAP()//CMyBoleView構造/析構CMyBoleView::CMyBoleView(){//TODO:在此處添加構造代碼}CMyBoleView::~CMyBoleView(){}BOOLCMyBoleView::PreCreateWindow(CREATESTRUCT&cs){//TODO:在此處通過修改 //CREATESTRUCTcs來修改窗口類或樣式 returnCView::PreCreateWindow(cs);}//CMyBoleView繪制voidCMyBoleView::OnDraw(CDC*/*pDC*/){ CMyBoleDoc*pDoc=GetDocument(); ASSERT_VALID(pDoc); if(!pDoc) return; //TODO:在此處為本機數(shù)據(jù)添加繪制代碼}//CMyBoleView打印BOOLCMyBoleView::OnPreparePrinting(CPrintInfo*pInfo){ //默認準備 returnDoPreparePrinting(pInfo);}voidCMyBoleView::OnBeginPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/){//TODO:添加額外的打印前進行的初始化過程}voidCMyBoleView::OnEndPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/){ //TODO:添加打印后進行的清除過程}//CMyBoleView診斷#ifdef_DEBUGvoidCMyBoleView::AssertValid()const{ CView::AssertValid();}voidCMyBoleView::Dump(CDumpContext&dc)const{ CView::Dump(dc);}CMyBoleDoc*CMyBoleView::GetDocument()const//非調(diào)試版本是內(nèi)聯(lián)的{ ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMyBoleDoc))); return(CMyBoleDoc*)m_pDocument;}#endif//_DEBUG//CMyBoleView消息處理程序voidCMyBoleView::OnDialog(){ //TODO:在此添加命令處理程序代碼 CTestDialogdlg; dlg.DoModal();}//TestDialog.cpp:實現(xiàn)文件#include"stdafx.h"#include"MyBole.h"#include"TestDialog.h"http://CTestDialog對話框IMPLEMENT_DYNAMIC(CTestDialog,CDialog)CTestDialog::CTestDialog(CWnd*pParent/*=NULL*/) :CDialog(CTestDialog::IDD,pParent) ,m_num1(0) ,num2(0) ,m_num3(0){}CTestDialog::~CTestDialog(){}voidCTestDialog::DoDataExchange(CDataExchange*pDX){ CDialog::DoDataExchange(pDX); DDX_Text(pDX,IDC_EDIT1,m_num1); DDX_Text(pDX,IDC_EDIT2,num2);
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 開放式基金交易服務合同
- 2024簡單銷售代理合同樣本
- 合同范本:委托招商引資協(xié)議書
- 二手車購車合同協(xié)議樣本
- 2024照明購銷合同
- 企業(yè)與高校就業(yè)實習協(xié)議書參考
- 代理公司注冊登記協(xié)議書
- 培訓機構老師合作協(xié)議示例
- 正規(guī)版房屋租賃合同協(xié)議范本
- 全面聘用合同范本匯編
- 浙江省紹興市諸暨市2023-2024學年七年級上學期期末語文試題
- 酒精性肝硬化查房
- 2024年學校禁毒安全工作計劃
- 透析中合并心衰護理課件
- 初中數(shù)學因式分解練習題100題附詳解
- 新生兒臍疝與護理課件
- 提升班組學習能力的組織與培訓方法
- 2024屆高考語文復習:小說敘述特色專題復習 課件
- 慢性病的心理預防及調(diào)適護理課件
- 2024年銀行考試-招商銀行歷年考試高頻考點試題附帶答案
- 2024肺栓塞指南解讀2024
評論
0/150
提交評論