自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(84)
  • 资源 (6)
  • 问答 (1)
  • 收藏
  • 关注

转载 unicode和ucs的区别

unicode,中文叫万国码,统一码,是统一码联盟为了世界上大多数文字系统进行整理和编码。      unicode2.0后基本和ISO 10646规范保持一致.      和unicode类似,iso组织也在做同样的事情,iso开展了 ISO/IEC 10646项目,名字叫“ Universal Multiple-Octet Coded Character Set”,简称UCS。

2014-01-07 11:55:06 1099

转载 windows 多线程编程的几点经验

1、不要在子线程操作UI控件2、如果你操作了,也绝对不能调用UpdateData来更新界面,否则程序Crash3、这一条建立在第一条基础上---你在子线程操作UI控件,不可以让主线程等待某些条件(如等待子线程关闭,而子线程正在操作UI、等待进入临界区,而子线程已经进入,并且操作UI),否则会出现假死...4、最好方案:子线程操作数据,完成之后,通知主线程进行更新....

2013-08-02 13:44:21 932

转载 Poco vs Boost

POCO的优点: 1) 比boost更好的线程库,特别是一个活动的方法的实现,并且还可设置线程的优先级。 2) 比 boost:asio更全面的网络库。但是boost:asio也是一个非常好的网络库。 3) 包含了一些Boost所不包含的功能,像XML,数据库接口等。 4) 跟Boost相比,集成度更高,是更加统一的一个库。 5) Poco的c++代码更清洁,现代和易理解。对不

2013-07-29 17:22:53 816

转载 多线程中对全局变量(整型类型)是否需要同步操作

背景:如果有一个类型为int的全局变量a, 线程A对a仅进行读操作,线程B对a仅进行写操作,那么两个线程在操作a时是否需要加锁来保持同步呢?这个不能简单判断一定要加锁或是不加锁。要分情况讨论。        情况一:如果线程A读取a的目的仅为了显示给界面,或者a满足一定条件后执行某些操作,而在执行这些操作过程中对a是否发生了变化并不关心;一定间隔时间后又同样执行上述操作。这种情况下,就不需

2013-06-24 17:17:13 4090

原创 修改窗口风格

一般来说修改窗口的风格有两种方法,第一种是在窗口创建之前,修改创建窗口所引用的结构体。另外一种是通过API。1、修改CREATESTRUCT结构体AppWizard生成的应用程序框架的主窗口具有缺省的窗口风格,比如在窗口标题条中自动添加文档名、窗口是叠加型的、可改变窗口大小等。要修改窗口的缺省风格,需要重载 CWnd::PreCreateWindow(CREATESTRUCT& cs)函数

2013-06-24 13:39:40 1566

转载 更改MFC对话框默认的窗口类名

这一段时间做进程注入,需要其他进程向当前进程发送消息,所以需要当前程序的窗口句柄。所以想到:FindWindow函数。以前使用这个函数就是直接把第一个参数设置为Null,通过第二个参数来获取窗口。这种方法对于有标题栏的窗口有用,但是如果一个窗口的风格是无标题栏,这个方法就不行了,只用使用第一个参数。于是查询到如果一篇文章。感谢作者。Windows操作系统中有一个概念——窗口类。

2013-05-03 22:46:18 817

原创 Delegate & Event

这几天开始做Silverlight项目,所以自然而然就开始解除到C#了,首先遇到的就是Delegate和Event;看着各种UI类中的Delegate和Event就略感不爽,因为我对他们不太理解,于是花费了几分钟总结一下,梳理一下思绪。delegate:用delegate定义的类型类似C函数指针类型例如:typedef int (* Type_Add)(int x,inty);pub

2013-03-27 10:36:06 717

转载 类型转换

C风格的类型转换:风格:var=(type)varC++类型转换static_cast:static_cast类型转换用于相关类型之间的转换,诸如:在同一个类的继承层次关系中,向上或向下转换;枚举类型与整数类型之间的转换;浮点类型与指数类型之间的转换。const_cast:用于消除变量的const限定,转换之后的变量就不再具有“const”了,如果是一个const指针的话,

2013-03-21 14:54:14 528

原创 关于windows多字节和宽字节函数的总结:

在刚开始的时候,我变成用的是vc6.0,这个时候,我从来不会考虑编码的问题,因为vc6.0默认的编码就是ansic,不用来回地设置编码类型。不过到后来IDE换成vs2010的时候,vs2010默认的编码是宽字节,为了让自己的程序无论在多字节还是在宽字节环境都能正常编译,所以开始喜欢上了T这个东西,无论是字符变量的定义,还是函数的运用我都喜欢带T(t)通用型的。不过这种方式并不是放之四海而皆准的。部

2013-03-21 12:43:25 1451

原创 Detours使用注意

1、保存系统函数的那个全局函数指针切记不可重复赋值。因为在事务提交之后,这个函数指针指向的区域是一个跳转到我们截取的那个函数的地址,如果给这个变量重新赋值之后,就无法跳转到原来的函数了,并且陷入一个递归调用。 例如:FUNTYPE pFun=LoadLibrary;(当调用事务提交之后,不可再变)解决方案:if(pFun==NULL){pFun=LoadLibrary;}2、如

2013-03-21 11:31:34 1007

转载 VS2010进行远程调试方法总结

转自:http://blog.sina.com.cn/s/blog_a459dcf5010153o7.html假设现在有A、B两台PC机。VS2010安装在A机器上,也就是说A机器是开发使用的机器。B机器是程序运行部署使用的机器,其IP为:192.168.1.129(局域网IP)说明:如果B机器是外网IP下面方法照样适合,不过在使用的适合可能会出现无法附加到进程的错误。如果出现

2013-03-20 13:29:24 739

原创 运行时库冲突

为什么会链接的时候会导致库冲突例如:LINK : warning LNK4098: 默认库“LIBCMT”与其他库的使用冲突请使用 /NODEFAULTLIB:library主要原因就是你链接程序的时候,你同时链接了多个运行库,所以出现这个提示。对于很多windows提供的库,都包含两个版本:静态链接版本,动态链接版本。链接模式:Debug模式,Release模式。由于宏定义的

2013-03-14 00:02:22 1252

转载 DirectDraw GDI的区别之一

屏幕上的显示在内存中是以下这样的结构。当向显示缓存区中写入数据时,就会显示相应的图像。DirectDraw的作用是创建,其实就是取得缓存区的地址,并且还能创建一个虚拟的缓存区内存。例如,A区域内存可以在主内存中创建一块叫offscreen的缓存区。如果显示卡的内存比较大,如图3.6所示,有一块区域是映像到屏幕上的可见区域,还有的显存区域是屏幕上看不见的,这个区域被称为offscreen。也就是

2013-03-12 09:37:57 10699

原创 VC的编码:WCHAR的控制台显示问题

字符集与编码方案概念:字符集与编码方案概念分明,却互依互存。字符集与编码方案是配套的。比如提到 GB2312 编码,即是指 GB2312 字符集与 GB2312 编码方案。此处 GB2312 为两字节定长编码。而提到 Unicode 编码,即指 Unicode 字符集与 UTF-X 编码方案。其中 UTF-16 为两字节定长编码,UTF-8 设计为变长是为了工业应用中兼容已有的 ANSI/AS

2013-03-07 14:56:17 1464

原创 WideCharToMultiByte与MultiByteToWideChar

搞编程的程序员怎么可能不遇到关于编码的问题呢?在网页经常用到 :gb2312,UTF-8等等,在数据库上也会用到,还有还有很多多......无奈,今天又遇到了一个编码的问题,就是在MFC中的WideCharToMultiByte与MultiByteToWideChar这两个编码转换函数,看了一上午的东西,终于在看了荷包蛋:http://www.cnblogs.com/gakusei/artic

2013-03-05 11:55:30 862

原创 Detours能截取哪些函数?

//@modify:由于自己理解能力的有限,所以我下面的理解是片面的,不全面的,所以在此更正。        这两天一直在用Detours(想要详细了解,请google搜索一下)这个api hook库,然后遇到不少的问题。Detours这个库的基本原理是:修改目标函数的首几个字节,跳转到我们的钩子函数,我们可以根据需要决定是否通过跳板执行原来的函数。        我遇到:有些函数能钩到,

2013-03-02 18:58:14 1072 1

原创 开启与关闭硬件加速

方法一、修改注册表HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\VIDEO 找到\Device\Video0得到:string;string去除\Registry\Machine\获得一个字符串string2HKEY_LOCAL_MACHINE+string2得到一个注册表地址,找到Accelaration-level:这个可以设置硬件加速级别 1-5

2013-02-28 12:36:08 2178

原创 Api Hook, Hook Api that you want to Hook

如果你想截取某个Api的执行,那么你可以选用微软提供的一个库:Detours;如果要下载请链接:http://research.microsoft.com/en-us/projects/detours/网上提供了很多源码,都是关于怎么使用这个库的,但是今天我把它下载下来,不管三七二十一,看着网上提供的范例,照着写了一个。一运行出现:stack flow(很明显是递归调用);哎呀,极度郁闷,于是

2013-02-28 00:37:33 399

原创 mfc程序透明

使程序透明:1、设置程序的风格GWL_EXSTYLE,这个函数使程序彻底透明SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^WS_EX_LAYERED);    2、设置窗口的透明状态SetLayeredWindowAttributes(th

2013-02-25 10:26:19 545

原创 vs2010调试dll,以及与vc6.0的一点小区别

vs2010 dll调试方式在vs6.0,当执行dll时候,它会让你选择一个调试dll的应用程序,这个很方便;当我今天用vs2010调试dll的时候,想象中要弹出一个对话框让我选择一个应用程序。但是想象是美好的,现实是残酷的,它弹出了一个无法执行应用程序,非常郁闷。我用vs2010开发项目,没有多长时间,所以很多东西都不是太懂,只是感觉里面需要配置的东西实在太多了。于是开始在网

2013-02-19 17:21:56 3695

原创 获取被加载dll路径和应用程序运行目录

获取程序路径和获取加载模块路径DWORD GetModuleFileName(HMODULE hModule,LPTSTR lpFilename,DWORD nSize);函数参数说明:hModule HMODULE 装载一个程序实例的句柄。如果该参数为NULL,该函数返回该当前应用程序全路径。lpFileName LPTSTR 是你存放返回的名字的内存块的指针,是一个输出参数

2013-02-19 16:30:33 3421

转载 Boost 1.47.0编译

一、Boost的安装:1、先到官网下载http://sourceforge.net/projects/boost/files/boost/1.47.0/,现在我下载的版本是1.47.02、进入boost_1_47_0/目录运行:bootstrap.bat,生成b2.exe和bjam.exe两个Build文件。3、用VS2008的Command Prompt (方法:Tool

2013-02-18 11:21:09 743

转载 C++测试框架的选择

(金庆的专栏)本文以表格形式总结了 “Exploring the C++ Unit Testing Framework Jungle” (http://gamesfromwithin.com/exploring-the-c-unit-testing-framework-jungle ) 一文对各种单元测试框架的比较,并添加了原文所还没有加入的Google Test. 并添加了另一项特性

2013-02-17 17:04:51 529

原创 fstream打开文件模式

fstream:对于文件的操作很久两年前就开始使用了,但是仅仅为了达到满足自己需求的目的,就是要么是写,要么是读。从来没有对其进行详细的了解。自己也曾经想过花一点时间去总结一下,这个东西到底应该怎么用。但是由于:自己的本性懒,所以一直拖到今天,挤出一点时间把这个问题彻底解决一下。还有一点,读写不要同时用否则会出问题。相用的话,需要先seekg或者 seekp;ios::in 为输入

2013-01-31 18:51:37 3691

原创 E-R图--我的错误认知

E-R图学习数据库已经有很长一段时间了,不过后来很少设计数据库,所以很生疏了。但是在当时学习数据库的时候,我就有一点疑惑,但是当时由于自己的懒惰,对于自己不会的东西纵之任之,然后我就把它扔在了一边。直到昨天我在看一本书的时候有一次看到一个E-R图。又触发了自己的思考,之后自己很混乱,这次务必要来理一理自己的思路。遗留问题不解决是一件很恐怖的事情。先说一下问题:一个影音店要出租自己的影碟

2013-01-31 09:57:04 1020

原创 Window窗口绘制

窗口绘制过程:WM_NCPAINT:绘制父窗口的非客户区域。调用:OnNcPaintWM_ERASEBKGND擦出背景:调用OnEraseBkgnd->OnCtlColorWM_NCPAINT:绘制控件非客户区的消息,调用OnCtlColor->CtlColor->OnEraseBkgnd(父窗口)->OnCtlColorWM_ERASEBKGND(控件)调用OnC

2013-01-26 14:54:45 1723 1

原创 双缓冲使用注意事项

在遇到绘图闪屏的时候,我们可能第一反应就是利用双缓冲,这个的确是正确的。可是我们部分人会忽略某些细节造成效率降低的问题。注意一、如果需要频繁的向客户区Copy像素,那么我们的内存Dc应该是一个和窗口生命周期相同的变量。因为,我们每次创建Dc需要消耗时间,并且在加载位图的耗费的时间也非常多。我就犯了这个错误,每次绘图重新创建一个Dc,然后加载位图,调试的时候发现消耗时间太多了,于是得出这条结论。

2013-01-20 22:41:51 564

原创 自定义形状界面MFC

作为一个人,我们都是具有审美观点的,爱美之心人皆有之,如何是自己做出的程序更美,更漂亮,是每个程序员的心愿,每天看到的都是方方块块的矩形窗口,是不是很腻,很呆板。今天偶然想到怎么自定义界面形状的问题。然后就开搜索相关的知识,本来以为很难的东西,不过看过之后也没有那么难了。        我们可以想想每个程序都关连一个区域,这个区域决定将来程序的显示区域,超出区域之外的东西都不属于这个程序了。由

2013-01-20 01:15:54 1552

原创 无边框窗口拖动

这几天做UI,遇到了很多以前遇到,但是自己却没有解决的问题,在此把这些重新遇到的问题解决一下。也是我认识到在软件编程的一个道理:欠下的总要换的。这次所遇到的问题是:无边框的窗口移动。首先我要说说自己尝试过的方案,然后再说比较好的方案。我首先想到的方案就是:鼠标按下,记录一下坐标,鼠标移动的时候,把窗口移动到新的位置。这种方案能解决问题,但是鼠标移动太快的时候,窗口跟不上鼠标的动作。然后

2013-01-18 10:18:55 6761

原创 MFC闪屏解决方案

这两天一直在做UI设计,由于公司没有用到商业的Direct UI等界面库。所以码农们必须自己绘制自己的控件,于是乎这个编写UI的任务就落在我这个新码农身上了。然后以前一直逃避的问题有不期而遇。思密达。问题一、自己绘制的背景把界面上原有的控件遮挡住了,为了解决这个问题,可把我等吊丝累坏了。方案一、绘制完背景,然后再获取所有控件的区域,使其无效。于是问题解决了,可是新问题又来了,就是闪屏问题。

2013-01-17 18:06:49 2719

转载 GDI操作PNG图片

这两天在做UI,以前做过一点,但是不太熟悉,于是乎就遇到很多的问题。以前用BITMAP的时候,做的就是像素COPY,再多一点就是像素运算,这一切的东西都是有自己控制的。也就是说不参杂alpha通道。话说今天我用PNG图片,但是用到一个小图片的时候,图片总是不能正常显示。代码如下:CImage image;//CImage类有自己的Dcif (image.Load(imagePath

2013-01-16 17:32:56 6987

转载 10步让你成为更优秀的程序员

作者: Paul Firth 来源: 外刊IT评论 发布时间: 2013-01-01 20:29 原文链接 [收藏]  英文原文:10 steps to becoming a better programmer  这篇文章要介绍的,是我作为专业程序员这些年来学到的能真正提高我的代码质量和整体工作效率的 10 件事情。  1. 永远不要复制代码  不惜任何代价避免重复的代

2013-01-14 17:29:05 484

原创 用与程序关联的程序打开文件方式总结

用与程序关联的程序打开文件方式总结方法一:调用命令行_tsystem("start *")缺点需要弹出一个cmd窗口,所以很难看,不过功能是文件是打开了方法二:WinExec("",SW_HIDE);缺点:不支持unicode编码,不过可以编码转化方法三:ShellExecute(NULL,_T("open"),path,NULL,NULL,SW_SHOWNORMAL);

2013-01-09 09:32:36 579

原创 CMenu CImage ClistCtrl 小结

这些东西以前都用过,可以说都是浅尝辄止。随便接触了一下,不过真正做项目的时候,就会遇到各种各样的问题。好吧,一个一个开始说第一个:CMenu菜单使我们经常使用的控件,我们可以把它想象成一棵树,它有子节点;我们可以把某个叶子借点设置为(Popup:false)那么这个菜单变为不可有子节点,并且可以添加消息。可以通过GetSubMenu获取子菜单。菜单类型:弹出式 和 非弹出式创建类型

2013-01-08 16:16:16 639

原创 windows 截取消息

先概述一下消息:在API中:在消息队列中GetMessage,然后调用TranslateMessage,再然后分发消息DispatchMessage在MFC中:由于它把很多过程都封装了,所以我们都看不到了。但是它为我们留下了借口供我们调用,例如:PreTranslateMessage,我们在系统处理消息前,截取这个消息;在编程的过程中,我们可能经常去琢磨windows的内部实现,它是如

2013-01-07 19:27:57 990

原创 HitTest 和SubItemHitTest

今天做项目的时候,想到如何通过坐标获取点的坐标获取到CListCtrl的项,找了半天,终于发现这个两个函数了HitTest 和SubItemHitTest,他们的功能基本上相似:HitTest:Determines which list view item, if any, is at a specified position.SubItemHitTest:Determines which

2013-01-07 18:53:03 3177

原创 文件操作总结

文件操作总结了四种方式:Windows API,命令行,MFC类,SHFileOperation删除文件:1.删除指定文件第一种方法:定义一个文件类对象来操作CFile    TempFile; TempFile.Remove(); 第二种方法:DeleteFile("c:\\aaa.txt");2.删除目录(空目录)方法一  BOOL RemoveDire

2013-01-07 10:16:48 515

原创 GetClientRect,ClientToScreen,GetWindowRect,我的误用

GetClientRect:获取当前控件的客户区矩形(左上角:0,0)GetWindowRect获取基于窗口的矩形ClientToScreen把当前Point转化为基于屏幕的坐标ScreenToClient把基于屏幕的Point,转化为基于客户区的坐标(与调用这个函数的对象相关)以前我以为控件调用GetClientRect,会获取基于客户端的矩形。这太二了吧。由于没

2013-01-06 18:59:14 973 2

原创 遍历文件夹windows

写这篇博客主要是深化一下记忆,就是搜索字符串1、C:\bbb  就是搜索这个文件存在搜索到,不存在,出错2、C:\bbb\*搜索C:\bbb目录下的所有文件3、C:\bbb\不正确搜索格式遍历方式: _finddata_t fileInfo; long handle; CString localDir=""; handle=_findfirst((LPCTSTR)(loc

2013-01-05 14:58:16 346

原创 悲催的2012.12

2012年结束了,我笑迎2013,期待2013年有较好的发展。对未来充满憧憬是好的,但是 不能忘记过去的过失。2012.12月是一个蛋疼的一月,是悲催的一月,反正在这一月我非常不爽;把这一个月的蛋疼经历娓娓道来.....       11月份来到北京,在公司工作了一个月,为了找到更适合的薪资和较好的职业方向,于是在自己再三犹豫下,把自己仅仅干了一个月的工作辞职了。不过在辞职前,我已经找好了工作

2013-01-04 17:33:05 736 1

开启关闭硬件加速

开启关闭硬件加速,通过批修改命令(come from web)

2013-02-28

C++时间类型转换

在windows编程中,经常会用到各种各样的时间类型:FILETIME SYSTEMTIME tm time_t,于是就把他们总结出来

2012-11-22

最小化为系统托盘图标

我把它封装成为一个类:NotifyIcon NotifyIcon.h NotifyIcon.cpp

2012-11-20

一个临界区类

这是一个临界区类,实现线程同步。借用windowsAPI封装的一个小工具类,便于自己以后编程,这个类是以后的开始

2012-11-15

MFC 类库

MFC类库这是一个自己的学习资料 ,和大家分享一下

2011-01-21

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

TA关注的人

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