VC
HymanLiuTS
年过而立,又酸又臭,忙时敲代码,闲时读书写文章。
展开
-
VC开发中三种调试技术
一、调试信息输出到本地文件(1) 实现思路是定义一个变参函数 TraceLog(char * lpszFormat,...),作用是将传入的格式话字符串写入到本地文件TraceLog.txt中,在程序开发中能够随时调用并写入调试信息。 如:int number=123;TraceLog("hello world %d",number);可以将调试信息“hello worl原创 2015-04-21 13:57:18 · 1043 阅读 · 0 评论 -
MFC中利用序列化技术实现撤销功能
一、 CUndo类接口说明1.1 virtual void Serialize(CArchive& ar)=0;作用:纯虚函数,序列化从CUndo继承的子类,主要作用是对该子类各个成员变量进行序列化,程序中完成一步操作时,保存各个成员变量的值。1.2 virtual void DeleteContents() = 0;作用:纯虚函数,由从CUndo继承的子类进行实现,主要作原创 2016-02-28 16:49:10 · 5424 阅读 · 1 评论 -
MFC对话框程序加载菜单、加速键、工具栏
MFC中程序分为三种:多文档程序、单文档程序和对话框程序,其中多文档和单文档程序默认带有菜单、加速键以及工具栏,下面介绍对话框程序中加载菜单、加速键和工具栏的方法。首先,新建一个对话框的程序,名称叫做DlgTest,如下图:一、加载菜单首先,新建一个菜单,如下图所示,主菜单名称叫“文件”,添加下拉菜单“新建”、“关闭”。菜单ID叫做:IDR_TEST_MENU方法一原创 2016-02-28 16:30:46 · 2575 阅读 · 0 评论 -
Windows GDI+坐标系统详解(二)
在上一篇中,作者详细介绍了GDI+中坐标系的概念,并以示例的方式进行了解释。以下代码,是根据作者的示例,编写的VC++代码:1.首先新建一个基于对话框的MFC程序项目名称GDIMan,在其app的头文件中声明Gdiplus的令牌,用于Gdiplus的初始化ULONG_PTR m_gdiplusToken;2.在app的InitInstance()函数中编写以下代码,进行Gdiplu原创 2015-12-02 22:08:02 · 2152 阅读 · 2 评论 -
MFC GDI+实现以鼠标为中心缩放图片(并且可以拖动)
原文点击打开链接在开始之前我们先了解一下GDI+中的坐标系统:世界坐标(World Coordinate) 是用来制作特定绘图自然模型的坐标。页面坐标(Page Coordinate) 则是指绘图接口(例如窗体或控件) 使用的坐标系统。设备坐标(Device Coordinate) 是在其上进行绘图的实体装置(例如屏幕或纸张) 所使用的坐标。“世界变换”会将世界坐标转换为页面坐转载 2015-12-02 19:37:37 · 10783 阅读 · 3 评论 -
Windows GDI+坐标系统详解(一)
原文出自http://blog.csdn.net/smstong/article/details/6405482GDI+中的坐标系1 什么是坐标系 坐标系就是确定一组数据位置的标尺。按按照维数分为2维平面坐标系和3维空间坐标系。其实2维坐标系也是z=0的3维坐标系的特例。 坐标系有三要素,一是原点,二是方向,三是单位大小。如果两个坐标系这三点完全一样转载 2015-12-02 21:30:39 · 3439 阅读 · 0 评论 -
MFC中实现缩放画图的另一种方式
在前面的一篇文章中,作者详细介绍了利用GDI+的API实现缩放图像的方法。下面介绍另外一种可以实现图形缩放的方法。在windows的绘图中,绘图的逻辑单位和视图的物理单位之间的对应关系是可以改变的,通过 CDC::SetMapMode可以改变这种关系。而本次实现图形缩放的功能原理就是通过改变这种映射关系来实现。CDC::SetMapMode在MSDN中这样解释:CDC::SetMapM原创 2015-12-14 09:47:46 · 10815 阅读 · 1 评论 -
VS2010每次编译都重新编译整个工程的解决方案
在使用VS2010编译C++程序的时候,每次修改工程中的某一个文件,点击“生成-仅用于项目-仅生成**”时,往往都是整个工程都需要重新编译一遍。由于这个工程代码量太大,每次编译完成都需要将近10分钟左右的时间编译。最烦人的时候是当编译完了出错,修改了错误再次编译,浪费很多时间。那么怎么配置VS2010像VC6.0那样默认的可以只编译修改后的文件呢?针对这个问题的解决办法网络上也有不少,在这转载 2015-11-20 19:24:07 · 1966 阅读 · 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;arar.原创 2015-11-23 18:53:01 · 2023 阅读 · 0 评论 -
MFC的序列化技术(二)
上面介绍了在函数中对int、float等基本数据类型的序列化,下面介绍在MFC中怎么定义支持序列化的类一、定义一个类CStudent,从CObject公有派生,从CObject公有派生是我们自己定义的类支持序列化的一个必要条件。class CStudent:public CObject{};二、在类内和类外添加支持序列化的宏,其中类内宏的格式是DECLARE_SERIA原创 2015-11-23 19:02:23 · 1017 阅读 · 0 评论 -
VC静态库的创建和使用
一、静态库项目的创建和生成。打开VS2010,文件->新建->项目->windows应用程序,选择静态库项目(项目名称Cpplib)。在项目中新建如下CMath类:class CMath{public: int add(int a,int b) { return a+b; }};生成项目,可生成Cpplib.lib文件。二、静态库的使用1、隐式调用在项目属性原创 2015-11-13 19:18:35 · 2987 阅读 · 0 评论 -
DLL中的main函数
用VS2010生成的dll函数中,有默认主函数,如果我们想在进入dll之间进行一些程序的初始化操作或者在程序结束后,进行资源回收等操作,在cpp文件中可进行如下DllMain函数的定义:BOOL CALLBACK DllMain(HINSTANCE hDll,DWORD fdwReason,LPVOID Reserve){ printf(" dll \n"); switc原创 2015-10-28 21:00:46 · 4175 阅读 · 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原创 2015-11-09 20:26:23 · 1440 阅读 · 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文件原创 2015-10-28 20:59:13 · 1669 阅读 · 0 评论 -
VC中生成动态链接库的三种方式(导出函数)
开发环境:VS2010一 创建动态链接库项目文件->新建->项目,选择建立Win32项目 点击确认后,点击下一步,看大如下界面,选择dll,再点击完成。 生成如下图所示的文件结构: 二 导出动态链接库方法一 声明导出:1、以C++的方式声明导出,在Cppdll.cpp文件中添加下面的函数,在函数声明前添加_declspec(dllexpo原创 2015-10-28 20:55:42 · 7172 阅读 · 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、使用获取原创 2015-11-05 09:11:19 · 8735 阅读 · 0 评论 -
VC中三种获取本地时间的方式
一、利用GetLocalTime()函数实现 #include //需要包含windows.h的头文件,可在Win32 MFC环境下使用 SYSTEMTIME time; GetLocalTime(&time); //获取本地时间,将时间存入到结构体time中。 char buff[252]={};//定义一个buff存时间原创 2015-04-21 15:39:03 · 2300 阅读 · 0 评论 -
VC中进行ActiveX控件的开发
开发环境:VS2010开发步骤:一、ActiveX控件项目的新建1、 文件->新建->项目,选择MFC ActiveX控件,项目名称叫做MCDocx。 2、 新建完成后,默认生成如图所示的类视图结构:其中CMCDocxApp类用于控制整个控件的程序执行流程,默认生成InitInstance()和ExitInstance()两个成员函数,用于初始化控件以原创 2015-10-23 17:26:01 · 3573 阅读 · 1 评论 -
vs2010如何检测内存泄漏
原文地址:http://blog.csdn.net/hxh129/article/details/7992519摘要本文分析了Windows环境使用MFC调试内存泄露的技术,介绍了在Windows环境下用VC++查找,定位和消除内存泄露的方法技巧。关键词:VC++;CRT 调试堆函数;试探法。编译环境VC++6.0技术原理检测内存泄漏的主要工具是调试器和转载 2016-02-28 16:09:12 · 2194 阅读 · 0 评论