自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 资源 (14)
  • 收藏
  • 关注

原创 指针转换

/*ScreenToClient 用来转两次把屏幕rect该为clientrect*/BOOL ScreenToClient(LPRECTlpRect) const throw(){ATLASSERT(::IsWindow(m_hWnd));if(!::ScreenToClient(m_hWnd,(LPPOINT)lpRect))return FALSE;return::S

2011-12-15 14:41:17 1224

原创 windows进程

1.      windows进程启动过程wWinMainCRTStartup()->__tmainCRTStartup()->wWinMain(),注意:wWinMainCRTStartup作用:检索指向新进程的完整命令行的指针 检索指向新进程的环境变量的指针对C / C + +运行期的全局变量进行初始化。如果包含了S t d L i b . h 文件,代码就能访问这些变量对C

2011-12-15 14:39:47 1027

原创 Windows 内核对象

1.      内核对象(keneralobject )概念:操作系统用来管理文件、进程、线程等的内核数据结构,应用程序不能直接访问,必须通过handle来访问2.      内核对象固定成员变量:每个内核对象至少有一个引用计数(用来决定是否释放内核对象,与com引用计数类似)和一个安全属性对象(用来决定访问权限等)成员变量。3.      keneral object 与handle 区

2011-12-15 13:56:41 2264 1

转载 Win XP系统环境变量对应路径说明

所谓的Windows系统目录简写环境变量,就是为一些常用且固定的Windows系统目录的路径建立一个与之对应的相对简单的缩写,使之更容易输入或定位。Windows系统默认情况下都是安装在电脑C盘的Windows目录下,但这并不是固定的,如果你的系统不是安装在这个目录下,那

2011-08-18 10:43:38 1898

转载 RAII惯用法:C++资源管理的利器

RAII惯用法:C++资源管理的利器RAII是指C++语言中的一个惯用法(idiom),它是“Resource Acquisition Is Initialization”的首字母缩写。中文可将其翻译为“资源获取就是初始化”。虽然从某种程度上说这个名称并没有体现出该惯性法

2011-08-17 21:13:35 654

原创 文件关联的若干问题解决方案

方法如下:方法一、我们可以通过注册表编辑器来解决这个问题。打开运行对话框,手工输入“regedit.exe”打开注册表编辑器,定位到“HKEY_CLASSES_ROOT\txtfile\shell\open\command”,将右侧窗格中“默认”的值手工重置为“%SystemRo

2011-07-16 15:04:57 1382

原创 SHSetValue 最后一个参数字节数是否要加上\0验证

实例代码如下:               wchar_t szValue[] = L"liuanValue123"; DWORD dwType = REG_SZ; DWORD dwByteLen = (wcslen(szValue) )*sizeof(wchar_t)  ; S

2011-07-16 14:46:04 2462

原创 MFC 实现COM 进程内组件

<br />MSDN 参考:ms-help://MS.MSDNQTR.v90.chs/dv_vclib/html/19d946ba-beaf-4881-85c6-0b598d7f6f11.htm<br />COM 原理与应用: P153-第五章结束<br />简单实现代码可以在这里下载:http://download.csdn.net/source/3285048<br />注意在调用客户程序之前要先对dll进行注册

2011-05-16 20:42:00 1030

原创 进程内组件程序Dll必须引出的函数

作为进程内组件程序, 必须引出COM 所要求的四个基本函数:1. 引出DllGetClassObject  STDAPI DllGetClassObject(  REFCLSID rclsid,  REFIID riid,  LPVOID * ppv);extern "C" HRESULT __stdcall DllGetClassObject(const CLSID& clsid, const IID& iid, void **ppv){ if (clsid == CLSID_Dictionary

2011-05-16 20:27:00 1488

原创 COM 组件对象的基本模仿

#include #include using namespace std;//类型定义和宏定义typedef string REFIID;typedef unsigned long HRESULT;typedef unsigned long ULONG;#define S_OK 0 //接口查询成功返回值#define E_NOINTERFACE -1 //接口查询失败返回值string g_strIUnknown = "IID_IUnknown"; //IU

2011-05-16 18:54:00 1217

转载 Map以自定义类做为键值

map在STL中的定义template , class Alloc = alloc> 第一个参数Key是关键字类型第二个参数T是值类型第三个参数Compare是比较函数(仿函数)第四个参数是内存配置对象map内部存储机制实际是以红黑树为基础,红黑树在插入节点时,必须依照大小比对之后在一个合适的位置上执行插入动作。所以作为关键字,起码必须有“在选择map的关键字时,注意以下两点,同时这两点也是改错的方法:a) 关键字明确定义“b) 没有“

2011-04-17 17:10:00 17668 4

原创 剖析ifstream打开含中文路径名文件失败的原因

<br />/*有一段英文文档(只由字母和空格组成),请实现一个函数,把这篇文档中指定的单词替换为目标单词。*/#include <iostream>#include <fstream>#include <vector>#include <string>#include <algorithm>using namespace std;bool replaceWord(const string& strFilePath, const string& strOldWord, con

2011-04-17 16:37:00 3120

转载 C++ RTTI及“反射”技术

RTTI  RTTI(Run-Time Type Information)运行时类型检查的英文缩写,它提供了运行时确定对象类型的方法。面向对象的编程语言,象C++,Java,delphi都提供了对RTTI的支持。 本文将简略介绍 RTTI 的一些背景知识、描述 RTTI 的概念,并通过具体例子和代码介绍什么时候使用以及如何使用 RTTI;本文还将详细描述两个重要的 RTTI 运算符的使用方法,它们是 typeid 和 dynamic_cast。  其实,RTTI 在C++中并不是什么新的东西,它早在十多年以

2011-04-15 17:08:00 11810 2

原创 Windows 进程通信的几种方式

<br />1 文件映射<br />文件映射(Memory-Mapped Files)能使进程把文件内容当作进程地址区间一块内存那样来对待。因此,进程不必使用文件I/O操作,只需简单的指针操作就可读取和修改文件的内容。<br />Win32 API允许多个进程访问同一文件映射对象,各个进程在它自己的地址空间里接收内存的指针。通过使用这些指针,不同进程就可以读或修改文件的内容,实现了对文件中数据的共享。<br />应用程序有三种方法来使多个进程共享一个文件映射对象。<br />(1)继承:第一个进程建立文件映

2011-04-08 10:11:00 1357

转载 浅析C++中内存分配的方式

在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/ 静态存储区和常量存储区。<br /><br />栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。<br /><br />堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个 delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。<br /><br />自由存储区,就是那些由malloc等分配的内存块,他

2011-04-04 00:26:00 683

转载 VC实现将资源打包并释放到指定文件夹

<br />很多时候,我们可能要将某些文件打包到资源中,然后当程序执行的时候,发现缺少某些文件时,进行自我修复,以维持程序的正常执行, <br />很多安装程序或者比较高级点的智能程序都已经这样做,比如文件损坏时,安装程序将修复这些文件.一些高级程序的常用设置及文件 <br />遇到破坏时,也会自我修复,它们的这些神奇功能,全都是依靠自身的资源包,替换损坏的文件,或者创建新的默认文件实现的. <br />下面我来说一说这种程序比较普通的一些做法: <br />首先在程序入口处,我们以MFC程序为例子,我们找

2011-04-03 22:55:00 4717 1

原创 error C2018: 未知字符“0x60

<br />一次在写代码的时候<br />我在一个头文件里面Def.h进行宏定义。<br /><br />#define Help 108<br /><br />在MainFrame.cpp里面<br /><br />BEGIN_MASSGEMAP<br /><br />END_MASSAGEMAP中间添加映射宏<br />ON_COMMAND(HELP, ONHELP)<br />ONHELP定义都没有错<br /><br />但是编译出现error C2018: 未知字符“0x60,这个以前从来没有运到

2011-04-03 22:53:00 10176 5

原创 个人总结的CString常用用法

<br />一 . 格式化Format, 这个应该是用的最多了。<br />二. 查找<br />intFind(TCHARch)const;<br />intFind(LPCTSTRlpszSub)const;<br />int Find( TCHAR ch, int nStart ) const;<br />int Find( LPCTSTR pstr, int nStart ) const;<br /> <br />这几个都是正序查找 字串的匹配索引,其实就是用KMP 匹配吧。<br />// Fir

2011-04-03 22:44:00 6245

原创 创建浏览文件夹对话框

BROWSEINFO  Visual C++(VC)中,BROWSEINFO结构中包含有用户选中目录的重要信息。   (1)BROWSEINFO结构   ●定义   typedef struct_browseinfo   {   HWND hwndOwner;   LPCITEMIDLIST pidlRoot;   LPSTR pszDisplayName;   LPCSTR lpszTitle;   UINT ulFlags;   BFFCALLBACK lpfn;   LPARAM lParam;   

2011-04-03 22:07:00 5249 1

原创 ClistCtrl 的部分使用技巧总结

<br />一、ClistCtrl 避免大数量闪烁的几种方法, 网上一大堆, 我这里讲的是我的一些使用心得, 在进行大数据量的更新,比如说定时更新的时候,最好是处理OnEraseBkgnd 和OnPaint<br /> <br />BOOL CMyListCtrl::OnEraseBkgnd(CDC* pDC){ // TODO: 在此添加消息处理程序代码和/或调用默认 return FALSE;}void CMyListCtrl::OnPaint(){ CPaintDC d

2011-04-03 21:50:00 1237

原创 枚举当前系统进程以及进程加载模块

枚举当前系统进程的方法大致分一下几个步骤:一、 提升应用程序的进程权限///////////////自定义函数实现/////////////////BOOL PromotePrivilege(BOOL bEnable){ // 附给本进程特权,以便访问系统进程 HANDLE hToken; // 打开一个进程的访问令牌 if(::OpenProcessToken(::GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken))

2011-04-03 21:11:00 11637 1

转载 Windows 临界区,内核事件,互斥量,信号量。

临界区,内核事件,互斥量,信号量,都能完成线程的同步,在这里把他们各自的函数调用,结构定义,以及适用情况做一个总结。临界区:适用范围:它只能同步一个进程中的线程,不能跨进程同步。一般用它来做单个进程内的代码快同步,效率比较高。相关结构:CRITICAL_SECTION  _critical相关方法:/*初始化,最先调用的函数。没什么好说的,一般windows编程都有类似初始化的方法*/InitializeCriticalSection(& _critical) /*释放资源,确定不使用_critical时调

2011-04-02 21:21:00 3367

原创 CSpinButtonCtrl使用说明

<br />CSpinButtonCtrl使用起来比较特殊,使用起来,需要注意一些地方.实际的教程也比较少.为了让后人少走弯路,这里写这篇文章以说明.<br />1.添加EDIT控件<br />2.添加Spin控件<br />如果不是这样的顺序的话,使用ctrl+D改变Tab顺序,使spin紧靠edit后面<br />关于改变Tab顺序的方法有以下几种:<br />方法一:<br />在动态创建控件的时候STYLE设置成为WS_CHILD|WS_VISIBLE|WS_TABSTOP,其中WS_TABSTOP

2011-04-02 15:24:00 9279

转载 理解有符号数和无符号数

<br />声明网上看到的文章,原文找不到了,原文被转载的不成样子,重复很多,整理花了很长时间,在翻看了维基百科后发现,原文中对于负数原码和补码存在一些问题,修改了一部分,原作者看到后可以联系我。<br />1、你自已决定是否需要有正负。 <br /><br />就像我们必须决定某个量使用整数还是实数,使用多大的范围数一样,我们必须自已决定某个量是否需要正负。如果这个量不会有负值,那么我们可以定它为带正负的类型。 <br /><br />在计算机中,可以区分正负的类型,称为有符类型(signed),无正负的

2011-03-23 21:54:00 1707

转载 STL的常用算法

<br /><br /> <br /><br /><br /> <br /> <br /> <br /> <br />

2011-03-23 19:17:00 1118

转载 网上投简历的心得

<br />最近,看到国家下文告诉社会07年有XXX万,08年还有XXX万,09年还有600多万大学生等待找工作。 <br />   希望大学生们"先就业再择业"。为什么我毕业时候国家没下这个文呢。。。 <br />   闲话不说,做主管岗位6年了,看过几千封简历。 <br />   这2周,公司大规模招聘,我基本就干一件事情,看简历。一天300~500封封。早中晚各看一次。 <br /><br />  找工作很难吗?不难,让HR通知你面试就是成功第一步。 <br />  唉,现在的高校毕业办的人都在干嘛。

2011-03-23 17:55:00 1008

原创 windows xp 中如何屏蔽ctrl + Del + Alt等系统键

<br />,这个也是制作屏幕挂机锁的原理啊:http://www.vckbase.com/document/viewdoc/?id=424

2011-03-21 17:36:00 753

转载 hash_map原理

<br />hash_map原理<br />http://www.cppblog.com/theorix/archive/2008/09/08/61346.html<br />http://www.stlchina.org/twiki/bin/view.pl/Main/STLHashMap<br />《STL源码剖析》P147~184<br />1 、ash_map原理<br />hash_map基于hash table(哈希表)。 哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,几乎可以看成是

2011-03-18 22:12:00 2272

转载 指向数据成员的指针

<br />  指向数据成员的指针 收藏 <br />指向数据成员的指针<br />指向数据成员的指针,是一个有点神秘又颇有用处的语言特性,特别是如果你需要详细调查class members的底层布局的话。这样的调查可以用于决定vptr是放在class的起始处或者尾端。另外一个用途是可以用来决定class中的access sections的次序。<br />考虑下面的Point3d声明。其中有一个virtual function,一个static data member,以及三个坐标:<br />class

2011-03-18 21:15:00 639

转载 数据成员的存取与布局

<br />已知下面一组数据成员:<br /><br />class Point3d{<br />public:<br />//…<br />private:<br />float x;<br />static List<Point3d*> *freeList;<br />float y;<br />static const int chunkSize = 250;<br />float z;<br />}  数据成员的存取与布局 收藏 <br />数据成员的布局<br />已知下面一组数据成员:<br /

2011-03-18 18:59:00 719

转载 指向函数的指针

<br />指向函数的指针<br />假定我们被要求提供一个如下形式的排序函数:<br />sort( start, end, compare );<br />start 和end 是指向字符串数组中元素的指针。函数sort()对于start 和end 之间的数组元素进行排序。compare 定义了比较数组中两个字符串的比较操作。<br />该怎样实现compare 呢?我们或许想按字典顺序排序数组内的字符串,或许想按长度排序它们,以便将最短的字符串放在前面,而长的放在后面。解决这种需求的一种策略是将第三个

2011-03-18 17:44:00 3241

转载 指向成员函数的指针

<br />指向成员函数的指针<br />取一个非静态成员函数的地址,如果该函数是nonvirtual,则得到的结果是它在内存中真正的地址。然而这个值也不是完全的,它也需要被绑定于某个class object的地址上,才能够通过它调用该函数。所有的非静态成员函数都需要对象的地址(以参数this指出)。<br />一个指向成员函数的指针,其声明语法如下所示:<br />double      //return type<br />(Point::*  //class the function is membe

2011-03-18 17:10:00 713

原创 冒泡排序、堆排序等常用算法总结

<br /><br /> <br /> 代码如下<br />  #include <iostream>using namespace std;///////常用排序算法实现/////////插入排序void InsertSort(int array[], int len){ for (int j = 1; j < len; ++j) { if (array[j] < array[j - 1]) // 小于则插入 { int insert =

2011-03-18 12:00:00 1024

原创 查找算法总结之顺序查找、二分查找、静态树查找

<br />#include <iostream>using namespace std;//顺序查找, 平均查找长度为(n + 1)/2int search_sq(int array[], int array_len, int key) { for (int i = 0; i < array_len; ++i) { if (key == array[i]) { return i; } } return -1;}//二分查找,平均

2011-03-14 17:22:00 3505

原创 C++ 笔试面试题链接

<br />百度文库:http://wenku.baidu.com/view/0dfc1ee79b89680203d82560.html<br />题酷发芽网: http://fayaa.com/tiku/view/<br />应届生求职论坛:http://bbs.yingjiesheng.com/forum.php<br />海量数据技术处理:http://www.cnblogs.com/pkuoliver/archive/2010/10/02/mass-data-topic-1.html

2011-03-13 18:14:00 771

转载 模式匹配的KMP算法详解

<br />这种由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现的改进的模式匹配算法简称为KMP算法。大概学过信息学的都知道,是个比较难理解的算法,今天特把它搞个彻彻底底明明白白。<br />注意到这是一个改进的算法,所以有必要把原来的模式匹配算法拿出来,其实理解的关键就在这里,一般的匹配算法:<br />int Index(String S,String T,int pos)//参考《数据结构》中的程序<br />{<br />  i=pos;j=1;//这里的串的第1个元素下标是1

2011-03-12 22:07:00 632

原创 高精度算法二:乘法

<br />#include <iostream>#include <Windows.h>using namespace std;void multiply(char* a, char* b, char* c) //c = a*b{ int len_a = strlen(a); int len_b = strlen(b); int total = len_a + len_b; int* data = new int[total]; //两个

2011-03-12 21:42:00 1206

原创 高精度算法一:加法和减法

#include #include using namespace std;#define MAXSIZE 100////高精度算法struct Data { int len; //数据长度 int s[MAXSIZE]; // 保存数据数组};void StringToData(const string& s, Data& d) //将string 转换为Data{ if (s.size() == 0) { retu

2011-03-12 17:36:00 3878 1

原创 二叉树的三种遍历方法(递归和非递归)(转载)

<br />#include<iostream>#include<stack> //STL#include<queue>using namespace std;class Tree{public: Tree *Left; Tree *Right; char data; Tree(); //成员函数 void CreateTree(Tree* &node); //递归的遍历二叉树 void PreOrderVisit(Tree *T); void

2011-03-10 17:24:00 4737

原创 单链表的实现(包括就地逆转单链表,表排序, 合并单链表、判断表是否有环)

#include using namespace std;/////////结点///////struct Node{ int data; //数据 Node* next;//下一个结点 };/////////////单链表/////////class LinkList{public: void Init(); void Create(int n); //创建带n个数据的单链表 void Dis(); //输出结果 bool

2011-03-09 23:19:00 2230

windows 图形编程源码

windows 图形编程源代码rar,下载

2011-08-26

《脚本驱动的应用软件开发方法与实践》.pdf

本书讲解了xml配置ui元素,应用程序做逻辑处理的策略,

2011-08-26

Windows shell编程.pdf

windows shell 编程pdf,关于windows shell 编程详细的介绍

2011-08-26

Windows+Shell扩展编程完全指南(配套代码)

windows shell 编程参考资料

2011-08-26

MFC 开发COM进程内组件实例小工程

MFC 开发COM进程内实例小工程,可以参考下

2011-05-16

windows 核心编程 第五版 源码

windows 核心编程源码,很漂亮的代码, 多经典就不要说了

2011-05-08

VC++ 动态显示cpu 使用率 和内存使用率类

两个类, 一个用于显示Cpu动态使用率, 一个用于显示内存动态使用率, 从CStatic派生,双缓冲绘图, 无闪烁

2011-04-03

Win32 封装的查看模块信息类CFileVersion

能查看模块所有信息的封装类,能获取模块版本号、修改时间、所属公司等等信息。

2011-04-03

Win32 Api获取模块相关信息封装类CFileVersion

Win32 Api获取模块相关信息封装类CFileVersion 能获取模块的版本号, 修改时间, 所属公司等等。

2011-04-03

VC++ 网络编程实用案例精选源代码

VC++ 网络编程实用案例精选这本书里面例子的源代码。。。

2010-09-12

EFFective STL中文版

C++STL使用的注意事项,如何高效的使用STL

2010-06-11

mfc自己做的一个基于文件实现的职工管理系统

自己做的一个基于文件实现的管理系统,对于各种出错信息由很好的处理,用户名和登录密码分别是User和1991

2010-05-11

vc++编程指南.chm

一本很好的vc++编程入门书,讲解的很详细。。对于初学者有很大的帮助。。

2010-05-08

用c++做的一个职工管理系统

用c++做的一个职工管理系统啦,对于刚刚学c++的可以参考一下

2010-05-02

空空如也

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

TA关注的人

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