1 / 34

Visual C++ 开发基础

Visual C++ 开发基础. 几个与历史有关的问题. Visual C++ 是如何诞生的? C 语言和 C++ 语言是如何诞生的? C 语言和 C++ 语言究竟有什么关系? C 语言、 C++ 语言和 Java 语言、 C# 语言有什么关系?. 高级程序设计语言的发展历史. 最适用的语言才是最好的语言. 三个影响历史的关键人物. B. Stroustrup. J. Gosling. A. Hejlsberg. C 语言的演化. C 语言来自与 B 语言, B 语言是 BCPL 语言的简化,而 BCPL 语言又简化自 CPL 语言

durin
Download Presentation

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. 几个与历史有关的问题 Visual C++是如何诞生的? C语言和C++语言是如何诞生的? C语言和C++语言究竟有什么关系? C语言、C++语言和Java语言、C#语言有什么关系?

  3. 高级程序设计语言的发展历史 最适用的语言才是最好的语言

  4. 三个影响历史的关键人物 B. Stroustrup J. Gosling A. Hejlsberg

  5. C语言的演化 C语言来自与B语言,B语言是BCPL语言的简化,而BCPL语言又简化自CPL语言 C语言的发明者是贝尔实验室的D. Ritchie 1978年有了以K&R《C语言程序设计》一书为代表的非官方标准。K&R指的是B. Kernighan和D. Ritchie 1989年ANSI颁布了ANSI版的C语言标准,即C89 1999年,ISO/ANSI发布了C语言的最新标准,即C99 直到今天,C语言仍然是一种年轻的和不断进步的语言,仍然是具有最强的系统描述能力的语言

  6. C++语言的演化 1979年,C++语言的雏形,CPre诞生,这种语言也叫“带类的C” 1983年底,C++得名 1984年拥有了非官方的标准C84 1989年非官方标准演化成《带标注的C++参考手册》,即著名的ARM C++语言的官方标准直到1998年9月才正式发布。在国际标准化组织(ISO)的档案库里,C++标准的代号是 ISO/IEC 14882:1998 C++是一中多范例的语言 C++并不是100%和C语言保持兼容 丹麦人B. Stroustrup说:“C++是一种通用程序设计语言,其设计目的就是为了使真正的程序员更多地感受到编程的快乐。”

  7. 一门完整的程序设计语言必须具备的要素

  8. 一个使用C++ Standard Library的C++程序例子 #include <iostream> #include <string> #include <iomanip> using namespace std; void main() { string s; cout << "What's your name? "; cin >> s; cout << "Hello, " + s << endl; double d; cout << "Input a float number: "; cin >> d; cout << setw(20) << setprecision(2) << setiosflags( ios::fixed ) << d << endl; }

  9. 几个问题 程序中的数据究竟存储在什么位置? 下面这些数据的存储位置相同吗? 全局变量 局部变量 动态分配的变量空间 什么是虚拟存储空间? 什么是线性地址? 什么是内存交换文件?

  10. 数据的存储位置 计算机是处理数据的自动机。 程序运行时,数据的存储位置有3个: 静态存储区、堆、栈

  11. 一个使用了静态存储、堆和栈的C++程序例子 class X { public: int m; }; class Y { public: int n; void foo(int n) { for(int i = 0; i < 5; i++) n += n / 2; this->n = n; } }; Y yes; void main() { Y* no = new Y(); yes.foo(10); no->foo(20); delete no; }

  12. 几个问题 什么是编译? 什么是连接? 为什么要编译和连接?

  13. C++代码的编译和连接

  14. Visual C++ 简介 Visual C++来源于Microsoft C/C++ 目前Visual C++的最新版本是Visual Studio .NET 7.0中的Visual C++ .NET 7.0 实际开发中常用到Visual Studio 6.0中的Visual C++ 6.0( Visual Studio 6.0最新的Service Pack版本是SP5) Visual C++中的用户界面和基本概念 解决方案(Workspace) 项目(Project) 生成(Make) 编译(Build) 编译方式(Build Type/Build Configuration) 项目设置(Project Setting): 编译/连接/调试选项

  15. 用Visual C++开发控制台程序 演示Visual C++开发控制台程序的方法 扼要演示Visual C++开发静态连接库的方法 扼要演示Visual C++开发动态连接库的方法

  16. 什么是WIN32环境?什么是GUI程序? • WIN 32GUI程序的要素 • 进程 • 线程 • 窗口 • 资源 • 窗口类 • 窗口属性 • 窗口函数 • 消息 • 消息队列 • 消息处理 • 对话框 WIN32是基于DLL的运行环境 kernel32.dll user32.dll gdi32.dll 演示Microsoft Depends的用法 演示Visual C++资源编辑器的用法 DIALOG ICON MENU BITMAP STRING VERSION

  17. WIN32窗口系统的核心:消息管理 消息:由一个消息ID,一个wParam(32位)参数和一个lParam(32位)参数组成 typedef struct tagMSG {     msg HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; } MSG; 消息分类 消息队列 消息循环 消息和线程的关系 演示Microsoft Spy++的用法 Processes List Threads List Windows List Window Class Properties Message Logging

  18. 开发一个简单的WIN32窗口程序 基本的WIN32程序包含两个主要函数,WinMain和WndProc: WinMain函数 注册窗口类 创建窗口 显示窗口 消息循环 WndProc回调函数 处理消息 未处理消息传给DefWindowProc 主消息循环代码的写法 while(GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); }

  19. 开发一个简单的WIN32窗口程序 #include <windows.h> … WinMain(…) { // Instance… // WNDCLASS …; // CreateWindow(…); // Main Message Loop } … WndProc(…) { // switch(…) // WM_CREATE // WM_PAINT // WM_SIZE // WM_CLOSE // WM_DESTROY } DeviceContext PaintDC MemoryDC GDIObject: Pen Brush … Drawing Functions: … User Inputs Mouse Events Keyboard Events Focus

  20. 开发一个简单的WIN32窗口程序 WIN32 Controls Static Edit Button RadioButton CheckBox List ComboBox Progress ScollBars Child Windows 在WM_CREATE消息中创建子窗口 创建一个包含图形元素的子窗口 创建一个按钮子窗口 WM_SIZE的处理 WM_PAINT的处理 WM_CLOSE的处理 WM_DESTROY的处理

  21. 开发一个简单的WIN32对话框程序 #include <windows.h> … WinMain(…) { // DialogBox(…); } … DialogProc(…) { // switch(…) // WM_INITDIALOG // EndDialog(); } Dialog 模式对话框 无模式对话框

  22. 什么是MFC? • MFC是Microsoft提供的类库,包含了以下功能 • 用户界面开发(对话框,单窗口和多窗口) • 基本文件I/O • 数据库开发 • 网络编程(TCP/IP, FTP, Internet…) • OLE支持(OLE容器,客户端,复合文档) • ActiveX支持(用户控件、自动化对象) • 容器类(数据结构、基本算法) • 调试、跟踪、测试支持

  23. MFC的类结构:CObject是其中最基本的类

  24. MFC的应用程序向导 向导生成的是源代码的框架

  25. 使用MFC开发对话框程序 使用Visual C++提供的ClassWizard工具(该工具的使用方式在Visual Studio .NET中略有变化) 在ClassWizard中添加消息处理过程 在ClassWizard中添加新类 使用Visual C++ 提供的类视图工具 演示ClassWizard的用法 新建类 添加类成员 类的继承关系 多态、重载的实现 消息处理 控件-变量对应关系

  26. 理解MFC生成的框架代码的结构 CWinApp类 CDialog类 CFrameWnd类 虚函数的作用:重新实现CDialog或CWnd的特性 消息循环在MFC中的实现: BEGIN_MESSAGE_MAP(CTttDlg, CDialog) //{{AFX_MSG_MAP(CTttDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_EN_CHANGE(IDC_EDIT1, OnChangeEdit1) //}}AFX_MSG_MAP END_MESSAGE_MAP()

  27. 使用MFC开发窗口程序 Visual C++的文档-视结构

  28. 使用MFC开发窗口程序 Visual C++的文档-视结构 4个关键类: CDocTemplate、CDocument、CFrameWnd、CView CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CTttDoc), RUNTIME_CLASS(CMainFrame), RUNTIME_CLASS(CTttView)); AddDocTemplate(pDocTemplate); CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); if (!ProcessShellCommand(cmdInfo)) return FALSE;

  29. MFC下图形对象、控件的用法 OnDraw() 使用CPaintDC和CDC CPen CBrush CFont …… CMenu CButton CProgressCtrl CListBox CListView/CListCtrl CTreeView/CTreeCtrl ……

  30. 管理文档-视结构 CFrameWnd: GetActiveFrame() GetActiveView() GetActiveDocument() LoadFrame() CDoucment: OnNewDocument() OnOpenDocument() Serialize() UpdateAllViews() IsModified() SetModifiedFlag() CView: PreCreateWindow() OnDraw() GetDocument() OnUpdate()

  31. 使用Visual C++开发数据库访问程序 • 访问数据库的不同方式 • 数据库软件本身的接口API • 嵌入式C语言代码 • ODBC • DAO • RDO • ADO(面向对象的ODBC) • .NET类库中的数据库访问模块 • Visual C++中支持ODBC的类是CDatabase系列 • 支持DAO的是CDaoDatabase系列 • 支持ADO的办法是使用ActiveX自动化对象

  32. 基于网络连接的数据库访问基础 应用程序 应用程序开发接口 MFC, VB Controls, … 公共数据库接口 ODBC, ADO, … 特定数据库接口 DB Library in SQL Server, Pro C/OCI in Oracle 客户端通信模块 网络连接 服务端通信模块 服务端交易环境 (数据库脚本语言): 存储过程/触发器/外部存储过程 T-SQL in SQL Server, PL/SQL in Oracle 数据库服务 Database Server 操作系统 OS

  33. 网络通信技术概览 基于消息的通信技术 UDP、TCP、COM、Named Pipes 消息队列:MQ 基于成熟应用协议的通信技术 FTP Mail Http (Web Access) 基于远程过程调用的通信技术 RPC:远程过程调用 CORBA:面向对象的远程过程调用 Java RMI:Java语言面向对象的远程过程调用 Web Services (XML/SOAP): 依靠Web和XML实现的, 面向对象的远程过程调用

  34. 网络通信编程涉及的相关概念 通信协议/协议族 地址/端口/端点 服务端/客户端 后台服务程序/连接数 侦听/连接 同步/异步 打包/解包 编码/解码 发送/接收 会话/进程/线程 交易/队列/负载平衡

More Related