
jockey--c++
文章平均质量分 74
pirate97
这个作者很懒,什么都没留下…
展开
-
全排列算法
(一)递归的全排列算法(A、B、C、D)的全排列为1、A后面跟(B、C、D)的全排列2、B后面跟(A、C、D)的全排列3、C后面跟(A、B、D)的全排列4、D后面跟(A、B、C)的全排列而对1中的(B、C、D)照样可以按照上面的形式进行分解。[cpp] view plaincopy/******转载 2014-10-14 22:15:02 · 728 阅读 · 0 评论 -
C++中L和_T()之区别
C++中L和_T()之区别 2012-05-24 10:50:44| 分类: VC++|字号 订阅字符串前面加L表示该字符串是Unicode字符串。_T是一个宏,如果项目使用了Unicode字符集(定义了UNICODE宏),则自动在字符串前面加上L,否则字符串不变。因此,Visual C++里边定义字符串的时候,用转载 2012-12-18 13:38:34 · 1106 阅读 · 0 评论 -
双引号的安全问题
Help eliminate unquoted path vulnerabilitiesnot connected with Facebooknot connected with Twitternot connected with Google+EinstellungenPublished: 2012-11-07,转载 2012-12-12 10:33:51 · 874 阅读 · 0 评论 -
BSTR详解五 - BSTR与其它字符串类型转换
BSTR详解五 - BSTR与其它字符串类型转换1 类型转换常用字符串件的类型转换。 FromToSample字符串常量BSTRRight:BSTR bs = ::SysAllocString(_T("Test string"));…::SysFreeString();转载 2012-09-21 09:42:44 · 647 阅读 · 0 评论 -
模态对话框和非模态对话框的区别
模态对话框和非模态对话框的区别模态对话框就是指那种“显示出来就不可以点选位于其下面的对话框”的对话框;反之的就是非模态对话框。两者的区别:一. 非模态对话框的模板必须具有Visible风格(Visible=True),否则对话框将不可见,而模态对话框则无需设置该项风格。在实际编程中更加保险的办法是调用CWnd::ShowWindow(SW_SHOW)来显示对话框,而不管对话框是否具有V转载 2012-09-10 09:03:12 · 448 阅读 · 0 评论 -
COM组件设计与应用之编译、注册、调用
关于编译 1、最小依赖 “最小依赖”,表示编译器会把 ATL 中必须使用的一些函数静态连接到目标程序中。这样目标文件尺寸会稍大,但独立性更强,安装方便;反之系统执行的时候需要有 ATL.DLL 文件的支持。如何选择设置为“最小依赖”呢?答案是:删除预定义宏“_ATL_DLL”,操作方法见图一、图二。图一、在vc6.0中,设置方法图二、在 vc.net 2转载 2012-08-22 09:21:38 · 620 阅读 · 0 评论 -
COM的通信原理及ATL的通信操作 看过的一篇非常好的讲解通讯机制的文章
COM的通信原理及ATL的通信操作一、 COM的通信原理1、 通信模型:一般,我们只使用客户端程序到组件的通信,并且这种通信是通过组件的接口来实现的。现在,我们讲一下服务器到客户端之间如何打开一个双向通信通道,并提供一个功能更加强大的通信环境。按下面的方法可以提供一个具备回调功能(或称通知)的组件:a) 在一个组件中描述几个转载 2012-05-25 16:07:29 · 3746 阅读 · 2 评论 -
C/C++中指针和引用之相关问题研究
C/C++中指针和引用之相关问题研究 指针和引用的声明方式:声明指针: char* pc;声明引用: char c = 'A' char& rc = c;它们的区别:①从现象上看,指针在运行时可以改变其所指向的值,而引用一旦和某个对象绑定后就不再改变。这句话可以理解为:指针可以被重新赋值以指向另一个不同的对转载 2012-05-24 10:54:57 · 607 阅读 · 0 评论 -
回调函数和函数指针
回调函数和函数指针 最近在看代码,写代码的人很喜欢用回调函数和函数指针。一直觉得回调函数和函数指针挺神秘的,所以查了一些资料,来与大家一起来分享。什么是回调函数简而言之,回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。为什么要使用回调函数 因为使用转载 2012-05-24 11:02:43 · 9567 阅读 · 0 评论 -
回调函数说明
简单的回调函数实现 下面创建了一个sort.dll的动态链接库,它导出了一个名为CompareFunction的类型--typedef int (__stdcall *CompareFunction)(const byte*, const byte*),它就是回调函数的类型。另外,它也导出了两个方法:Bubblesort()和Quicksort(),这两个方法原型相同,但实现了不同的排序算法转载 2012-05-24 10:45:01 · 426 阅读 · 0 评论 -
在 Office 系列软件中创建 COM 插件工具条,并实现工具条上的弹出菜单
前两天,在优快云瞎逛悠,见一老兄问到此问,却没有人作答(顶的人倒还不少,国内的论坛是不是都这样?),还发了些牢骚,俺也顺便跟着发了点牢骚:)于是坐下来静下心研究了一下,今日终于成了正果,不敢私吞成果,特搬弄出来,让大家分享分享(切,无非就是虚荣而已啦,把自己说得那么伟大?!)!点击这里下载工程源代码我看还是做一篇教程写好了,写清楚一点,呵呵:)哦,先说明白,俺用的是VC6转载 2012-06-04 10:52:28 · 1339 阅读 · 0 评论 -
WTL应用程序处理ActiveX事件更好的方法
WTL应用程序处理ActiveX事件更好的方法之前写的“WTL应用程序接收处理ActiveX控件事件的实现”文章已经描述了如何处理ActiveX的事件,但那个方法实施起来比较繁锁,也不易读解。这里介绍更简便的方法,甚少不需要一个一个的将UUID拷到WTL工程来用,而是直到使用IDL文件编译出来的结果,这样的好处是当这些UUID更改后重新编译就可以了,不需要修改源码。首先我们写的Ac转载 2012-05-29 13:19:23 · 669 阅读 · 0 评论 -
fopen 资源泄露问题的解决方案
Consider a traditional piece of code:void use_file(const char* fn) { FILE* f = fopen(fn,"r"); // use f fclose(f); } This code looks plausible. However, if something goes wrong after the call of转载 2012-12-18 10:06:27 · 1629 阅读 · 0 评论 -
结构体初始化
结构体能自由组装数据,是一种很常见的数据打包方法。当我们定义一个结构体后,没有初始化就使用,就会使用到垃圾数据,而且这种错误很难发现。对于定义的任何变量,我们最好都先初始化。 除了使用memset和ZeroMemory之外,有没有更简单的方法初始化呢?因为有时候每定义一个结构体,就使用一次memset,也会觉得很繁琐。 我这里总结三种方法,如果大家有什么好的方法,不转载 2012-12-18 13:26:54 · 1152 阅读 · 0 评论 -
BSTR、LPSTR、LPWSTR、CString、VARIANT、COleVariant 、_variant_t、CComBSTR、_bstr_t
Visual C++.NET涉及到ATL/ATL Server、MFC和托管C++等多种编程方式,不仅功能强大而且应用广泛。在编程中,我们常常会遇到ANSI、Unicode以及BSTR不同编码类 型的字符串转换操作。本文先介绍基本字符串类型,然后说明相关的类,如CComBSTR、_bstr_t、CStringT等,最后讨论它们的转换方法, 其中还包括使用最新ATL7.0的转换类和宏,如CA2CT、转载 2012-12-20 13:59:57 · 801 阅读 · 0 评论 -
Ansi、Unicode、UTF8字符串之间的转换和写入文本文件
Ansi、Unicode、UTF8字符串之间的转换和写入文本文件转载请注明出处http://www.cppblog.com/greatws/archive/2008/08/31/60546.html最近有人问我关于这个的问题,就此写一篇blogAnsi字符串我们最熟悉,英文占一个字节,汉字2个字节,以一个\0结尾,常用于txt文本文件Unicode字符串,每个字符(汉字转载 2014-05-22 10:37:09 · 855 阅读 · 0 评论 -
VC++编写电子邮件程序 第二篇 也是用simple mapi
VC++编写电子邮件程序一、概述---- 本文主要讲述如何使用Visual C++用MAPI编写E-mail程序。MAPI是包含在Windows之中的,因此不需要安装其他额外的部件。MAPI有以下三种形式:SMAPI,Simple MAPI,简单的MAPICMC,Common Messaging Calls,一般通讯调用完整的MAPI---- SMAPI和CMC转载 2014-03-27 11:09:58 · 4013 阅读 · 0 评论 -
用simple mapi 发送一个带附件的邮件
使用 MAPI 实现邮件发送原 作:deltacat,修改中最后更新:2004.09.16版权声明:随意转载,敬请保持文档及说明完整性关键字: VC 邮件发送 MAPI一、简述 实际上,本文的设计,所使用的只是 Simple MAPI,可以把它看作是MAPI(Messaging Application Programming Interface)的一转载 2014-03-26 10:49:23 · 4561 阅读 · 0 评论 -
Unicode UTF-8 Ansi 互转及MultiByteToWideChar和WideCharToMultiByte用法等编码相关
Unicode UTF-8 Ansi 互转及MultiByteToWideChar和WideCharToMultiByte用法等编码相关分类: MFC/SDK/C++2010-05-18 20:53 2818人阅读 评论(1) 收藏 举报目录(?)[+]Unicode,到UTF-8。 [cpp] view plainc转载 2012-09-29 16:31:49 · 7634 阅读 · 0 评论 -
VC中调用外部EXE程序方法(转)
在VC中,有些时候,我们需要调用其他一些现有的EXE可执行文件,当然,有些时候,我们也调用自己编写生成的EXE文件,以完成对不同选择条件的反应。 通过总结,基本上调用EXE文件的办法有四种:一、WinExec()这个函数,在VB和VC中都有,百度百科中的解释是这样的:WinExecVB声明Declare Function WinExec Lib "kernel32"转载 2013-10-18 09:01:14 · 14110 阅读 · 0 评论 -
做update的时候 用到的movefileex
当dwFlags被设为MOVEFILE_DELAY_UNTIL_REBOOT时,函数直到系统重启后才移动文件。注意文件的移动是发生在AUTOCHK执行之后,在页面文件创建之前。而此时用户还没有完全的进入操作系统,所以可以应用这点删除那些正常情况下很难删除的文件甚至是页面文件。lpNewFileName为NULL时,MovefileEx实现的就是删除的功能。很多杀毒软件和一些恶意程序删除转载 2013-06-05 09:29:19 · 892 阅读 · 0 评论 -
用ATL建立轻量级的COM对象
用ATL建立轻量级的COM对象2010-01-17 11:24 442人阅读 评论(0) 收藏 举报本文假设你熟悉C++和COM。摘要: ATL——活动模板库(The Active Template Library),其设计旨在让人们用C++方便灵活地开发COM对象。ATL本身相当小巧灵活,这是它最大的优点。用它可以创建轻量级的,自包含的,可复用的二进制代码,转载 2013-01-18 14:51:12 · 1596 阅读 · 0 评论 -
清空数组:ZeroMemory、memset 和 “={0}” 三者用于清零操作的区别
清空数组:ZeroMemory、memset 和 “={0}” 三者用于清零操作的区别首先是ZeroMemory和memset的区别:1、ZeroMemory是微软的SDK提供的,memset属于C Run-time Library提供的。因此ZeroMemory只能用于Windows系统,而memset还可用于其他系统。 2、ZeroMemory是一个宏,只是用于把一段内转载 2013-01-30 16:11:13 · 5597 阅读 · 0 评论 -
Sizeof与Strlen的区别与联系
Sizeof与Strlen的区别与联系一、sizeof sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。 它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。 由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof转载 2013-01-09 16:31:21 · 438 阅读 · 0 评论 -
delete void*
delete void* 对于一些简单的系统内建类型不会有问题,但是对于C++的类,确实存在一个问题,因为这样不会调用析构函数,因为类型已经丢失,如果类里面存在一个指针类型,指向了另一块内存,可能使得这块内存泄露。而类本身占据的内存不会泄露,举个例子:include classTest { void*data; intn;public:转载 2013-01-08 15:34:24 · 1089 阅读 · 0 评论 -
C++ new运算符的失败处理
C++new失败的处理我们都知道,使用 malloc/calloc 等分配内存的函数时,一定要检查其返回值是否为“空指针”(亦即检查分配内存的操作是否成功),这是良好的编程习惯,也是编写可靠程序所必需的。但是,如果你简单地把这一招应用到 new 上,那可就不一定正确了。我经常看到类似这样的代码: int* p = new int[SIZE]; i转载 2013-01-08 10:40:44 · 877 阅读 · 0 评论 -
C++中 public和private派生类继承问题和访问权限问题
昨天看efective c++的条款39,发现自己的基础太差了,竟然连C++的继承访问控制权限都搞不清楚,下了一《C++primer》的第四版,翻了翻。网上找了一篇文章,写得很好,解决了我的问题。转载如下:C++中 public,protected, private 访问标号小结第一:private, public, protected 访问标号的访问范围。转载 2012-05-29 10:44:05 · 810 阅读 · 0 评论 -
win32 application invoke html files
为了解决这个问题,本文设计了一个更加完善的类:CFindWnd,用更好的算法专门来获取 IE 窗口。CFindWnd 查找某个窗口(给定窗口名字)的第一个子窗口。 例如,它的使用方法如下:CFindWnd ies(m_hWnd, "Internet Explorer_Server");myHwndIE = ies.m_hWnd;这个类的构造函数调用函数: FindChild原创 2012-05-07 12:32:58 · 721 阅读 · 0 评论 -
win32 application invoke the html files ----2
////////////////////////////////////////////////////////////////// 该结构在命令映射中定义一个入口,这个映射将文本串映射到命令IDs,// 如果命令映射中有一个映射到 ID_APP_ABOUT 的入口 “about”,并且 // HTML 有一个链接锚 ,那么单击该链接时将执行 // ID_APP_ABOUT 命令。为了设置原创 2012-05-03 14:02:42 · 620 阅读 · 0 评论 -
【com】第三者 com基础
(1) COM组件实际上是一个C++类,而接口都是纯虚类。组件从接口派生而来。我们可以简单的用纯粹的C++的语法形式来描述COM是个什么东西: class IObject { public: virtual Function1(...) = 0; virtual Function2(...) = 0; .... }; class MyObject转载 2011-11-07 19:15:54 · 400 阅读 · 0 评论 -
static 静态变量和静态函数的使用探究 类::functionname 与 初始化一个对象的区别
我的总结是。注意内存中的存储对象是什么 什么有什么没有。此为根本。static 变量要记得初始化(类外初始化)静态数据成员:下面看一个例子:#include class Point{public:void output(){}static void init(){ }};void main( void ){Point pt;pt.i转载 2011-11-07 09:41:58 · 519 阅读 · 0 评论 -
【com】第二章 com的初步介绍
本文的目的是为刚刚接触COM的程序员提供编程指南,并帮助他们理解COM的基本概念。内容包括COM规范简介,重要的COM术语以及如何重用现有的COM组件。本文不包括如何编写自己的COM对象和接口。 COM即组件对象模型,是Component Object Model 取前三个字母的缩写,这三个字母在当今Windows的世界中随处可见。随时涌现出来的大把大把的新技术都以COM为基础。各种文档中也转载 2011-11-04 15:29:58 · 485 阅读 · 0 评论 -
直接调用类中的静态方法的想法
前些天老大给了一个task给我,让我独立出一个函数到公用库函数当中,使得所有的项目均能调用这个函数。我将静态方法封装成了一个类。然后把所有的接口都提供给用户,用户可以随意调用其中的接口,但是在这个过程当中发现了几个问题1.如果用户多次初始化的时候该怎么处理。2.如何控制析构函数的调用以实现对函数的回收。对第一个问题我想的是 用单例模式的方法解决。但是发现一个问题。如果所有的文件都要原创 2011-11-01 14:21:39 · 2984 阅读 · 0 评论 -
【vc】menu的建立
一个菜单条总是属于一个窗口,当用户选定一个菜单项后,系统向菜单的父窗口发出消息,如果是普通菜单发送WM_COMMAND消息,如果是系统菜单发送WM_SYSCOMMAND消息。当鼠标悬浮在一个有下级菜单的菜单项上时,系统首先向菜单的父窗口发送WM_INITMENUPOPUP消息,然后展开子菜单。每一个菜单条由一个唯一的句柄指向,类型为HMENU。获得一个菜单的句柄使用GetMenu()函数,获得子菜转载 2011-11-21 19:34:28 · 2010 阅读 · 0 评论 -
【vc】装bitmap背景颜色函数
HBITMAP COLAgent::ReplaceColor (HBITMAP hBmp,COLORREF cOldColor,COLORREF cNewColor){ HBITMAP RetBmp=NULL; if (hBmp) { HDC BufferDC=CreateCompatibleDC(NULL); // 源位图DC转载 2011-11-21 19:43:23 · 1918 阅读 · 0 评论 -
c++ hook
一、基本概念: 钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。 钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,转载 2011-11-16 16:59:50 · 14546 阅读 · 0 评论 -
C++ 类中的静态变量和静态成员函数(转)
静态数据成员:下面看一个例子: #include class Point{public:void output(){}static void init(){ } };void main( void ){Point pt;pt.init();pt.output(); }这样编译是不会有任何错误的。下转载 2011-10-25 19:08:47 · 4866 阅读 · 1 评论 -
typedef 函数指针
关于C++中函数指针的使用(包含对typedef用法的讨论) (一)简单的函数指针的应用。//形式1:返回类型(*函数名)(参数表) char (*pFun)(int); char glFun(int a){ return;} void main() {转载 2011-09-23 15:41:37 · 353 阅读 · 0 评论 -
c++当中的注册表操作
在c++当中 注册表操作为了存储某些软件的初始化信息。其中存储了某些键值供读取。1.在某些系统里存储于winin文件中。某些系统写入注册表操作写入: SetRegistryKey(_T("bobbypractise675476476486457647647"));原创 2011-09-07 13:06:51 · 649 阅读 · 0 评论 -
【vc】VC++动态链接库(DLL)编程深入浅出(一)
1.概论 先来阐述一下DLL(DynamicLinkable Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代。 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中的指令都被直接包含在最终生成的EXE文件中了。但是若使用DLL,该转载 2011-11-30 10:33:06 · 1053 阅读 · 0 评论