关闭

MFC中利用序列化技术实现撤销功能

一、 CUndo类接口说明 1.1 virtual void Serialize(CArchive& ar)=0; 作用:纯虚函数,序列化从CUndo继承的子类,主要作用是对该子类各个成员变量进行序列化,程序中完成一步操作时,保存各个成员变量的值。 1.2 virtual void DeleteContents() = 0; 作用:纯虚函数,由从CUndo继承的子类进行实现,主要作...
阅读(1636) 评论(0)

MFC对话框程序加载菜单、加速键、工具栏

MFC中程序分为三种:多文档程序、单文档程序和对话框程序,其中多文档和单文档程序默认带有菜单、加速键以及工具栏,下面介绍对话框程序中加载菜单、加速键和工具栏的方法。 首先,新建一个对话框的程序,名称叫做DlgTest,如下图: 一、加载菜单 首先,新建一个菜单,如下图所示,主菜单名称叫“文件”,添加下拉菜单“新建”、“关闭”。菜单ID叫做:IDR_TEST_MENU 方法一...
阅读(1149) 评论(0)

vs2010如何检测内存泄漏

原文地址:http://blog.csdn.net/hxh129/article/details/7992519 摘要 本文分析了Windows环境使用MFC调试内存泄露的技术,介绍了在Windows环境下用VC++查找,定位和消除内存泄露的方法技巧。 关键词:VC++;CRT 调试堆函数;试探法。 编译环境 VC++6.0 技术原理 检测内存泄漏的主要工具是调试器和...
阅读(743) 评论(0)

MFC中实现缩放画图的另一种方式

在前面的一篇文章中,作者详细介绍了利用GDI+的API实现缩放图像的方法。下面介绍另外一种可以实现图形缩放的方法。 在windows的绘图中,绘图的逻辑单位和视图的物理单位之间的对应关系是可以改变的,通过 CDC::SetMapMode可以改变这种关系。而本次实现图形缩放的功能原理就是通过改变这种映射关系来实现。 CDC::SetMapMode在MSDN中这样解释: CDC::SetMapM...
阅读(2685) 评论(0)

Windows GDI+坐标系统详解(二)

在上一篇中,作者详细介绍了GDI+中坐标系的概念,并以示例的方式进行了解释。 以下代码,是根据作者的示例,编写的VC++代码: 1.首先新建一个基于对话框的MFC程序项目名称GDIMan,在其app的头文件中声明Gdiplus的令牌,用于Gdiplus的初始化 ULONG_PTR m_gdiplusToken; 2.在app的InitInstance()函数中编写以下代码,进行Gdiplu...
阅读(974) 评论(2)

Windows GDI+坐标系统详解(一)

原文出自http://blog.csdn.net/smstong/article/details/6405482 GDI+中的坐标系 1 什么是坐标系        坐标系就是确定一组数据位置的标尺。按按照维数分为2维平面坐标系和3维空间坐标系。其实2维坐标系也是z=0的3维坐标系的特例。        坐标系有三要素,一是原点,二是方向,三是单位大小。如果两个坐标系这三点完全一样...
阅读(866) 评论(0)

MFC GDI+实现以鼠标为中心缩放图片(并且可以拖动)

原文点击打开链接 在开始之前我们先了解一下GDI+中的坐标系统: 世界坐标(World Coordinate) 是用来制作特定绘图自然模型的坐标。 页面坐标(Page Coordinate) 则是指绘图接口(例如窗体或控件) 使用的坐标系统。 设备坐标(Device Coordinate) 是在其上进行绘图的实体装置(例如屏幕或纸张) 所使用的坐标。 “世界变换”会将世界坐标转换为页面坐...
阅读(2351) 评论(0)

MFC的序列化技术(二)

上面介绍了在函数中对int、float等基本数据类型的序列化,下面介绍在MFC中怎么定义支持序列化的类 一、定义一个类CStudent,从CObject公有派生,从CObject公有派生是我们自己定义的类支持序列化的一个必要条件。 class CStudent:public CObject { }; 二、在类内和类外添加支持序列化的宏,其中类内宏的格式是DECLARE_SERIA...
阅读(438) 评论(0)

MFC的序列化技术(一)

一、函数中运用序列化向本地文件存储和下载数据 序列化函数,将数据转换成二进制流,存储到本地文件: void save() { CFile file("d:\\1.dat",CFile::modeCreate|CFile::modeWrite); CArchive ar(&file,CArchive::store); int i=12; float f=3.1415; ar ar....
阅读(599) 评论(0)

VS2010每次编译都重新编译整个工程的解决方案

在使用VS2010编译C++程序的时候,每次修改工程中的某一个文件,点击“生成-仅用于项目-仅生成**”时,往往都是整个工程都需要重新编译一遍。由于这个工程代码量太大,每次编译完成都需要将近10分钟左右的时间编译。最烦人的时候是当编译完了出错,修改了错误再次编译,浪费很多时间。 那么怎么配置VS2010像VC6.0那样默认的可以只编译修改后的文件呢? 针对这个问题的解决办法网络上也有不少,在这...
阅读(1139) 评论(0)

VC静态库的创建和使用

一、静态库项目的创建和生成。 打开VS2010,文件->新建->项目->windows应用程序,选择静态库项目(项目名称Cpplib)。 在项目中新建如下CMath类: class CMath { public: int add(int a,int b) { return a+b; } };生成项目,可生成Cpplib.lib文件。 二、静态库的使用 1、隐式调用 在项目属性...
阅读(703) 评论(0)

VC中调用dll类的方法

使用dll中导出的类,需要提供dll,lib和头文件。 使用dll导出的类只有隐式导入一种方法, 如有包含导出类CMath的dll----classDll.dll,使用如下代码进行导入: #include "stdafx.h" #include "windows.h" #include "../classDll/Math.h" #pragma comment(lib,"../Debug/cl...
阅读(600) 评论(0)

VC中调用dll函数的两种方法

一、显式调用 1、定义函数指针 typedef int (*dll_mul)(int a,int b); 2、加载dll,并获取其程序实例句柄 HINSTANCE hdll=loadlibrary("c:/cppDll.dll"); 3、从dll实例句柄中获取函数指针 dll_mul mymul=(dll_mul)GetProcAddress(hdll,"mul"); 4、使用获取...
阅读(811) 评论(0)

DLL中的main函数

用VS2010生成的dll函数中,有默认主函数,如果我们想在进入dll之间进行一些程序的初始化操作或者 在程序结束后,进行资源回收等操作,在cpp文件中可进行如下DllMain函数的定义: BOOL CALLBACK DllMain(HINSTANCE hDll,DWORD fdwReason,LPVOID Reserve) { printf(" dll \n"); switc...
阅读(678) 评论(0)

VC中导出类生成动态链接库的方式

利用dll导出类时,相比利用dll导出函数比较特殊。 导出时可在.h文件中,利用下面的代码进行导出: class _declspec(dllexport) CMatch { public: int Add(int add1,int add2); int Sub(int sub1,int sub2); }; 然后在.cpp对类进行实现即可。 在导入该dll中的类时,需要在类的声明前(.h文件...
阅读(746) 评论(0)
19条 共2页1 2 下一页 尾页
    个人资料
    • 访问:368844次
    • 积分:6476
    • 等级:
    • 排名:第3932名
    • 原创:292篇
    • 转载:17篇
    • 译文:1篇
    • 评论:60条
    其它平台
    博客专栏