1 / 141

Visual C++ 程序设计

Visual C++ 程序设计. 网络技术学院 梁普选. 教学目的. 掌握可视化与面向对象的编程模式 掌握 Windows 平台下软件运作机制及其开发方法. 教学安排. 总学时 (60) = 理论 (40) + 实验 (20). 教学参考书. [1] 马安鹏 《Visual C++ 6 程序设计导学 》 清华大学出版社 [2] 潘爱民译 《Visual C++ 技术内幕 》 清华大学出版社 [3] 侯俊杰 《 深入浅出 MFC》 华中科技大学出版社

Télécharger la présentation

Visual C++ 程序设计

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Visual C++ 程序设计 网络技术学院 梁普选

  2. 教学目的 • 掌握可视化与面向对象的编程模式 • 掌握Windows平台下软件运作机制及其开发方法

  3. 教学安排 总学时(60) = 理论(40) + 实验(20)

  4. 教学参考书 [1] 马安鹏《Visual C++ 6 程序设计导学》 清华大学出版社 [2] 潘爱民译《Visual C++技术内幕》 清华大学出版社 [3] 侯俊杰 《深入浅出MFC》 华中科技大学出版社 [4] 许福《Visual C++ 6编程实例与技巧》 电子工业出版社

  5. 学习方法 听课看书为先导; 实践环节紧配合; 输入一段程序;编译并投入运行;将运行过程;运行结果;源代码与书本知识联系在一起。 分析总结才能领会软件开发真谛。

  6. 教学内容 [1] 微软基础类库MFC与应用程序框架 [2] 对话框与控件编程 [3] 文档视图与框架窗口 [4] 绘图 [5] 数据库编程 [6] 多线程编程 [7] 网络编程

  7. 第1讲 C++基础 1.1 类与对象 1.2 数据成员与成员函数 1.3 构造函数与析构函数 1.4 基类与派生类 1.5 单继承与多继承 1.6 函数重载与多态性

  8. 第2讲MFC与应用程序框架

  9. 2.1 微软基础类库MFC 积微软程序员30余年的心血- Windows平台下的几十万行优化的C++代码、类库的集合,其中主要包含了开发Windows平台所需的软件资源。

  10. 微软基础类库MFC CObject CCmdTarget CWinThread CWnd CWinApp CView COleControlModule CFrameView • Application CDocument CDocTemplate user document CSingleDocTemplate CMultiDocTemplate

  11. 2.2 Visual C++集成开发环境 1. 内嵌MFC 2. 优质高效的C++编译器 3. 可视化集成开发环境 4. 得心应手的软件开发工具 (1) 应用程序向导AppWizard (2) 类向导工具ClassWizard

  12. Visual C++开发实例 实例: 创建基于对话框的应用程序 功能: 鼠标单击“按钮”,文本框输出字 符串:“Hello VC++!” 掌握要点:AppWizard 和 ClassWizard 的使用

  13. 2.3 一个简单的MFC程序 创建窗体(P1) 1. 定义应用类 CHelloApp 2. 创建应用类对象(实例) HelloApp 3. 定义窗口类 CHelloWindow 4. 实现应用类初始化函数 InitInstance() 5. 实现窗口类构造函数

  14. 源代码分析: #include < afxwin.h > 作用:将MFC类库包含并加载到当前程序中 class CHelloApp : public CWinApp { public: virtual BOOL InitInstance(); }; 主应用类CHelloApp派生自CWinAp,并重写初始化成员函数InitInstance()。

  15. CHelloApp HelloApp; 创建主应用类对象 class CHelloWindow : public CFrameWnd{ public: CHelloWindow(); }; 定义主窗口类CHelloWindow,派生自MFC中的CFrameWnd。主窗口类中声明了自己的构造函数。

  16. BOOL CHelloApp::InitInstance() { m_pMainWnd = new CHelloWindow(); m_pMainWnd->ShowWindow (m_nCmdShow); m_pMainWnd->UpdateWindow(); return TRUE; } m_pMainWnd是MFC中定义的主窗口指针; 主窗口指针指向了当前应用程序窗口; 因而调用主窗口指针的ShowWindow函数, 就是显示当前应用程序。

  17. CHelloWindow::CHelloWindow() { Create(NULL,"Hello World!",WS_OVERLAPPEDWINDOW,CRect(0,0,200,200)); } 构造函数中,创建主窗口标题为“”,大小尺寸为200×200;窗口格式为可覆盖、有控制按钮。

  18. 向当前窗口中添加标签 实现过程见P4

  19. 2.4 消息映射 应用程序窗口中的用户界面对象都具有两种可控制特性: 外观及它响应事件行为的能力。 例如:当鼠标单击【退出】按钮时,应用程序就要结束;当鼠标选择【打开文件】菜单时,弹出文件打开对话框。 消息映射作用: 识别源于系统内部或用户干预应用程序的消息,调用相应的函数实现用户实现的功能

  20. 实现步骤 • 声明消息映射宏 • DECLARE_MESSAGE_MAP() • 2. 创建消息映射宏 • BEGIN_MESSAGE_MAP() • END_MESSAGE_MAP() • 消息映射宏定义在MFC中,是Windows应用程序的消息处理过程的入口

  21. 3. 定义响应消息的成员函数 (声明在先定义在后 P8) 4. 添加消息入口项 例如:将鼠标单击消息与响应该消息的成员函数建立关联。 见P8 5.创建消息驱动源-控件 见P8

  22. 实例:鼠标单击按钮,弹出消息框。 P9

  23. 定义按钮标识符资源 #define IDB_BUTTON 100 声明响应鼠标单击消息的成员函数 afx_msg void HandleButton(); 响应鼠标单击消息的成员函数 void CButtonWindow::HandleButton() { AfxMessageBox("Hello, Your Clicked Button1"); }

  24. 声明消息映射宏 DECLARE_MESSAGE_MAP() 定义消息映射宏 BEGIN_MESSAGE_MAP(CButtonWindow, CFrameWnd) ON_BN_CLICKED(IDB_BUTTON, HandleButton) END_MESSAGE_MAP() 创建按钮控件 CButton *button; button = new CButton(); button->Create("Push me",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, r, this, IDB_BUTTON);

  25. 2.5 Win32 应用程序向导 AppWizard创建基于MFC的三种不同类型的Win32 应用程序。 Win32 应用程序框架结构共性 主应用类;主应用类实例;主框架(窗口)类,文档类,视图类,各司其职。

  26. 2.6 使用类向导ClassWizard 作用: (1) 创建用户自定义类; (2) 添加/删除成员变量; (3) 添加/删除成员函数; (4) 添加自定义消息及消息映射项; (5) 导入组件库; 要求熟练掌握

  27. 2.7 设计Windows应用程序一般流程 一、设计阶段 (1)提出设计目标及用户需求 (2)确定拟采用的技术方案 (3)划分功能模块 (4)提取模块原型-创建设计模型

  28. 二、编码阶段 (1)细化模块流程 (2)攻克技术难点 (3)界面设计 (4)代码设计 (5)代码调试

  29. 三、调试阶段 (1) 分步调试 (2) 模块连调 (3) 数据测试 (4) 打包发布 四、用户反馈 (1)修改 (2)测试

  30. 2.8 Visual C++常用工具的使用 1.属性对话框 用于设置控件及对话框的属性

  31. 2. 控件常用属性 (1) ID:控件标识符,是该控件在程序中的符号化的表示。 例如:文本框控件标识符:IDC_EDIT1 按钮控件标识符:IDC_BUTTON1 (2) Caption: 控件标题,表示显示在控件表面的字符串信息。 例如:静态文本控件的Caption设置为“姓名”,则显示:

  32. 3.ClassWizard类向导工具 (1)用于设置控件所表示的信息 (2)实现对源程序编辑、修改。 3.1 打开类向导的操作方法: (1)选中操作目标 (2)Ctrl+W 例如:为IDC_EDIT1添加变量m_Edit1, 具体方法:选中对话框界面中的文本编辑框IDC_EDIT1,出现下列界面:

  33. 接着按“添加成员变量”按钮,出现:

  34. 在源程序中呈现: // Dialog Data //{{AFX_DATA(CXxxDlg) enum { IDD = IDD_XXX_DIALOG }; CEdit m_Edit1; //}}AFX_DATA

  35. 添加鼠标单击按钮消息,并用OnButton1函数来响应用户鼠标的单击事件。添加鼠标单击按钮消息,并用OnButton1函数来响应用户鼠标的单击事件。 void CXxxDlg::OnButton1() { CString temp; m_Edit1.GetWindowText(temp); if(temp=="1234567") MessageBox("口令正确!"); else MessageBox("口令不正确!"); }

  36. 实例:向文本框IDC_EDIT1中输入文本,当输入空格时将文本框内容添加到列表框中。实例:向文本框IDC_EDIT1中输入文本,当输入空格时将文本框内容添加到列表框中。 (1)添加列表框IDC_LIST1 (2)为其设置成员变量m_List1 (3)添加文本框内容改变的事件 void CXxxDlg::OnChangeEdit1() { }

  37. void CXxxDlg::OnChangeEdit1() { CString temp; m_Edit1.GetWindowText(temp); if(temp.Right(1)==‘ ') { m_Edit1.SetWindowText(""); m_List1.AddString(temp); } }

  38. 3.1 模态对话框与非模态对话框 1. 模态对话框 只有结束对话框的操作,才能进行其他的操作。 消息框是模态对话框 int MessageBox { HWND hWnd, //父级窗口句柄 LPCTSTR lpText, //指向信息字符串的指针 LPCTSTR lpCaption, //指向消息对话框标题的字符串 UINT uType //消息对话框的格式 };

  39. 例如: (详见P35) MessageBox( NULL, “设置是否合理?”, “请选择”, MB_ICONWARNING+MB_YESNO+ MB_DEFBUTTON2 );

  40. 2.创建模态对话框(P36~P52) (1)添加对话框窗体界面(资源)包括控件 (2)为对话框资源添加编程框架-添加对话框界面的类 (3)创建与控件相关的变量 (4)为控件添加消息函数 (5)加载模态对话框

  41. 3. 非模态对话框 非模态对话框工作期间,可与其他窗体、控件交互。 例如:Word中的“查找/替换”对话框 Excel中的图标向导对话框 …

  42. 4.创建非模态对话框(P53~P57) • 添加对话框界面资源 • 为对话框资源配置新的对话框派生类 • 定义非模态对话框类指针 • 初始化非模态对话框类指针 • 实例化并创建非模态对话框 • 加载并显示非模态对话框

  43. 3.2 通用对话框 MFC提供一组标准库支持通用对话框操作,它们分别为:

  44. 通用对话框的应用(P57) • 向VC工程中添加通用对话框类 • 在响应消息的成员函数中 • 加载通用对话框; • 打开并显示通用对话框; • 实现通用对话框的操作。

  45. 3.3 对话框集合 对话框集合是多个模态对话框的集合,单击标签可切换不同的对话框页面进行操作。 属性对话框是一种对话框集合模板,通常包含: 一个CPropertySheet类(或派生类)对象 多个CPropertyPage类(或其派生类)的对象

  46. 创建属性页对话框(P64) (1) 打开MFC中的组件库 (2) 添加属性页对话框 (3) 给属性页对话框选择一个归宿 (4) 选择属性页对话框页面数 (5) 向指定类中添加成员函数,响应属性页对话框

  47. 3.4 使用控件 控件是窗体中的基本元素,接收用户输入 显示用户信息,实现了人机交互功能。 1. 常用的控件类: CButton,CEdit, CComboBox; CTree, CList CPicture, CProgressCtrl

  48. 2. 控件的编程方法 • 向对话框中添加控件 • 为控件设置属性(ID标识符) • 添加响应控件消息的成员函数 • 向消息函数中添加代码 • 运行并调试程序

  49. 3.对话框综合实例(P87)

More Related