
C/C++
文章平均质量分 72
Zebulon
这个作者很懒,什么都没留下…
展开
-
使用MFC CImage类绘制PNG图片时遇到的问题
转载:http://blog.youkuaiyun.com/chenlycly/article/details/9193143 为了测试CImage绘制PNG图片的效果,我们用截图软件截得一张360的界面,然后使用PhotoShop等工具在图片的周边加上了透明的区域,然后保存成PNG图片文件。CImage首先从文件中加载,即[cpp] view plaincopy转载 2013-08-07 01:14:53 · 2072 阅读 · 0 评论 -
图像灰度化原理和实现
图像的灰度化原理和实现一、图像的灰度化处理的基本原理将彩色图像转化成为灰度图像的过程成为图像的灰度化处理。彩色图像中的每个像素的颜色有R、G、B三个分量决定,而每个分量有255中值可取,这样一个像素点可以有1600多万(255*255*255)的颜色的变化范围。而灰度图像是R、G、B三个分量相同的一种特殊的彩色图像,其一个像素点的变化范围为255种,所以在数字图像处理种一般转载 2013-06-19 21:21:55 · 3998 阅读 · 0 评论 -
函数调用约定
函数调用约定有多种1、__stdcall调用约定相当于16位动态库中经常使用的PASCAL调用约定。在32位的VC++5.0中PASCAL调用约定不再被支持(实际上它已被定义为__stdcall。除了__pascal外,__fortran和__syscall也不被支持),取而代之的是__stdcall调用约定。两者实质上是一致的,即函数的参数自右向左通过栈传递,被调用的函数在返回前清理传送参数转载 2013-06-08 14:13:55 · 582 阅读 · 0 评论 -
回调函数
简介 对于很多初学者来说,往往觉得回调函数很神秘,很想知道回调函数的工作原理。本文将要解释什么是回调函数、它们有什么好处、为什么要使用它们等等问题,在开始之前,假设你已经熟知了函数指针。 什么是回调函数? 简而言之,回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。转载 2013-06-08 15:14:37 · 644 阅读 · 0 评论 -
c++学习笔记5
C++多态:C++和Java不同的是,当方法不被设为virtual时,子类对父类代码重写,实现不了多态静态类型:编译时确定下的类型动态类型:运行时变量实际绑定的类型动态绑定:指针或引用调用virtual-member function时,产生动态绑定:绑定到指针(引用)动态类型的方法纯虚函数:无法实现的方法,类似Java接口中的方法virtual retType fun原创 2013-06-07 15:25:13 · 853 阅读 · 0 评论 -
c++学习笔记4
public:继承父类共有:子类共有父类保护:子类保护父类私有:子类不可访问protected:继承父类共有:子类保护父类保护:子类保护父类私有:子类不可访问private:继承父类共有:子类私有父类保护:子类私有父类私有:子类不可访问继承只会让权限变小子类构造函数可使用父类构造函数进行初始化父类没有默认构造函数,子类需要显示的调用父类的构造原创 2013-06-06 11:37:06 · 987 阅读 · 0 评论 -
c++学习笔记学习笔记1
C++初始化:int a(1);剥离=是初始化还是赋值的问题静态区,未初始化,初值为0::作用域运算符,全局作用域名字为空time.h ctime的区别 是ctime在std名空间下(作用域)10.5 double类型 8字节10.5F float类型 4字节printf("%d,%d",10.5, 10);printf类型不安全,10.5的输出可能是任意数,一个错全部都回原创 2013-06-03 14:39:50 · 775 阅读 · 0 评论 -
c++学习笔记3
自赋值问题n += m右边返回的是左操作数的引用如何使得类禁止拷贝:将拷贝函数作为私有的或者保护的如果不重写operator=,编译器会自动生成,按位赋值通常,如果需要些析构函数,那么就需要显示写出拷贝构造和operator=重载前++返回一个引用,如:Clock& operator++(){}重载后++返回一个对象副本,并需要加一个int在参数表中以区分前++,如原创 2013-06-05 15:38:52 · 568 阅读 · 0 评论 -
C++学习笔记2
Clock c;//在栈上Clock *p = new Clock();//堆上this:返回当前对象,作用在于连锁调用void setTime(){ ....... return *this;}c.setTime().showTime();默认构造函数:不传递参数就可以调用的构造函数,最多只能一个,建议创建一个。错误:默认构造函数一定没有参数如:Clock原创 2013-06-04 13:53:57 · 694 阅读 · 0 评论 -
C语言学习笔记
内存区域:堆 栈 代码区 静态区字符串常量在静态区中栈:不要返回栈中的地址内存释放后,赋值为NULL原创 2013-06-03 13:32:34 · 665 阅读 · 0 评论 -
BMP文件存放像素的方法
BMP文件格式存放像素的方法:一个像素由3个字节来完成:从下到上,从左到右,BGRBGR的顺序原创 2013-06-21 14:50:19 · 1926 阅读 · 0 评论 -
mfc 位图显示方法 使用cbitmap和hbitmap
显示位图文件有n中方法:1 利用双缓冲技术;源码:void showBMP(){CString str; CString filter="Bitmap Files(*.bmp)|*.bmp|Wmf Files(*.wmf)|*.wmf||"; CFileDialog dlg(TRUE,NULL,NULL,OFN_HI转载 2013-06-24 11:34:11 · 2495 阅读 · 0 评论 -
MFC学习之 重载OnEraseBkgnd()
重载OnEraseBkgnd()原文地址:http://blog.youkuaiyun.com/abidepan/article/details/7956621在使用VC进行绘图时,最郁闷的就是屏幕闪烁问题。有时只能使用双缓冲去解决,当然更多的时候是去忍受。有没有什么这种的方法?有,那就是重载OnEraseBkgnd()函数。该函数控制重绘图的背景刷新,默认将窗口用系统背景颜色填充,即用白色将转载 2013-08-03 16:08:33 · 8703 阅读 · 2 评论 -
创建标题栏有时间的对话框
首先建立一个MFC对话框程序,然后在对话框类里添加如下成员private: CTime m_beginTime;//软件启动时间 CTime m_EndTime;//软件结束时间 然后在初始化对话框函数OnInitDialog()里添加如下代码 m_beginTime = CTime::GetCurrentTime();//给予当前软件的启动时间 SetTimer转载 2013-08-01 13:53:07 · 1052 阅读 · 0 评论 -
c++单例模式
原文地址:http://blog.youkuaiyun.com/hackbuteer1/article/details/7460019单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统转载 2013-07-29 13:58:21 · 791 阅读 · 0 评论 -
mfc 图片拖拽效果
拖动是界面编程频繁使用的一个效果,在windows系统下可谓大行其道。纵观时下的应用软件几乎各个都支持各种各样拖动的效果,windows7更是把拖动做到了极致。其实说起来拖动的实现也很简单,对于有句柄的对象都可以通过MoveWindow或SetWindowPos实现位置变动,而没有句柄的对象实现拖动无非就是做些参数修改,说到底实现拖动就是在OnLButtonDown、OnMouseMove和OnL转载 2013-07-22 14:09:27 · 4816 阅读 · 1 评论 -
cstring转为char*
在Visual C++.NET2005中,默认的字符集形式是Unicode,但在VC6.0等工程中,默认的字符集形式是多字节字符集(MBCS:Multi-Byte Character Set),这样导致在VC6.0中非常简单实用的各类字符操作和函数在VS2005环境下运行时会报各种各样的错误,这里总结了在Visual C++.NET2005环境中Unicode字符集下CString和char *之转载 2013-07-05 15:28:45 · 1108 阅读 · 0 评论 -
软件调试系列:崩溃篇之内存值异常
原文链接:http://blog.youkuaiyun.com/cuiweican/article/details/7407469本来想尽快写一系列文章来介绍各种常见缺陷的软件调试文章,但由于工作原因并且大家的反映似乎不太好,所以我也有点偷懒了。不管怎么样,正好现在有空,咱来聊一聊最近我查的一个崩溃BUG吧。前几天接手排查一个崩溃BUG,测试部报告说该BUG在两台电脑上出现过,并且错误提示信息一模一样转载 2013-07-04 09:50:38 · 2939 阅读 · 0 评论 -
c++文件读写总结
在C++中如何实现文件的读写?作者: infobillows 发表日期: 2007-04-03 21:33 点击数: 465一、ASCII 输出为了使用下面的方法, 你必须包含头文件(译者注:在标准C++中,已经使用取代,所有的C++标准头文件都是无后缀的。)。这是 的一个扩展集, 提供有缓冲的文件输入输出操作. 事实上, 已经被包含了, 所以你不必包含所有这两个文件,转载 2013-07-18 11:06:53 · 801 阅读 · 0 评论 -
BMP位图文件结构及平滑缩放
-- 用普通方法显示BMP位图,占内存大,速度慢,在图形缩小时,失真严重,在低颜色位数的设备上显示高颜色位数的图形图形时失真大。本文采用视频函数显示BMP位图,可以消除以上的缺点。---- 一、BMP文件结构 ---- 1. BMP文件组成 ---- BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成。 ---- 2. BMP文件头 ----转载 2013-07-17 11:23:03 · 1345 阅读 · 0 评论 -
边缘检测
图像边缘的种类可以分为两种:一种称为阶跃性边缘,它两边像素的灰度值有着显著的不同;另一种称为屋顶状边缘,它位于灰度值从增加到减少的变化转折点。对于阶跃性边缘,二阶方向导数在边缘处呈零交叉;而对于屋顶状边缘,二阶导数在边缘处取极值。通常的边缘提取方法是先通过边缘算子找到图像中可能的边缘点,再把这些点连接起来形成封闭的边界。边缘检测困难在于物体之间相接触、互遮挡或者由于噪声等原因引起的边缘间断。转载 2013-06-26 13:33:18 · 1631 阅读 · 0 评论 -
windows编程学习笔记
只有在WM_PAINT消息中可以使用BeginPaint、EndPaint等函数、其他消息中想要实现画图需要时用GetDC、ReleaseDC等文件路径使用\\隔开,因为\时转义字符画刷画笔使用:void DrawARectangle(HDC hdc) { HPEN hpen, hpenOld; HBRUSH hbrush, hbrushOld;原创 2013-06-09 15:43:29 · 873 阅读 · 0 评论 -
彻底搞定C指针-函数名与函数指针
函数名与函数指针一 通常的函数调用 一个通常的函数调用的例子://自行包含头文件void MyFun(int x); //此处的申明也可写成:void MyFun( int );int main(int argc, char* argv[]){ MyFun(10); //这里是调用MyFun(10);函数 return转载 2012-10-19 20:23:12 · 1160 阅读 · 0 评论 -
C++ 何时使用引用参数(一些指导原则)
使用引用参数的原因:1. 程序员能够修改调用函数中的数据对象2. 通过传递引用而不是整个数据对象,可以提高程序的运行速度。 当数据对象较大时(如结构和类对象),第二个原因最重要,这些也是使用指针参数的原因。这是有道理的,因为引用参数实际上是基于指针的代码的另一个接口。 那么什么时候使用引用、什么时候使用指针?什么时候又应该按值传递呢?下面是一些指导原则:转载 2012-08-28 17:37:03 · 1730 阅读 · 0 评论 -
C++中 public和private派生类继承问题和访问权限问题
当一个子类从父类继承时,父类的所有成员成为子类的成员,此时对父类成员的访问状态由继承时使用的继承限定符决定。1.如果子类从父类继承时使用的继承限定符是public,那么(1)父类的public成员成为子类的public成员,允许类以外的代码访问这些成员;(2)父类的private成员仍旧是父类的private成员,子类成员不可以访问这些成员;(3)父类的protec转载 2012-06-08 20:05:11 · 910 阅读 · 0 评论 -
C++中为什么使用bool类型
1.1. 为什么要用bool类型、因为我曾经看到过C++程序员,使用着C++的编译器,却仍然在使用BOOL、TRUE、FALSE等宏来表达现实世界中的二值事物,令我很不解,前去询问才知是“习惯”。显然,它以前是使用C语言编程的,而且使用这些宏做了很多事,也从来没有感觉到不好,为什么要用内置的bool类型呢,至少有两个优点,下面分别讨论。1.1.1. 提高程序的可读性Boolean(转载 2012-06-08 19:28:04 · 13152 阅读 · 1 评论 -
STL速成
这是本小人书。原名是《using stl》,不知道是谁写的。不过我倒觉得很有趣,所以化了两个晚上把它翻译出来。我没有对翻译出来的内容校验过。如果你没法在三十分钟内觉得有所收获,那么赶紧扔了它。文中我省略了很多东西。心疼那,浪费我两个晚上。译者:karycontact:karymay@163.netSTL概述STL的一个重要特点是数据结构和算法的分离。尽管这是个简单的概念,但这种分离转载 2012-05-14 21:21:53 · 640 阅读 · 0 评论 -
c++纯虚函数与虚函数的区别
作者总结:1.纯虚函数声明如下: virtual ReturnType FunctionName(Parameter)=0; 纯虚函数一定没有定义,纯虚函数用来规范派生类的行为,即接口。包含纯虚函数 的类是抽象类,抽象类不能定义实例,但可以声明指向实现该抽象类的具体类的指针或引用。2.虚函数声明如下:virtual ReturnType FunctionName(P转载 2012-05-15 10:20:15 · 768 阅读 · 0 评论 -
C++基础--友元
C++基础--友元我们知道:类的公有成员能够在类外访问,私有的成员只能被类的其它成员函数访问。在C++中,可以定义友元,如果某一个函数定义为类的友元,则该函数就可以访问该类的私有成员,下面举例说明友元函数的使用。假定我们已经定义了两个集合类变量,一个为整型数集合,另一个为实型数集合:程序段10-7 class IntS转载 2012-05-15 10:25:20 · 1318 阅读 · 0 评论 -
C ++ delete 和delete[]
【原文引用如下】:C++告诉我们在回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象的内存空间的时候用 delete[]。 关于 new[] 和 delete[],其中又分为两种情况:(1) 为基本数据类型分配和回收空间;(2) 为自定义类型分配和回收空间。 对于 (1),上面提供的程序a可以证明了 delete[] 和 de转载 2012-05-15 10:58:05 · 17441 阅读 · 4 评论 -
c++引用
一、引用的概念 引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。引用的声明方法:类型标识符 &引用名=目标变量名; 说明:(1)&在此不是求地址运算,而是起标识作用。 (2)类型标识符是指目标变量的类型。 (3)声明引用时,必须同时对其进行初始化。 (4)引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,且转载 2012-05-15 11:14:55 · 643 阅读 · 0 评论 -
STL算法 介绍
算法部分主要由头文件,和组成。是所有STL头文件中最大的一个,它是由一大堆模版函数组成的,可以认为每个函数在很大程度上都是独立的,其中常用到的功能范围涉及到比较、交换、查找、遍历操作、复制、修改、移除、反转、排序、合并等等。体积很小,只包括几个在序列上面进行简单数学运算的模板函数,包括加法和乘法在序列上的一些操作。中则定义了一些模板类,用以声明函数对象。一、查找算法adjace转载 2012-05-17 17:22:48 · 1093 阅读 · 0 评论 -
STL QUEQUE的使用
引自http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcstdlib/html/vcsampsamplequeuefunctionsstlsample.aspqueue FunctionsIllustrates how to use the queue::push, queue::转载 2012-05-17 18:18:02 · 923 阅读 · 0 评论 -
类模声明不可与定义分离的原因
我在VC6。0下定义了一个模板类 定义写在。H文件里 为什么函数说明写在。C的文件里~~`如同一般的类一样~~~就编译不过去 和说明写在一起就可以呢? 如 template class MyChain { public: MyChain(); virtual ~MyChain(); }; 和 template MyChai转载 2012-06-19 20:34:53 · 969 阅读 · 0 评论 -
STL中list用法
STL中list用法STL中list的使用:STL中的list就是一双向链表,可高效地进行插入删除元素。现总结一下它的操作。文中所用到两个list对象c1,c2分别有元素c1(10,20,30) c2(40,50,60)。还有一个list::iterator citer用来指向c1或c2元素。list对象的声明构造():A. listc0;转载 2012-06-23 18:53:41 · 526 阅读 · 0 评论 -
STL各种排序(转载)
STL各种排序(转载)//By skywindSTL中有多种排序算法,各有各的适用范围,下面听我一一道来:I、完全排序sort()首先要隆重推出的当然是最最常用的sort了,sort有两种形式,第一种形式有两个迭代器参数,构成一个前开后闭的区间,按照元素的 less 关系排序;第二种形式多加一个指定排序准则的谓词。sort基本是最通用的排序函数,它使用快速排序算法,并且在递转载 2012-09-06 10:33:19 · 1016 阅读 · 0 评论 -
c++比较日期 技巧
基本思想是:将日期转化成字符串,通过字符串的比较,比较出日期代码实现:bool Date::operator{stringstream strstream, stristream;strstream string date = strstream.str();stristream string newDate = stristream.str();原创 2012-08-29 17:20:12 · 7351 阅读 · 0 评论 -
C++ Pair 使用
• Pair的创建和初始化 C++代码 pair test1; pairint> test2; 调用默认构造器对其初始化。所以,test1是包含两个空string类型的pair对象;test2中的int型成员获得0. C++代码 pair user("James","harden");转载 2012-06-23 18:58:28 · 1448 阅读 · 0 评论 -
C++中的vector使用范例
一、概述vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector是一个容器,它能够存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,可以动态改变大小。例如:// c语言风格int myHouse[100] ;// 采用vectorvector vecMyHouse转载 2012-06-24 08:30:18 · 716 阅读 · 0 评论 -
STL map
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有转载 2012-06-23 19:27:45 · 591 阅读 · 0 评论