随笔分类 - C++
c++记录日志
摘要:/*第二十三章 在Windows Forms应用程序中访问数据源我们将研究如何开发基于窗体的应用程序来显示各种来源的数据,明确地说,就是如何创建可访问现有数据库的基于窗体的程序 1 在封装数据库方面都涉及哪里些类 2 如何使用DataGridView控件显示自己的数据 3 如何定制DataGridView控件的外观 4 BindingSource组件的功能,如何结合DataGridView控件使用该组件 5 如何使用BindingNavigator控件来访问BindingSource控件管理的数据源的数据 6 如何使用BindingNavigator控件和BindingSource...
阅读全文
摘要:/*//第二十二章Windows Forms应用程序进阶学习内容 如果使用各种控件构建应用程序GUI 如何在应用程序中显示Web页面 如何操作控件容器 如何创建和显示消息框22.1 创建应用程序API 我要对购彩票发表一点看法,我们可能不会选择数字1-6作为自己的彩票号码,因为这样的一组号码中奖的可能性非常低,当然,事实上这组号码中奖的可能性与我们选择的任何一组看起来随机的号码一样高(或低),但是,数字1-6在任何地方的任何彩票上都从来没有成为过中奖号码,因此可以得出的结论是:无论我们选择什么号码,结果都一样--输22.1.1 添加选项卡控件22.1.2 命名用Grou...
阅读全文
摘要:/*第二十一章更新数据源本章主要内容: 1 数据库事务 2 如何使用记录集对像更新数据库 3 如何在更新操作中将数据从记录集传输到数据库 4 如何更新表中的现有行 5 如何添加新行到表中21.1 更新操作21.1.1 CRecordset更新操作 在更新数据库表中的字段或者添加全新的行时,也要使用RFX_()这种函数 CRecordset类中,有五个支持更新操作的成员函数 Edit() 调用这个函数将开始更新现有的记录,如果不能更新表,那么这个函数将抛去CDBException异常,如果出现了内存不足的情况,它将抛出CMomoryException异常 AddNew() 调用这个函...
阅读全文
摘要:/*第二十章 链接到数据源主要内容: SQL及其使用方法 如何使用SQL select操作检索数据 MFC支持哪里些数据库服务 什么是记录集对像,它如何链接到关系数据库表 记录集对像如何检索数据库的信息 记录视图如何显示记录集的信息 如何创建数据库程序的项目 如何把记录集添加到程序中 如何处理多记录视图20.1 数据库基础知识20.2 SQL 20.2.1 使用SQL检索数据 选择记录 20.2.3 对记录进行排序20.3 MFC中的数据库支持 将MFC用于数据库应用程序开发时需要进行选择,因为MFC支持两种主要方法,如下所示 OLE DB:它提供了一种使用C...
阅读全文
摘要:/*第十七章使用对话框和控件1 对话框的概念, 创建对话框资源的方法2 控件的概念,如何把控件添加到对话框上3 可用控件的基本种类似4 如何时创建管理对话框的对话框类5 如何编写创建对话框的代码,如何获得来自对话框中控件的信息6 模态和非模态对话框7 如何实现并使用与控件之间的直接数据交换和数据验证8 如何实现视图缩放9 如何给应用程序添加状态栏17.1 理解对话框17.2 理解控件控件类型列表静态控件 这些控件用来提供标题或说明信息按钮控件 按钮提供一种单击输入机制,基本上有三种按钮控件,简单的自动复位按钮,任何时刻只有一个可以是选择中状态的单选按钮以及同时可以有多个处于选中状态的复选框..
阅读全文
摘要:/*第十六章 创建文档和改进视图1 MFC集合及其作用2 如何使用MFC List集合和STL/CLR向量容器存储曲线的点数据3 如何使用MFC List集合和STL/CLR列表容器存储草图数据4 如何在Sketcher的MFC和CLR版本中实现草图的绘制5 如何在MFC Sketcher中实现视图滚动6 如何在鼠标指针处创建上下文菜单7 如何醒目显示距离鼠标指针最近的元素,以使在移动和删除元素时向用户提供反馈8 在移动和删除元素时如何对鼠标进行编程16.1 MFC集合类串行化是将对像传关到文件和从文件中传出对像的过程,第18章中将对此进行介绍,其中将实现在文件中存储草图的功能,遗憾的是,MF
阅读全文
摘要:/*第十五章 在窗口中绘图主要内容:1 Windows为窗口绘图提供的坐标系统2 设置环境及其必要性3 程序如何以及在窗口中绘图4 如何定义鼠标消息的处理程序5 如何定义自己的形状类6 在窗口中绘制形状时如何对鼠标进行编程7 如何让程序捕获鼠标15.1 窗口绘图的基础知识15.1.1 窗口客户区由于可以使用鼠标来回拖动窗口,并且可以通过拖动其边框调整大小,因此窗口在屏幕上没有一个固定的位置,甚至没有一个固定的可视区,那么如何知道应当在屏幕上的什么地方绘图呢15.1.2 Windows图形设备界面从直接的意义上来说,windows的最后一个限制是实际上没有把数据写入屏幕,所有到显示屏的输出都是图
阅读全文
摘要:/*第十四章 处理菜单和工具栏1 基于MFC的程序如何处理消息2 菜单资源,如何创建和修改菜单资源3 菜单属性,如何创建和修改菜单属性4 如何创建函数,以便为选择菜单项时生成的消息提供服务5 如何添加处理程序,以更新菜单属性6 如何添加工具栏按钮,如何把它们和现有菜单项关联起来14.1 与Windows进行通信14.1.1 了解消息映射注意: 查看一个.h文件时有一个很好的捷径,如果这个文件的名称出现在Editor窗口中,只需要右击它,然后从弹出式菜单中选择OPen Document "Filename.h", 这种方式也适用于标准库头文件14.1.2 消息类型 程序可能要
阅读全文
摘要:// 第13章 使用MFC编写Windows程序/*基于MFC的程序的基本元素SDI应用程序和MDI应用程序的区别如何使用MFC Application Wizard 生成SDI和MDI程序MFC Application Wizard将生成哪些文件,这些文件的内容是什么在MFC Application Wizard生成的程序中有哪里些主要的类,它们是如何相互连接的定制MFC Application Wizard生成的程序的通用方法//13.1 MFC的文档/视图概念//使用MFC编写应用程序,意味着要接受一种特有的程序结构,其中应用程序数据是以特定的方式存储和处理的MFC程序的结构包括两个面向
阅读全文
摘要:#include <iostream>using namespace std;/*//第十二章 Windows编程的概念//窗口的基本结构//windows API的概念和用法//windows 消息的概念,如何处理windows消息//windows程序中常用的符号//windows程序中的基本结构//如何使用windows API创建简单的程序,该程序的工作原理//Micrsosft Foundation Classes//基于MFC的程序的基本元素//Windows Forms //Windows Forms应用程序的基本元素//12.1 Windows 编程基础//12.1
阅读全文
摘要://第十一章调试技术// 如何在VisualC++2008调试器的控制下运行程序// 如何每次一条语句地单步调试程序// 如何监控或修改程序中变量的值// 如何监控程序中表达式的值// 调用堆栈// 断言的概念,如何使用断言来检查代码// 如果给程序添加调试代码// 如何检测本地C++程序中的内存泄漏// 在C++/CLI程序中如何使用执行跟踪功能,如何生成调试输出//11.1.1 程序故障//语法错误: 这些是因形式错误语句而引起的错误,比如漏写了语句最后的分号,或者在应该使用逗号的地方使用冒号,我们不必过多担心话法错误,编译器能够了识别所有语法错误,通常还会给相当有益的关于错误的提示信息,
阅读全文
摘要://////////////////////////////////////////////////////////////////////////10.4 关联容器//关联容器(如map<K,T>)最重要的特性是无需搜索就可检索特定对像,关联容器内容T类型对像的位置由与对像一起提供的类型为K的键确定,因此只要提供适当的键就可以快速地检索任何对像,该键实际上是一个确定映射中的条目顺序的排序键//对于set<T>和nultiset<T>容器,对像作为它们自己的键,//10.4.1 使用映射容器//映射容器的模板在家<map>头文件中定义,当创建ma
阅读全文
摘要:// 第十章标准模板库//.cpp : 定义控制台应用程序的入口点。//STL提供的功能//容器的定义以及如何创建和使用容器//迭代器的定义以及如休在容器中使用迭代器//STL可用的算法类型以及如何应用较常用的算法//函数对像的定义以及如何在STL中使用函数对像//如何使用支持C++/CLI类类型的STL版本//10.1 标准模板库的定义//STL包含六种组件: 容器, 容器适配器 迭代器 算法 函数对像和函数适配器//vector<string> strings;//vector<doble> data;//STL容器类的模板在标准头文件中定义//<vector
阅读全文
摘要:// 第九章练习题.cpp: 主项目文件。//第一题://1 没有定义析构函数,没有销毁p指针//2 默认构造函数没有初始化p指针//看到答案以后,自己还是想得太少了/*#include <iostream>using namespace System;using namespace std;class CBadClass{private: int len; char* p;public: CBadClass(const char* str = 0):len(0) { if(p) //判断是否存在p指针 { len = strlen(str); //开度 p = new ch...
阅读全文
摘要://///////////////////////////////////////////////////////9.9.5 类和程序集//C++/CLI应用程序总是驻留在一个或多个程序集中,因此C++/CLI类也要驻留在某个程序集中//C++/CLI为类添加了确定某个类能否从驻留的程序集外部访问的可见性说明符,类驻留的程序集被称为该类的父程序集//除了本地C++所有的public prvate和protected成员访问说明符以外. C++/CLI还为类成员添加了几个确定在不同程序集中可以从什么集团访问类成员的访问说明符//1 类和接口的可见性说明符//我们可以将非嵌套类,接口或枚举的可见.
阅读全文
摘要://////////////////////////////////////////////////////////////////////////////////9.6.7 虚析构函数/*#include "stdafx.h"#include <iostream>using namespace std;using namespace System;const double PI = 3.14159265;//定义纯虚函数class CContainer{public: virtual double Volume() const = 0; //定义虚函数Volu
阅读全文
摘要:// 第九章类的继承和虚函数//.cpp: 主项目文件。//1 继承如何与面向对像的编程思想适应//2 根据现有类定义新类//3 使用protected关键字为类成员指定新的访问特性//4 如何使某个类成为另一个类的友元//5 虚函数及其使用方法//6 纯虚函数//7 抽像类//8 虚析构函数的概念,何时时使用虚析构函数//9.2 类的继承//派生类不继承的基类成员仅有析构函数,构造函数以及任何重载赋值运算符的成员函数//9.2.1 基类的概念#include "stdafx.h"#include <iostream>using namespace std;us
阅读全文
摘要:{public: CBottle(double height, double diameter) { m_Height = height; m_Diameter = diameter; } friend CCarton::CCarton(const CBottle& aBottle);private: double m_Height; double m_Diameter; //这是定义友元函数的模式};CCarton::CCarton(const CBottle& aBottle){ m_Height = aBottle.m_Height; m_Length = 4.0 ...
阅读全文
摘要:// 第八章深入理解类 练习题2012-11-04//.cpp: 主项目文件。//第一题/*#include "stdafx.h"#include <iostream>#include <string>using namespace std;using namespace System;class ECS{private: int value; bool boolecs;public: ECS(int va=0, bool ecs = false):value(va), boolecs(ecs){ } void print(); //重载运算符+ E
阅读全文
摘要:strcpy_s 和 strcat_s的用法 strcpy_s是系统的安全函数,微软在2005后建议用一系统所谓安全的函数,这中间就有strcpy_s取代了strcpy,原来strcpy函数,就象gets函数一样,它没有方法来保证有效的缓冲区尺寸,所以它只能假定缓冲足够大来容纳要拷贝的字符串。所以用strcpy_s代替,下面有一个使用strcpy_s的例子:strcpy_s是以字节为单位的参数,它用来确认缓冲区大小。这允许strcpy_s函数可以进行运行时检查,以确定写入的字符没有超过目标缓冲区的边界。所以它比strcpy好用,我还知道其他系统安全函数是在本来函数的后面加上“_s”,还有个遗憾
阅读全文