- 博客(13)
- 资源 (14)
- 收藏
- 关注
转载 Map以自定义类做为键值
map在STL中的定义template , class Alloc = alloc> 第一个参数Key是关键字类型第二个参数T是值类型第三个参数Compare是比较函数(仿函数)第四个参数是内存配置对象map内部存储机制实际是以红黑树为基础,红黑树在插入节点时,必须依照大小比对之后在一个合适的位置上执行插入动作。所以作为关键字,起码必须有“在选择map的关键字时,注意以下两点,同时这两点也是改错的方法:a) 关键字明确定义“b) 没有“
2011-04-17 17:10:00 17743 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 3143
转载 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 11891 2
原创 Windows 进程通信的几种方式
<br />1 文件映射<br />文件映射(Memory-Mapped Files)能使进程把文件内容当作进程地址区间一块内存那样来对待。因此,进程不必使用文件I/O操作,只需简单的指针操作就可读取和修改文件的内容。<br />Win32 API允许多个进程访问同一文件映射对象,各个进程在它自己的地址空间里接收内存的指针。通过使用这些指针,不同进程就可以读或修改文件的内容,实现了对文件中数据的共享。<br />应用程序有三种方法来使多个进程共享一个文件映射对象。<br />(1)继承:第一个进程建立文件映
2011-04-08 10:11:00 1397
转载 浅析C++中内存分配的方式
在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/ 静态存储区和常量存储区。<br /><br />栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。<br /><br />堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个 delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。<br /><br />自由存储区,就是那些由malloc等分配的内存块,他
2011-04-04 00:26:00 704
转载 VC实现将资源打包并释放到指定文件夹
<br />很多时候,我们可能要将某些文件打包到资源中,然后当程序执行的时候,发现缺少某些文件时,进行自我修复,以维持程序的正常执行, <br />很多安装程序或者比较高级点的智能程序都已经这样做,比如文件损坏时,安装程序将修复这些文件.一些高级程序的常用设置及文件 <br />遇到破坏时,也会自我修复,它们的这些神奇功能,全都是依靠自身的资源包,替换损坏的文件,或者创建新的默认文件实现的. <br />下面我来说一说这种程序比较普通的一些做法: <br />首先在程序入口处,我们以MFC程序为例子,我们找
2011-04-03 22:55:00 4757 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 10246 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 6262
原创 创建浏览文件夹对话框
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 5259 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 1248
原创 枚举当前系统进程以及进程加载模块
枚举当前系统进程的方法大致分一下几个步骤:一、 提升应用程序的进程权限///////////////自定义函数实现/////////////////BOOL PromotePrivilege(BOOL bEnable){ // 附给本进程特权,以便访问系统进程 HANDLE hToken; // 打开一个进程的访问令牌 if(::OpenProcessToken(::GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken))
2011-04-03 21:11:00 11689 1
转载 Windows 临界区,内核事件,互斥量,信号量。
临界区,内核事件,互斥量,信号量,都能完成线程的同步,在这里把他们各自的函数调用,结构定义,以及适用情况做一个总结。临界区:适用范围:它只能同步一个进程中的线程,不能跨进程同步。一般用它来做单个进程内的代码快同步,效率比较高。相关结构:CRITICAL_SECTION _critical相关方法:/*初始化,最先调用的函数。没什么好说的,一般windows编程都有类似初始化的方法*/InitializeCriticalSection(& _critical) /*释放资源,确定不使用_critical时调
2011-04-02 21:21:00 3398
原创 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 9349
Win32 Api获取模块相关信息封装类CFileVersion
2011-04-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人