自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 资源 (20)
  • 收藏
  • 关注

转载 C语言宏定义##连接符和#符的使用

#include#define f(a,b) a##b#define g(a) #a#define h(a) g(a)int main(){ printf("%s\n",h(f(1,2))); printf("%s\n",g(f(1,2))); return 0;}在宏定义里,a##b就是把a,b联接起来,比如f(1,2)就是12,但是是数。#a就是把a转化成字串

2015-12-23 16:59:30 22071 1

转载 C,C++宏中#与##的讲解

文中__FILE__与示例1可以参见《使用ANSI C and Microsoft C++中常用的预定义宏》宏中的#的功能是将其后面的宏参数进行字符串化操作(Stringizing operator),简单说就是在它引用的宏变量的左右各加上一个双引号。如定义好#define STRING(x) #x之后,下面二条语句就等价。       char *pChar = "hello";

2015-12-23 16:57:32 676

转载 使用OutputDebugString帮助调试

前面我已经介绍了使用TRACE来帮助我们调试,但使用TRACE有一个限制,只能在将程序DEBUG编译状态下才能使用,下面我们介绍OutputDebugString函数,通过它,可以在在DEBUG或RELEASE情况也可以输出调试日志,从而对那些要求编译为RELEASE的程序可以方便的调试。OutputDebugString的函数原型:void OutputDebugString(

2015-12-23 16:54:04 1858

原创 SendMessageTimeOut函数你使用过吗?

在WINDOW编程中,发送消息是很正常的事情,发送消息的常用API有SendMessage,PostMessage,PostThreadMessage。一般每个线程有两个队列,一个用来接受通过Send函数的消息,另外一个队列接收通过Post接收的消息。该两个函数的基本区别是,一个函数需要等待返回的,相当于函数调用,这个是SendMessage;另外一个是将消息放到对方的队列中直接返回。使用Post

2015-12-23 16:51:50 3954

转载 线程分离的定时器一点经验

说道定时器,很多人都会想到Windows定时器SetTimer吧!其实,项目里面原本确实是使用这种方法实现动画效果的,但是后来问题出现了!由于WM_TIMER消息优先级比较低,常常被丢失,导致一个WM_MOUSEMOVE消息都会影响整个动画的效果。  这时我就考虑,是否能给定时器创建一个单独的线程,接着就发现了“多媒体定时器”这个东西。它是一个高精确度定时器,一般的Windows定时器只能

2015-12-21 15:22:03 1310

原创 获得MFC窗口其它类指针的方法

获得CWinApp:-在CMainFrame,CChildFrame,CDocument,CView中直接调用AfxGetApp()或用theApp-在其它类中只能用AfxGetApp()获得CMainFrame:-在CMinApp中用AfxGetMainWnd()或者m_pMainWnd-在CChildFrame中可用GetParentFrame()-在其它类中用AfxG

2015-12-16 17:42:32 848

转载 排序方法的比较

首先给出各个排序方式的性能比较:排序方法的比较类别排序方法时间复杂度空间复杂度稳定性平均情况最好情况最坏情况辅助存储插入排序直接插入O(n2)

2015-12-14 10:52:55 1179

转载 排序方法的比较

首先给出各个排序方式的性能比较:排序方法的比较类别排序方法时间复杂度空间复杂度稳定性平均情况最好情况最坏情况辅助存储插入排序直接插入O(n2)

2015-12-14 10:43:13 270

转载 C/C++语言字符串操作总结大全(超详细)

字符串操作strcpy(p, p1) 复制字符串strncpy(p, p1, n) 复制指定长度字符串strcat(p, p1) 附加字符串strncat(p, p1, n) 附加指定长度字符串strlen(p) 取字符串长度strcmp(p, p1) 比较字符串strcasecmp忽略大小写比较字符串strncmp(p, p1, n) 比较指定长度

2015-12-14 10:36:53 4620

转载 写一个memcpy()函数你能拿几分?

不考虑性能的话,memcpy()在C99编译器下可以写为:void *memcpy(void *restrict dest, const void *restrict src, size_t n){ int i; const char *s = src; char *d = dest; assert(dest && src);

2015-12-09 14:52:07 855

转载 人人都该了解的十大算法

算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。 快速排序使用分治法(Divide and conquer)策

2015-12-09 14:12:15 1407

转载 面向对象六大原则

目录(?)[-]优化代码的第一步单一职责原则让程序更稳定更灵活开闭原则构建扩展性更好的系统里氏替换原则让项目拥有变化的能力依赖倒置原则系统有更高的灵活性接口隔离原则更好的可扩展性迪米特原则总结本文出自《Android源码设计模式解析与实战》中的第一章。 1、优化代码的第一步——单一职责原则单一职责原则的英文名称是Single Responsibili

2015-12-09 14:08:49 1157

转载 正确使用std::auto_ptr

1, auto_ptr类auto_ptr是一个模板类,定义如下:template typename Type>class auto_ptr {...};它存储的是一个指向Type的指针。顾名思义,auto_ptr是一种智能指针,它包含一个动态分配内存的指针,并在它生命周期结束的时候,销毁包含的指针所指向的内存。例1:     

2015-12-03 08:59:12 660

转载 正确使用std::auto_ptr

1, auto_ptr类auto_ptr是一个模板类,定义如下:template typename Type>class auto_ptr {...};它存储的是一个指向Type的指针。顾名思义,auto_ptr是一种智能指针,它包含一个动态分配内存的指针,并在它生命周期结束的时候,销毁包含的指针所指向的内存。例1

2015-12-03 08:50:03 459

原创 C++新特性:deprecated关键字

对大多数程序员来说,代码陈旧是个大问题。这个新属性提供了解决这个问题的系统方法。在C++14中,增加关键字:deprecated,主要用于管理过时的函数、接口、类等。它的用法方便又简单—只需要把[[deprecated]]标签放到声明的前面即可—可以是类,变量,函数,或者其他一些实体的声明。结果看起来像这样:class[[deprecated]] fla

2015-12-02 16:11:05 14990

转载 boost::enable_if与SFINAE原则

模板函数的重载遵循SFINAE原则(substitution-failure-is-not-an-error):当一个模板函数的返回值或参数类型无效的时候,该实例不会参与重载解析,也不会导致编译错误。利用这个原则,可以设计出具有选择性的模板函数。先看一个例子:int negate(int i) { return -i; }                        

2015-12-02 15:42:41 1404

转载 STL remove和erase

remove   算法描述:查找的得到第一个元素的位置,然后从此位置开始遍历容器,将后面的元素依次前移,跳过和value相同值的元素,也就是说,所有和value相同值的元素都会被覆盖,而其他的元素都会依次前移。最后remove返回"指向最后一个   '有用'   元素的iterator",但是在remove算法过程中,并没有修改原容器的size,以及end()。但是从逻辑角度看,最后的[  

2015-12-02 14:44:37 597

VC最简单最高效的枚举PC串口

VC最简单最高效的枚举PC串口,一个函数搞定

2015-01-21

多线程临界段类同步演示1

多线程同步演示1,采用MFC的临界段类CCriticalSection来实现多线程同步。

2013-02-18

多线程临界段同步演示1

多线程临界段同步演示1,用不同步和同步来对比多线程编程,直观深刻。采用API方式而非MFC类方式。

2013-02-18

多线程不同步演示2

多线程不同步演示2,一个线程写数据,另一个线程读取数据,在没有同步的情况下,会出现什么问题?若你不知道,你可以看看该源码。

2013-02-01

VC++实现的切换按钮控件源码

VC++实现的切换按钮控件源码,用一个按钮实现两个选项的切换,带切换动画,类似于开关按钮。自绘实现。

2013-01-23

多线程同时操作全局变量的出错演示

多线程同时操作全局变量的出错演示:演示了9个线程同时操作全局变量的出错结果,并采用自动验证结果,直到程序出错,有很好的演示和学习价值。

2013-01-21

线程间通信方式3:消息传递方式

线程间通信方式3:消息传递方式的演示。采用计算演示线程的执行,并采用用户界面线程来实时显示执行的进度,线程间的通信方式采用了3种方式相结合,对多线程间的通信有比较好的学习和研究价值。

2013-01-18

线程间通信方式2:参数传递方式

线程间通信方式2:参数传递方式。通过3类线程的创建方法,演示了给线程传递方式的方式,包括;单参数、多参数和类3类。

2013-01-11

不使用MFC类库而使用CRT标准库函数获取日期时间的简单方法演示

不使用MFC类库而使用CRT标准库函数获取日期时间的简单方法演示. 不用CTime等MFC类,而采用time.h等的函数就能获取系统的日期时间等,简单实用。

2013-01-09

采用全局变量方式实现多线程的通信

采用全局变量方式实现多线程的通信:用一个全局变量来控制时间显示线程的时间显示格式,比较简单,仅供参考和学习,欢迎大家多多交流。

2013-01-05

MFC创建用户界面线程方法2

MFC创建用户界面线程方法2:不用AfxBeginThead函数创建,而是采用CreateThread成员函数。演示了3个用户界面线程的相互通信和工作。采用另一种方法传递线程之间的参数。

2013-01-04

MFC用户界面线程的创建示例

MFC用户界面线程的创建示例,该实例演示了文件复制的自定义,并实时显示操作进度、操作时间等,采用工作线程和用户界面线程想结合,消息的传递等。

2013-01-04

采用AfxBeginThread创建工作线程

采用AfxBeginThread创建工作线程。采用素数的判断来演示,涉及到多参数的传递,消息的响应和信息的实时显示等。

2012-12-24

采用_beginthreadex创建多线程

采用_beginthreadex创建多线程,5个线程模拟5个人,共同合作完成一项任务,采用齐头并进的方式。对_beginthreadex编程有很好的指导意见

2012-12-19

采用_beginthread创建多线程

采用_beginthread创建多线程,创建尽可能多的线程,直到系统不能创建为止,创建数目实时动态显示。

2012-12-18

ActiveX控件测试容器

ActiveX控件测试容器(TstCon32.exe) 在Vista或者windows7操作系统可用 在VS2008 IDE中编译通过。

2012-12-11

多线程同步演示(采用CreateThread()和WaitForMultipleObjects()函数)

采用多线程技术,使用CreateThread WaitForMultipleObjects函数等,实现了5个人赛跑比赛的模拟,并统计比赛结果。是一个比较好的多线程的演示。

2012-12-10

多线程与单线程的对比(采用CreateThread)

多线程实例,采用CreateThread函数。 (1) 该程序还将和单线程做对比。 (2) 由于给线程的函数传递了多个参数,所以采用结构体的方式传递参数。 (3) 为了演示效果,采用了比较耗时的打点处理。

2012-12-07

为 adobe reder添加书签

给 adobe reder添加书签功能,完美解决中文乱码和支持adobe reder10.0、adobe reder11.0

2012-11-29

二进制十进制互转

用c++实现了二进制与十进制的相互转换,并能连续操作,支持带小数位的操作。浮点整数转二进制,带小数的二进制转十进制。

2012-11-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除