- 博客(49)
- 资源 (2)
- 收藏
- 关注
原创 C++内存泄漏检测代码
我们在进行C++编码的时候,难免会遇到内存泄漏的时候,特别是一些新手朋友们在编码完成后花大量的时间解决BUG,在该文章我用代码剖析跟踪内存泄漏的原理,熟悉C/C++的朋友都知道内存分配和释放都是要成对调用的,如果某处代码只分配内存,而没有释放就会造成内存泄漏的bug。下面帖出我写的内存泄漏跟踪类的代码:MemLeakTrack.h文件#pragma once#ifndef INC_TRACK_ALLOC_H#define INC_TRACK_ALLOC_H#include <.
2020-08-27 16:28:04
581
原创 函数指针模板的简单使用
//函数指针模板的定义 template<typename ReturnType, typename... Args> class ProcTemplate { typedef ReturnType(WINAPI * PFN_PROC)(Args...); public: ProcTemplate(LPCTSTR pszModule, LPCSTR pszP...
2019-10-22 23:09:15
346
原创 OLE时间和CTime时间相互转换
1.OLE时间是用double类型来表示的,整数部分是自1900年至今流逝的天数包含润年计算,而小数部是不足一天流逝的总秒数。2.CTime时间用的是__int64类型来表示的,数值是自1900年至今流逝的总秒数。3.下面用代码来描述一下转换的算法,值得一提的是两个函数都对25569数进行了加减,而这个值是1900-01-01到1970-01-01所流逝的总天数。//OLE时间转CT...
2018-12-02 21:39:51
2491
原创 字典树Trie使用数值作为KEY
字典树的数据结构我就不作描述了,网上的Trie算法基本上都是基本字符串作为KEY的,字符串作为KEY每个子节点占用26 * 4个字节,对于数据量不大的情况效果不错,但对于大量数据占用内存空间消耗比较大,而使用数值作为KEY的话每个节点仅点10 * 4个字节,相对于字符串来说浪费的空间得到很大改善了。直接上代码!template <class Type>class CTrie{...
2018-11-27 18:00:58
350
原创 在迁移或者升级项目文件后经常会遇到C1083解决方法
错误描述fatal error C1083: 无法打开预编译头文件:“xxxxx.pch”: No such file or directory这种问题一般是属于项目文件迁移或者配置不正确而造成的,解决办法就是手工配置下项目属性:1.打开项目工程属性设置窗口,配置如下:2.当然这样设置之后可能仍然会出现C1083错误,这是因为将工程下所有文件属性都设置成使用
2015-06-11 18:19:48
691
原创 使用命令的脚本来停止或启动IIS中的某个站点
IIS提供了一些vbs脚本以便方面自动批量来管理您的站点,这些脚本文件可以在System32目录里找到。而我今天要介绍的主是启动或者停止IIS中的某个站点而不是IIS服务进程。可以先建立一个bat文件在这个文件中写入以下代码:停止iisweb /stop w3svc/xxxxxxx启动iisweb /stop w3svc/xxxxxxx这里的xx
2015-04-17 14:47:46
8042
转载 高性能服务器的资源和相关站点
高性能服务器的资源和相关站点本文作者:金蜗牛Goldou本文出处:http://blog.youkuaiyun.com/goldou声明: 本文可以不经作者同意, 任意复制,转载, 但任何对本文的引用都请保留文章的作者,出处以及声明信息. 谢谢!引子最近由于自己参与的项目和毕业论文的关系,正在研究高性能服务器方面的编程。服务器网络层使用中间件ACE做框架。高性能服务器编程的
2011-11-13 16:49:31
853
原创 Ubuntu中常用的工具安装
1.mysql-serversudo apt-get install mysql-servermysql -u root –p (登录)2.GCCsudo apt-get install build-essential (安装) 3.VIMsudo apt-get install vim
2011-10-31 20:49:58
597
转载 开源游戏通讯引擎RakNet
Raknet是一个基于UDP网络传输协议的C++网络库,允许程序员在他们自己的程序中实现高效的网络传输服务。通常情况下用于游戏,但也可以用于其它项目。Raknet有以下好处:l 高性能 在同一台计算机上,Radnet可以实现在两个程序之间每秒传输25,000条信息;l 容易使用 Raknet有在线用户手册,视频教程。每一个函数和类都有详细的讲解,每一
2011-10-26 20:38:39
1180
转载 如何利用缓存服务器来负载均衡
根据一些专家的调查分析,发现企业在使用数据库的时候,90%以上主要用来查询。有些企业这个比例甚至更高。也就说,用户对数据库的操作,其实更新操作占的比例很少。大部分的操走都只是查询操作。如一些论坛,大部分用户只会看贴,而不会发帖。这就是一个典型的查询操作比例大大超过更新操作比例的例子。针对这种情况,其查询操作往往是其数据库性能的瓶颈。如何有效提高查询的性能,这就使各个数据库专家在考虑的问题。在SQL
2011-10-20 16:46:33
912
转载 SQL SERVER 数据库复制之事务性复
SQL SERVER 2005数据库复制之事务复制事务复制与快照复制不同,快照复制仅仅是对数据库进行一次扫描,并将其内容复制分发到服务器上,而事务复制是对数据库进行实时的监测,随时将数据库的变化复制下来,分发到服务器上。下面让我们做个实验来测试一下首先我们需要2台服务器分别作为发布&分发服务器(server1)和订阅服务器(server2)事务发布与快照发布还有不同,事
2011-10-20 16:27:25
1048
转载 如何编译Windows7、 Vista的大图标(128*128, 256*256)?
Windows7、 Vista的图标Windows7、 Vista的图标包含一个高分辨率的256 × 256像素的图像。 这些图像专门用于Windows7、 Vista和他们使用PNG基于压缩存储。 Explorer的动态重采样所需的分辨率。Windows7、 Vis
2011-09-14 13:27:36
869
原创 可变参数的函数应用
void log_printf(LPCTSTR pszFormat, ...) { TCHAR szBuffer[512]={0}; //读取参数 va_list args; va_start(args,pszFo
2011-09-13 19:45:38
563
转载 SO_LINGER和优雅关闭连接
当调用closesocket关闭套接字时,SO_LINGER将决定系统如何处理残存在套接字发送队列中的数据。处理方式无非两种:丢弃或者将数据继续发送至对端,优雅关闭连接。事实上,SO_LINGER并不被推荐使用,大多数情况下我们推荐使用默认的关闭方式(即下方表格中的第一种情况)。
2011-08-09 13:50:58
1035
原创 自绘CListCtrl防止闪烁的方法
自绘控件中经常会遇到闪烁的问题,主要原因是某个区域发生了重复性的绘制而导致的,而列表控件在自绘后闪烁原因是WM_ERASEBKGND消息所导致的。解决定办法可以将这个消息屏蔽掉,然后使用双缓存,在Windows 5.1版本以后可以使用LVS_EX_DOUBLEBUFFER样式,为了各个版本的兼容性我个人不建议使用这个样式,因此我们可以拦截WM_PAINT消息来使用我们自已创建的双缓存,具体看代码所
2011-06-27 23:03:00
3074
转载 自定义浏览器控件
<br />同自动化浏览器(http://blog.joycode.com/jiangsheng/archive/2005/10/20/65489.aspx)相比,自动化浏览器控件(WebBrowser Control) 在应用程序中更加常用。从Outlook的预览窗格到Maxthon这样的基于IE引擎的浏览器,从无界面的HTML分析器到Norton Antivirusd的主界面,浏览器控件在众多领域被用作各种各样的用途。这也使得有必要根据具体的用户需求自定义浏览器控件的行为。<br />在应用程序中加入浏
2011-05-30 13:43:00
1442
原创 在MFC中捕获CWebBrowser控件的事件
<br /> 在很多时候可能要用到CWebBrowser控件,但是CWebBrowser并不像CHtmlView一样继承一下然后重载下虚函数就可以获取IE中的事件,而CWebBrowser却没有提供这样的功能,但是可以自已进行处理,下面来看下MFC的代码:<br /> <br />1.首先定义一个CWebBrower成员对象,然后在窗口初始化事件中创建CWebBrower对象.<br />BOOL CMyDlg::OnInitDialog(){ CDialog::OnInitDialog
2011-04-23 01:28:00
1689
原创 在MFC中捕获CWebBrowser控件的事件
<br /> 在很多时候可能要用到CWebBrowser控件,但是CWebBrowser并不像CHtmlView一样继承一下然后重载下虚函数就可以获取IE中的事件,而CWebBrowser却没有提供这样的功能,但是可以自已进行处理,下面来看下MFC的代码:<br /> <br />1.首先定义一个CWebBrower成员对象,然后在窗口初始化事件中创建CWebBrower对象.<br />BOOL CMyDlg::OnInitDialog(){ CDialog::OnInitDialog
2011-04-23 01:28:00
2493
1
原创 格式化带千分号的字符串
为了方便读数字一般都会在数字中加千分号来快速识别数字,列如3,0000,0000这样一眼就来看出是3亿。下面写出一个函数来快速格式化一个带千分号的字符串。经过测试速度相当快,不使用任何库函数支持。 CHAR* FormatNumberString(LONGLONG lNumber, CHAR *pBuffer, int nLenght){ if (pBuffer==NULL || nLenght0) { szNu
2010-10-26 21:48:00
2045
原创 使用GDI+保存带品质的JPG
<br /> 由于使用CImage将图像转换成JPG后品质严重受损,如果使用第三方库程序体积会很大,所以使用GDI+是最合适的选择。下面的代码示例了将位图格式的图像转换成不同品质的JPG格式,注意在使用之前要初始化GDI+库。<br /> <br /> HRESULT SaveImage(BITMAPINFO *pbi, void *pBits, LPCTSTR pszFileName, LONG lQuality){ ASSERT(pbi!=NULL && pBits!=NULL); A
2010-10-23 14:52:00
2648
原创 子类重载父中的函数
在很多情况下可能需要继承一个类并且重载父类中的函数某些函数,但是重载父类中的函数以后实例化对象后却能调用父类中重载之前的函数,例如以下例子:class CA{public: BOOL LoadImage(LPCTSTR pszFileName); ...};class CB : public CA{public: BOOL LoadIma
2009-11-08 09:53:00
1158
转载 使用CImage显示透明的PNG图片
CImage的AlphaBlend函数可以显示半透明或透明的图片,但是当使用这个函数显示PNG图片时,经常会发现PNG图片的背景没有透明,而是被显示为白色.在网上多处搜索都没有找到原因,只能自己动手了.通过调试代码可以发现,CImage的AlphaBlend函数内部调用的是全局的Window API函数:AlphaBlend(HDC hdcDest, int n
2009-11-07 15:56:00
3049
1
原创 进度条控件的绘制
在许多自绘控件中进度条的绘制是相对要非常容易得多的一件事情,因为进度条只作为进度信息的显示并不需要做其它的鼠标键盘事件处理,设置一下最小进度和最大进度基本上就可以用了。 我就说说我自绘进度条的方法,首先要绘制它就必须先获得进度相关的一些参数信息,列如最小进度最大进度和当前进度值,这些值获得的方法也很简单通常的办法就是向进度条控件发消息,例如PBM_GETPOS得到
2009-10-02 19:22:00
1633
原创 对URL进行编码(UTF-8)
最近由于项目需要,写了一个函数专门对URL里的中文参数行编码,网页那边是用的UTF-8编码集的,所以在编码之前必须把字符串转换成UTF-8的再进编码。 大家都知道在URL地址里是不可传中文字符的,因此如果你要URL地址里传带有中文字符的参数那就必须对它进行编码。其实编码是很简单的,只是将字符串中的每个字符转换成16进制的用%隔开就行了。注意我这个函数是UTF-8的,如
2009-06-14 16:10:00
5335
4
转载 【ZT】哈希的原理和代价
【ZT】哈希的原理和代价 哈希表和哈希函数是大学数据结构中的课程,实际开发中我们经常用到Hashtable这种结构,当遇到键-值对存储,采用Hashtable比ArrayList查找的性能高。为什么呢?我们在享受高性能的同时,需要付出什么代价,那么使用Hashtable是否就是一桩无本万利的买卖呢?就此疑问,做以下分析,希望能抛砖引玉。1)hash它为什么对于键-值查找性能高 学过数据结构
2009-06-01 19:20:00
945
原创 从URL路径装入一幅图片
这个方法实际上是使用IXMLHTTPRequest接口完成图片下载,然后再将下载的数据转换为IStream接口,最后用接口IPicture装一段数据流来完成图片的加载。 HANDLE LoadImageFromURL(LPCTSTR pszURL){ HRESULT hr; IXMLHTTPRequestPtr pIXMLHTTPRequest = NULL;
2009-05-26 12:07:00
3518
转载 窗口控件透明的通用解决方案
这篇文章我最早在codeproject上发布,原文地址http://www.codeproject.com/KB/dialog/transparent-control.aspx. 反馈还不错,有时间把它翻译一下。 Download demo - 191 KB Download source - 205 KB IntroductionIn UI development, we have t
2009-05-14 02:19:00
1671
1
转载 在COM中使用数组参数-SafeArray
1 使用SafeArraySafeArray是VB中的数组存储方式。通过SafeArray,可以在VC++和VB间相互调用。SafeArray也是Automation中的标准数组存储方式。1.1 SafeArray处理函数COM提供了一套API用于处理SafeArray。为了保证程序和SafeArray结构无关[1],程序中建立、读取、更改和释放SafeArra
2009-04-18 02:06:00
1915
原创 类似于AlphaBlend,对24位位图进行透明混合
/*********************************************************************/ * ** Create24BPPDIBSection(HDC, int, int);
2009-03-26 20:38:00
1773
1
原创 设置列表头控件高度
自绘列表头控件后,在XP主题下看起来还是不错的,但是当主题改变成Windows经典样式后头控件的高度也随之而变了,自绘的效果一下就是原形毕漏了.这个问题以前也在社区贴子中见过,有人说设置字体可以改变头控件的高度,但这终归不是好办法. 在这里介绍一个可以改变头控件高度的方法,这个方法实际上是一个头控件的消息HDM_LAYOUT,在MFC中IDE没有提这个消息的映射宏,但可以使用ON
2009-03-01 04:09:00
2534
原创 SkinSB皮肤滚动条库的使用
说明 SkinSB库能为Windows标准控件或制定控件设置自定义滚动条皮肤,从而去达到美化控件的目的,如果觉得原Windows滚动条样式无法与你的程序界面搭配的话,那么SkinSB能帮你轻松的完成滚动条皮肤问题。该源代码为C语言编译通过,以标准API调用规范导出来函数,因此它可以在其它语言中使用,只需要将静态连接库改为动态链接库即可。 作者 : 李俊E-Mail : n
2009-02-16 12:29:00
10311
41
转载 内存泄漏定位(依赖MFC)
今天调试程序,发现有内存泄漏但是没有提示具体是哪一行,搞得我很头疼。结果在网上搜索了一些资料,经自己实践后整理如下: 第一种:通过"OutPut窗口"定位引发内存泄漏的代码(下面转,我写的没原文好,也懒得写)。 我们知道,MFC程序如果检测到存在内存泄漏,退出程序的时候会在调试窗口提醒内存泄漏。例如:class CMyApp : public CWinApp
2009-01-08 19:52:00
5137
1
原创 使用CxImage库的初体验
众所周知CxImage库是个功能非常强大的图片处理库,它支大部分常用的图片格式,使用它最主要的理由是它能很好的支持带有Alpha通道的PNG格式图片。之前也尝试过使用微软的ATL::CImage类,这个类也支持大部分的图片格式包括PNG格式的,相比CxImage库而言它,它只是一个轻量级的ATL组件类在Windows平台下只要支持GDI+都可以很方便的使用这个库。
2008-12-28 22:11:00
4669
5
原创 在对话框中使用加速键
For the purposes of this article, we add accelerator key functionality to the AboutBox dialog box of an MFC MDI application: 1.Create a new MFC MDI application named Test.2.Add a butto
2008-12-13 23:08:00
973
转载 A*寻路算法
原文出处:A* Pathfinding for Beginners译者序 很久以前就知道了A*算法,但是从未认真读过相关的文章,也没有看过代码,只是脑子里有个模糊的概念。这次决定从头开始,研究一下这个被人推崇备至的简单方法,作为学习人工智能的开始。这篇文章非常知名,国内应该有不少人翻译过它,我没有查找,觉得翻译本身也是对自身英文水平的锻炼。经过努力,终于完成了文档,也明白的A
2008-10-13 23:09:00
12770
9
原创 位图的一些相关知识
从位图中创建一个区域窗口需求:时候在制作一些特殊的界面时可能要用到异形窗口。解决方案:制一张位图,在位图中指定一个透明色,这个透明色大多作为背景,也就是窗口中要切除的部分,即在一张位图中提取一个区域窗口是一个再方便不过的事情了,实现原理实际上是读取位图中的每个像素和指定的透明色进行对比,如果是相同的颜色就排除,否则就合并起来。 ///////////////////////////
2008-05-22 14:51:00
1180
原创 文件结构化存储技术与应用
自从Windows系统推出以后,微软公司就一直致力于完善和采用新的文件存储方法,其中结构化存储是微软公司最为推崇的,该技术采用COM技术架构,当前广泛使用的Office文 件都是采用结构化的存储方式,同时微软公司为推广这一存储
2008-05-15 00:40:00
7072
4
原创 在调试DirectShow程序的时候,利GraphEdit查看自已程序中的Graph
在翻阅DirectX 9.0 SDK帮助文档的时候,看到一个Loading a Graph From an External Process的主题,仔细的阅读了下芳知它可以利GraphEdit来查看自已程序中正在运行的IGraphBuilder中的图形,可想而知在调试一个DirectShow程序的时候利GraphEdit来查看图形是多么直观的一个方法,可以给我们在调试的时候带来很大的
2008-05-02 23:12:00
1725
1
原创 定义函数数组[C/C++]
// 函数定义void fun1() { printf("function 1 "); }void fun2() { printf("function 2 "); }void fun3() { printf("function 3 "); }void fun4() { printf("function 4 "); }// 方法1// 函数数组定义并赋初值void (*p[])() = { fu
2007-10-06 15:04:00
3570
原创 无边框窗口实现拖拉效果
实现效果需要处理以下这三个消息:WM_NCHITTEST WM_SETCURSOR WM_NCLBUTTONDOWN 消息处理函数:UINT CXXXDlg::OnNcHitTest(UINT nHitTest, CPoint point)...{ CRect rect; GetWindowRect(&rect); if(point.x rect.left+3) ret
2006-12-16 16:02:00
3214
1
皮肤滚动条(SkinSB_1.2)
2009-10-02
皮肤滚动条库源代码(SkinSB)
2009-02-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人