c/c++/mfc/qt
CoderAdo
linux/c/c++/qt/python
展开
-
COM开发理论知识
我见过很多人学COM,看完一本书后觉得对COM的原理比较了解了,COM也不过如此,可是就是不知道该怎么编程序,我自己也有这种情况,我也是经历了这样的阶段走过来的。要学COM的基本原理,我推荐的书是《COM技术内幕》。但仅看这样的书是远远不够的,我们最终的目的是要学会怎么用COM去编程序,而不是拼命的研究COM本身的机制。所以我个人觉得对COM的基本原理不需要花大量的时间去追根问底,没有必要,是吃力转载 2015-07-27 09:07:10 · 854 阅读 · 0 评论 -
C++的多态
C++的多态 在我去深圳第一次接受华为的面试,我遇到这样的一个问题“大概讲一下C++的多态吧”。 我当时有点懵了,C++学习过程中使用最多和常用到的都是继承重载这类的,给了一个很大的框架怎么才能答好呢?我就大致把学过的涉及到多态的讲了一下,不知道讲的怎么样。现在找了点资料学习一下,请勿见笑! 1.什么是多态多态是C++中的一个重要的基础,可以这样说,不掌握多态就是C++的门个汉原创 2012-03-03 00:52:35 · 944 阅读 · 0 评论 -
AfxBeginThread创建和事件对象结束线程的方法
HANDLE hRequestExitEvent=NULL; //我们定义一个全局的事件对象用于线程检查它是否应该结束自己typedef struct{ BOOL exit;}Info;void tTest(){ //,,省略各种判断,各种读取,各种Sleep(xx);}UINT mThread(原创 2012-04-25 09:30:17 · 3647 阅读 · 0 评论 -
Objective-C 与 C++ 的区别
Object C与C++语言简单比较1, 两者最大的相同便是: 都是从 C 演化而来的面向对象语言, 两者都兼容标准 C 语言.2, 两者最大的不同便是:Objective C 是完全动态的,而 C++是部分动态的。Objective C 支持在运行时动态类型决议(dynamic typing),动态绑定(dynamic binding)以及动态装载(dynamic loading);原创 2012-03-03 00:55:32 · 1109 阅读 · 0 评论 -
MFC内部结构
我们在编写程序或是在看MFC类的书籍的时候,总会看到书上让我们在某个地方添加某某函数,响应什么消息。那么,到底为什么要在这地方加呢?为什么不能在其他地方添加消息响应函数呢?接下来,我们就共同来讨论一下吧。1. MFC的运行步骤:(这是对于文档视图结构的应用程序的)theApp(theApp())-> //应用程序全局对象的构造和内存分配WinMain()->转载 2010-08-30 15:08:00 · 606 阅读 · 0 评论 -
boost使用split分割字符串
项目中使用boost库:(设定vs2010环境)在Library files加上 D:\boost\boost_1_46_0\bin\vc10\lib在Include files加上 D:\boost\boost_1_46_0使用举例:#include #include #include #include int _tmain(int argc, _原创 2014-02-09 14:16:23 · 39151 阅读 · 2 评论 -
什么是心跳包
什么是心跳包 一般是用来判断对方(设备,进程或其它网元)是否正常动行,一般采用定时发送简单的通讯包,如果在指定时间段内未收到对方响应,则判断对方已经当掉。 用于检测TCP的异常断开。基本原因是服务器端不能有效的判断客户端是否在线也就是说,服务器无法区分客户端是长时间在空闲,还是已经掉线的情况.所谓的心跳包就是客户端定时发送简单的信息给服务器端告诉它转载 2013-01-23 22:04:30 · 2523 阅读 · 0 评论 -
如何在MAP中使用结构体
//用TreeMap自动排序public static void main(String[] args) throws Exception { String ss[]={"1.1","1.2.3","1.5","1.3.2","2.5"}; Map map=new TreeMap(); for (int i = 0; i < ss.length; i++) { map.原创 2013-08-23 22:20:05 · 2782 阅读 · 0 评论 -
window API 精准耗时计算
#include #include using namespace std;int main(){ LARGE_INTEGER Frequency;//计数器频率 LARGE_INTEGER start_PerformanceCount;//起始计数器 //LARGE_INTEGER 64位有符号整数 LARGE_INTEGER end_PerformanceCount;//结原创 2014-06-26 13:37:54 · 987 阅读 · 0 评论 -
盗号原理
1、破坏型 惟一的功能就是破坏并且删除文件,可以自动的删除电脑上的DLL、INI、EXE文件。 2、密码发送型 可以找到隐藏密码并把它们发送到指定的信箱。有人喜欢把自己的各种密码以文件的形式存放在计算机中,认为这样方便;还有人喜欢用WINDOWS提供的密码记忆功能,这样就可以不必每次都输入密码了。许多黑客软件可以寻找到这些文件,把它们送到黑客手中。也有些黑客软件转载 2014-07-15 21:31:34 · 3079 阅读 · 0 评论 -
字节对齐
#include "stdafx.h"#includeusing namespace std;int main(){ char *s[10][10]; cout<<sizeof(s)<<endl; /*union*/struct A { double u; long i; short j[9]; char k; }; struct A a; struct原创 2014-05-12 23:05:22 · 672 阅读 · 0 评论 -
改善C++ 程序的150个建议学习之建议32:借助工具监测内存泄漏问题
建议32:借助工具监测内存泄漏问题内存管理确实是一个令众多C/C++程序员感到费神又费力的问题,内存错误通常都具有隐蔽性,难以再现,而且其症状一般不能在相应的源代码中找到。C/C++应用程序的大部分缺陷和错误都和内存相关,预防、发现、消除代码中和内存相关的缺陷,成为C/C++程序员编写、调试、维护代码时的重要任务。然而任何人都无法时刻高度谨慎,百密中难免会有一疏,一不小心就会发生内存问题。如果原创 2013-09-16 09:08:17 · 1197 阅读 · 0 评论 -
改善C++ 程序的150个建议学习之建议31:了解new_handler的所作所为
建议31:了解new_handler的所作所为在使用operator new申请内存失败后,编译器并不是不做任何的努力直接抛出std::alloc异常,在这之前,它会调用一个错误处理函数(这个函数被称为new-handler),进行相应的处理。通常,一个好的new-handler函数的处理方式必须遵循以下策略之一:Make more memory available(使更大块内存有效)原创 2013-09-16 08:58:27 · 884 阅读 · 0 评论 -
匈牙利命名法则
前缀 含义a 数字b 布尔值(int)by 无符号字符(字节)c 字符(字节)cb 字节计数rgb 保存RGB颜色值的长整形cx ,cy 短整型(计数x y的值)dw 无符号长整形fn 函数h 句柄i 整形m_ 成员变量n 短整型或整形原创 2013-01-21 22:13:16 · 710 阅读 · 0 评论 -
XMPP 协议笔记 一 基础篇
1. XMPP 优缺点XMPP (Extensible Messaging and Presence Protocol) (前称Jabber) 是一种以 XML 为基础的开放式即时通讯协议,是经由互联网工程工作小组 (IETF) 通过的互联网标准。[1]1.1 XMPP转载 2013-10-16 09:56:41 · 748 阅读 · 0 评论 -
mfc程序执行顺序
MFC的程序和C语言的程序,从执行原理上说,是完全一致的。当Windows操作系统启动一个程序时,它调用的就是该程序的WinMain函数(实际是由插入到可执行文件中的启动代码调用的)。WinMain是Windows程序的入口点函数,与DOS程序的入口点函数main的作用相同,当WinMain函数结束或返回时,Windows应用程序结束。Win32应用程序有一条很明确的主线:首先进入WinM转载 2010-08-26 04:51:00 · 1181 阅读 · 0 评论 -
boost学习之RAII机制(资源申请即初始化)
/* 先介绍下一个专业词汇:RAII(Resource Application Immediately Initialize)资源申请即初始化。这也是智能指针的基本原理,智能指针只是这个习语的其中一例。智能指针确保在任何情况下,动态分配的内存都能得到正确释放,从而将开发人员从这项任务中解放了出来。 这包括程序因为异常而中断,原本用于释放内存的代码被跳过的场景。用一个动态分配原创 2015-01-09 14:36:15 · 1357 阅读 · 0 评论 -
boost学习之Boost.Lambda
匿名函数 又称为lambda函数 - 已经在多种编程语言中存在,在Boost.Lambda库的帮助下,在 C++ 应用中也可以使用它们了。lambda 函数的目标是令源代码更为紧凑,从而也更容易理解。 Boost.Lambda 提供了几个结构来定义匿名函数。代码就被置于执行的地方,从而省去将它包装为一个函数再进行相应的函数调用的这些开销。 与 Boost.Bind 相类似,Boo原创 2015-01-09 14:35:13 · 1584 阅读 · 0 评论 -
c++静态对象
#include "stdio.h"class CSta{public: CSta() { printf("CSta is constructed\n"); m_sta=0; } void friend TestStatic();private: int m_sta;};void TestStatic(){ static CSta a; printf("%d原创 2014-07-11 00:45:19 · 642 阅读 · 0 评论 -
c++队列类模板的实现
//队列类模板定义template class VarQueue{public: VarQueue() { m_MaxCount=MAX_POINTS; m_Count=0; } VarQueue(unsigned int MaxCount) { if(MaxCount>MAX_POINTS) m_MaxCount=MAX_POINTS; el原创 2014-07-11 00:55:22 · 7169 阅读 · 1 评论 -
vc++中如何产生任意区间的随机数
vc++中如何产生任意区间的随机数我们可以产生0~NUM之间的随机数,那么如何产生负数随机数呢,如何产生任意一个区间的随机数呢?#include void GetRangeRandom(int min, int max, int n){ //产生区间[min,max)的n个随机数 srand(time(NULL)); for (int i=0;转载 2012-03-15 13:29:20 · 969 阅读 · 0 评论 -
VC里一些容易混淆的地方
1.FALSE/TRUE与false/true的区别: false/true是标准C++语言里新增的关键字,而FALSE/TRUE是通过#define,这要用途是解决程序在C与C++中环境的差异,以下是FALSE/TRUE在windef.h的定义:#ifndef FALSE#define FALSE 0#endif#ifndef TRUE#define TRUE 1原创 2012-03-03 00:23:08 · 90 阅读 · 0 评论 -
win7_64+vs2010编译boost
参考网友的资料开始学习整理boost,现在开始:1.下载安装包boost 1_46_0 http://www.boost.org/users/news/version_1_46_0 选择下载 windows 或 unix 版本2.解压缩到D:\boost 目录下 3.编译bjam(1)从vs2010的工具菜单进入命令提示窗口(单击“开始”按钮,指向“所有程序”,指原创 2014-02-09 14:04:10 · 2353 阅读 · 0 评论 -
c++接口演示
// Interface_com.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include using namespace std;void trace(const char *pMsg){ cout<<pMsg<<endl; }interface IX{ virtual void Fx1()=0; virt原创 2013-08-21 15:13:38 · 630 阅读 · 0 评论 -
VC单选按钮控件Radio Button用法
VC单选按钮控件Radio Button用法对话框加上2个radio button,分别是Radio1和Radio2。问题1:如何让Radio1或者Radio2默认选上?如何知道哪个被选上了? 关键是选上,“默认”只要放在OnInitDialog()即可。三种方法可以让它选上, 第一种: ((CButton *)GetDlgItem(IDC_RADIO1))->原创 2012-03-15 13:11:07 · 902 阅读 · 0 评论 -
FFmpeg和SDL的API
使用FFmpeg的API和SDL的API进行视频的解码和显示,似乎还是有点技术含量的东西,我最近收到一些email询问视频的解码和显示的实 现,今天hanyionet就献上博文一篇简单地说明一下如何使用这些APITAG: FFMPEG SDL 使用FFmpeg的API和SDL的API进行视频的解码和显示,似乎还是有点技术含量的东西,我最近收到一些email询问转载 2013-10-16 09:58:01 · 649 阅读 · 0 评论 -
正整数n的划分数
将正整数n表示成一系列正整数之和. n=n1+n2+n3+...+nk (n1>=n2>=n3>=nk>=1, k>=1)这就是正整数n的一个划分,正整数n不同的划分个数称为正整数n的划分数, 记作p(n)例如: 6 有如下11种划分则p(6)=116;5+1;4+2, 4+1+1;3+3, 3+2+1, 3+1+1+1;2+2+2, 2+2+1+1, 2+1+1原创 2011-04-19 22:22:00 · 4318 阅读 · 1 评论 -
MFC单文档/视图结构源码剖析
目录第一章找回WinMain函数 2第二章InitApplication()函数 2第三章InitInstance ()函数 3第一节:new CSingleDocTemplate 3第二节:AddDocTemplate(pDocTemplate); 5第三节:ProcessShellCommand(cmdInfo) 5第一段AfxGetApp()->OnCmdMsg(转载 2010-09-06 10:45:00 · 1428 阅读 · 0 评论 -
vc6.0 打开多个工程的方法
在VC6.0中,我们经常想打开多个工程,但是打开一个工程后再打开下一个时就会覆盖当前工程或者打不开新工程, 解决方法如下:1、WinXP系统(1)打开“我的电脑->工具->文件夹选项->文件类型”; (2)在 "已注册的文件类型" 的 "扩展名" 列中的选择 "DSW", 然后点右下角的 "高级";(3)在弹出的 "编辑文件类型" 框的 "操作" 中选择 "open"(安装好V原创 2013-10-18 22:28:44 · 1626 阅读 · 0 评论 -
boost用正则表达式验证ip地址合法
// boostTest.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include //BOOST用正则表达式验证ip地址合法bool CheckIP(const char *ip){ using namespace boost::xpressive; /* 定义正则表达式 */ cregex reg_ip原创 2014-02-09 14:24:54 · 3255 阅读 · 0 评论 -
windows MFC时钟模拟
直接见图:原创 2014-06-26 22:00:41 · 1312 阅读 · 0 评论 -
mfc事件消息
事件驱动程序Windows操作系统是一个多任务操作系统,它可以同时运行多个程序,而且每一个程序都不可能独占系统资源。如用户可以一边处理Word,一边听MP3,只要机器的配置不是太低,用户绝对不会感觉到音乐是时断时续的。多任务工作方式主要是通过事件驱动编程模式来完成的。事件驱动程序以窗口为中心,根据用户的不同操作激活处理相应函数以完成相应的任务。事件驱动是一种全新的程序设计方法,它不是由事件转载 2013-08-24 10:45:09 · 3709 阅读 · 0 评论 -
改善C++ 程序的150个建议学习之建议35:使用内存池技术提高内存申请效率与性能
建议35:使用内存池技术提高内存申请效率与性能Doug Lea曾有言曰:“自1960年以来,动态内存分配就已经成为大多计算机系统的重要部分。”动态内存管理确实是件让人头疼的事儿,然而在实际的编程实践中,又不可避免地要大量用到堆上的内存。而这些通过malloc或new进行的内存分配却有着一些天生的缺陷:一方面,利用默认的内存管理函数在堆上分配和释放内存会有一些额外的开销,需要花费很多时间;另一方原创 2013-09-16 09:23:00 · 2170 阅读 · 0 评论 -
改善C++ 程序的150个建议学习之建议34:用智能指针管理通过new创建的对象
建议34:用智能指针管理通过new创建的对象前面的建议中我们不厌其烦的一再重复:内存泄漏是一个很大很大的问题!为了应对这个问题,已经有许多技术被研究出来,比如Garbage Collection(垃圾回收)、Smart Pointer(智能指针)等。Garbage Collection技术一直颇受注目,并且在Java中已经发展成熟,成为内存管理的一大利器,但它在C++语言中的发展却不顺利,C+原创 2013-09-16 09:20:42 · 1932 阅读 · 0 评论 -
改善C++ 程序的150个建议学习之建议2:避免那些由运算符引发的混乱
建议2:避免那些由运算符引发的混乱一般,C++被认为是C的超集。C++确实从它的前辈C那里继承了很多东西,比如一套含义相当混乱模糊的运算符。由于C/C++语法规则的灵活性,以致那些粗心的程序员常会使用错误的运算符,进而引发不必要的麻烦。下面的代码就是一个典型的例子:if(nValue = 0){ // do something if nValue is not zero.原创 2013-09-09 14:02:28 · 1016 阅读 · 0 评论 -
改善C++ 程序的150个建议学习之建议10:优化结构体中元素的布局
建议10:优化结构体中元素的布局下面的代码片段定义了结构体A和B:struct A // 结构体A{int a;char b;short c;};struct B // 结构体B{char b;int a;short c;};在32位机器上,char、short、int三种类型的大小分别是1、2、4。那么上面两个结构体的大小如何呢?结构体原创 2013-09-11 08:59:49 · 1568 阅读 · 0 评论 -
改善C++ 程序的150个建议学习之建议5:不要忘记指针变量的初始化
建议5:不要忘记指针变量的初始化可以说指针是C/C++语言编程中最给力的工具。指针,让我们直接去面对最为神秘的内存空间,赋予我们对内存进行直接操作的能力。由于指针操作执行速度快、占用内存少,众多程序员对它深爱不已。但是,它的灵活性和难控制性也让许多程序员觉得难以驾驭,以致到了谈指针色变的程度。指针就是一把双刃剑。用好了它,会给你带来诸多便利,反之,则往往会引发意想不到的问题原创 2013-09-09 14:20:18 · 1336 阅读 · 0 评论 -
改善C++ 程序的150个建议学习之建议15:尽量不要使用可变参数
建议15:尽量不要使用可变参数在某些情况下我们希望函数参数的个数可以根据实际需要来确定,所以C语言中就提供了一种长度不确定的参数,形如:“...”,C++语言也继承了这一语言特性。在采用ANSI标准形式时,参数个数可变的函数的原型是:type funcname(type para1, type para2, ...);这种形式至少需要一个普通的形式参数,后面的省略号(...)不能省去,原创 2013-09-11 09:34:08 · 1133 阅读 · 0 评论 -
改善C++ 程序的150个建议学习之建议21:尽量用new/delete代替malloc/free
建议21:尽量用new/delete代替malloc/free在C语言中,我们已经熟悉利用malloc/free来管理动态内存,而在C++中,我们又有了新的工具:new/delete。你不禁会产生疑问—有了malloc/free为什么还要new/delete 呢?使用malloc/free和使用new/delete又有什么区别呢?首先来分析一下下面的代码片段:class Object{原创 2013-09-11 10:02:03 · 3066 阅读 · 0 评论 -
改善C++ 程序的150个建议学习之建议19:明白在C++中如何使用C
建议19:明白在C++中如何使用C首先,分析下面的代码片段:// Demo.h#ifndef SRC_DEMO_H#define SRC_DEMO_Hextern "C" {... // do something}#endif // SRC_DEMO_H显然,头文件中的编译宏“#ifndef SRC_DEMO_H、#define SRC_DEMO_H、#en原创 2013-09-11 09:54:48 · 975 阅读 · 0 评论