
零星点点
MFCJCK
这个作者很懒,什么都没留下…
展开
-
重绘标题栏
在重绘标题栏时,一般只要重载WN_NCPAINT消息即可,但是这并不完美,因为在程序第一次启动时微软的系统按钮还是会闪一下,基本是重绘标题栏的软肋,通过spyXX查看发现有这么一个消息: 0004097E S message:0x00AE [未知] wParam:00001001 lParam:00000000 0004097E R message:0x00AE [未知] lResult:0000原创 2014-05-05 15:45:25 · 1083 阅读 · 0 评论 -
跑马问题
25匹赛马,5个跑道,也就是说每次有5匹马可以同时比赛。问最少比赛多少次可以知道跑得最快的5匹马?原创 2014-05-05 15:44:41 · 581 阅读 · 0 评论 -
goto 不能跳过构造函数
class A{ public: A(){} ~A(){}};int main(){ goto Flag1; int i; Flag1: i=2; goto Flag2; A a; Flag2: i++; return 0;}第一个goto跳到Flag1是没有问题的,但是第二个goto跳到Flag2是不行的。C++标准定义goto不能跳过构造函数的执行。在vs中编译上面代码会有原创 2014-05-05 15:46:03 · 642 阅读 · 0 评论 -
对的时间遇到了对的人
周克华拼了8年才抢了55.5万元,重庆女孩只是看了周克华一眼,获奖励60万元。这就是人生,关键是在对的时间遇到了对的人,只是因为在人群中多看了你一眼。原创 2014-05-05 15:46:33 · 499 阅读 · 0 评论 -
OnIdle的详细说明
CWinApp::OnIdlevirtual BOOL OnIdle( LONG lCount );返回值:如果要接收更多的空闲处理时间,则返回非零值;如果不需要更多的空闲时间则返回0。参数:lCount该参数是一个计数值,当应用程序的消息队列为空,OnIdle函数被调用时,该计数值就增加1。每当一条新消息被处理时,该计数值就被复位为0。你可以使用lCount参数来确定应用程序不处理消息时空闲时间原创 2014-05-05 15:46:54 · 2982 阅读 · 0 评论 -
SQLite C/C++
辅助工具工具 Sqlite数据库的管理工具有SQLiteManager、SqliteAdmin等。SqliteManager只有英文版,但功能强大,有个问题就是不支持ANSI字符集的汉字显示。其自带的帮助文档有SQL语句的详细介绍,对于不熟悉Sql语句的人来说很方便。而且它的很多操作都有自动的SQL语句提示,对于不常使用数据库的人来说也很好用。SqliteAdmin有绿色中文版,功能相对于原创 2014-05-05 15:47:22 · 544 阅读 · 0 评论 -
class与struct的异同
Q:结构(struct)与类(class)的区别,你认为结构(struct)有些什么作用,可以完全用类(class)取代么??A:从语法上,在C++中(只讨论C++中)。class和struct做类型定义时只有两点区别:(一)默认继承权限。如果不明确指定,来自class的继承按照private继承处理,来自struct的继承按照public继承处理;(二)成员的默认访问权限。cla原创 2014-05-05 15:44:53 · 480 阅读 · 0 评论 -
hello gyp
{ 'targets': [ { 'target_name': 'hello', 'type': 'executable', 'msvs_guid': '5ECEC9E5-8F23-47B6-93E0-C3B328B3BE65',#随便填 'sources': ['main.cc',], }, ],'target_d原创 2014-05-05 15:46:06 · 435 阅读 · 0 评论 -
IE8 与 Visual Studio 冲突 问题解决方法
IE8 与 Visual Studio 冲突问题解决方法问题表现为:MFC类向导添加类时,出现“当前页面的脚本发生错误”,进入MFC类向导后上方有一个小黄条“此网站的某个加载项运行失败。请检查"Internet选项"中的安全设置是否存在潜在冲突”,基类下拉框无项值,无法成功添加MFC类。针对这一问题解决办法是:添加一注册表项:HKEY_CURRENT_USER\Software\Microsoft原创 2014-05-05 15:45:27 · 564 阅读 · 0 评论 -
为什么会这样?为什么不能这样?
安徽省2013年高考零分作文新鲜出炉堪称神作——作者陈巨飞。为什么会这样?为什么不能这样? 作者:陈巨飞 题记:有的人看到已经发生的事情,问:“为什么会这样?”我却梦想从未有过的事物,然后追问:“为什么不能这样?”——萧伯纳 我骑着自行车,蹭了一宝马,对方下车后,给我一耳光,叫我赔偿一万块,否则皮扒光。我问,为什么会这样?李启铭,校园当成赛车场,两名女生被撞死,他口出狂言太嚣张。我翻译 2013-06-10 11:19:01 · 840 阅读 · 0 评论 -
boost串口操作
1.io_server在run后会阻塞,因此要开辟线程进行操作。当然也可以用run_once来做同步串口操作。void CSarialDlg::OnBnClickedOk(){ // 这里的m_fun是成员变量 //boost::shared_ptr m_fun; m_fun = boost::shared_ptr(new boost::thread(boost::bind(&CSar原创 2013-06-03 18:18:19 · 2435 阅读 · 0 评论 -
heap corrupption detected,内存出错
编程时调试出现了heap corrupption detected的错误,今天上网查了一下,终于发现了原因所在,学习一下,并将网上的说明贴在下面,来自http://www.cppblog.com/kerlw/archive/2009/06/10/21700.html 前两天写程序的时候,一不小心引发了Heap Corruption,但是只是找出了引起问题的代码,并写进行了修正,没有转载 2009-07-20 09:00:00 · 1118 阅读 · 1 评论 -
bind的初试
光看书,总觉得bind不过是是一个万能的指针,自己动手写一个能接受bind作为参数的函数,才发现之前了解的只不过是bind的冰山一角,不求甚解bind的原理,实在惭愧。 现写个案例,以防自己忘记,也给看客提个醒。void print(char* str){ std::cout}templateclass _Fn1> inline _Fn1 callback(_Fn1 _Func){ //此处原创 2014-05-05 15:45:31 · 362 阅读 · 0 评论 -
文件路径获取目录API
总有这样一个API被人遗忘在角落, 从文件路径获取目录名: Desc:Removes the trailing file name and backslash from a path, if it has them. Syntax: BOOL PathRemoveFileSpec( LPTSTR pszPath) HEADR:shlwapi.h LIBRARY:shlwapi.lib 提取文件原创 2014-05-05 15:46:24 · 785 阅读 · 0 评论 -
windbg 调试
cdb.exe -srcpath [source file path] -y [.pdb file path] -z [dump file] -lines-lines 用于加载对应的源文件位置原创 2014-05-05 15:46:38 · 485 阅读 · 0 评论 -
驱动层IAT HOOK
还是看雪“新人交流投稿”版块的问题引起的(http://bbs.pediy.com/showthread.php?t=95230)。这次是有人询问sysnap的“学习笔记之钩住驱动程序导入表 ”(http://bbs.pediy.com/showthread.php?t=62316)中,为何要使用将驱动文件映像进内存再查找其导入表结构,而不是直接使用内存中已有的驱动内容来查找导入表。因为Sysna原创 2014-05-05 15:46:36 · 1437 阅读 · 0 评论 -
CSS position 的具体说明
利用CSS的position属性对元素定位,以下是position 属性规定元素的定位类型。absolute 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。fixed 生成绝对定位的元素,相对于浏览器窗口进行定位。元素的位置通过 "left", "top",原创 2014-05-05 15:47:31 · 382 阅读 · 0 评论 -
宏定义中的井号
在宏定义中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),即无论后面的宏变量是字符串还是常量,都当成字符来处理。#define NAME(CLASSNAME) OutputDebugStringA(#CLASSNAME)而## 被称为连接符(concatenator),用来将两个Token连接为一个Token。注意这里连接的对象是Token就行,而不一定是宏的变量原创 2014-05-05 15:47:06 · 704 阅读 · 0 评论 -
WTL和ATL中CString冲突
WTL和ATL、MFC都有各自的CString类,类名相同,功能也都差不多,但是如果你同时用到了WTL和ATL,就会发生CString冲突的问题,从而编译器会报错,因为编译器不知道到底你要用的CString是哪个类。下面提供一组头文件包含的内容及顺序,如果你用到ATL和WTL,只要把下面这几行放到stdafx.h中,就搞定了。#include #include #include #include原创 2014-05-05 15:47:18 · 765 阅读 · 0 评论 -
滑块控件的一个设计缺陷
引用:http://blog.pfan.cn/clever101/26006.html 前一段时间写一个程序,其中涉及到在工具栏上创建一个滑块控件(功能大致是通过拖动滑块控件拖动客户区的一幅bmp图像)。从中我认识到MFC滑块控件的一个设计缺陷:它并没有足够的消息宏来处理它的一些动作。使用过滑块控件的朋友都有这样的经验:当用户拖动滑块时,滑动条控制将向其父窗口发送WM_HSCROLL消息,所以原创 2014-05-05 15:46:15 · 1233 阅读 · 0 评论 -
模板特例化的奇妙用法
templatebool>class A{public: void fun() { std::cout }};templatevoid Atrue>::fun(){ std::cout}int main(){ Atrue> test1; test1.fun(); Afalse> test2; test2.fun(); getchar(); return 0;}模板特例化原创 2014-05-05 15:45:36 · 440 阅读 · 0 评论 -
win7 玻璃效果
首先必须打开win7相应的主题其次 #include#pragmacomment(lib,"dwmapi")需要win7 SDK。 再次先定义一个函数 HRESULTEnableBlurBehindWindowMY(HWNDwindow, bool enable =true, HRGN re原创 2014-05-05 15:46:50 · 648 阅读 · 0 评论 -
WDK/DDK中掉 error C2220: warning treated as error - no ‘object’ file generated
Free编译时:C2220: warning treated as error - no 'object' file generated出现这个问题是因为代码不严谨导致了。具体情况我也懒得去分析了。大家可以去搜索.对于懒人来说,解决方案是,修改当前驱动工程的sources文件,减低警告级别代码如下!if $(FREEBUILD)MSC_WARNING_LEVEL=/W1!elseMSC_WARNI原创 2014-05-05 15:46:43 · 788 阅读 · 0 评论 -
分治算法 - 八皇后
是一个以国际象棋为背景的问题:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。八皇后问题可以推广为更一般的n皇后摆放问题:这时棋盘的大小变为n×n,而皇后个数也变成n。当且仅当 n = 1 或 n ≥ 4 时问题有解。/* * Copyright (c) leo * All rights re原创 2014-05-05 15:47:27 · 1428 阅读 · 0 评论 -
常数模板类
templatebool>class A{public: void fun() { std::cout }};templatevoid Atrue>::fun(){ std::cout}int main(){ Atrue> test1; test1.fun(); Afalse> test2; test2.fun(); getchar(); return 0;}模板特例化原创 2014-05-05 15:47:08 · 629 阅读 · 0 评论 -
2.SQLite3 快速上手
本文分析使用SQLite均在windows环境下。要快速上手SQLite其实非常简单,前提当然是你对SQL比较熟悉,了解SQL的建表,查询,插入,删除等语句,具体依据你的程序需求了解相应的SQL语句。首先配置SQLite - vsSQLite.org上提供SQLite的全部源码,我们只需将源码加入我们的工程中就可以使用SQLite了。几个API介绍 1.SQLite3_原创 2013-06-13 17:59:42 · 596 阅读 · 0 评论 -
scanf中的%*s的解疑
在scanf语句中%*s,在c语言中的说明是 该处的*表示忽略该处的变量输入。还是看一下下面的程序说明吧:#include"stdio.h"int main(){ int a,b; scanf("%2d%*2s%d",&a,&b); printf("\na=%d,b=%d\n",a,b); return 0;}运行结果:输入:12345678输出:a=12,b=5678输入原创 2014-05-05 15:44:34 · 1864 阅读 · 0 评论 -
64 位 编程变量
数据类型 ILP32 ILP64 LP64 LLP64 char 8 8 8 8 short 16 16 16 16 int 32 64 32 32 long 32 64 64 32 longlong 64 64 64 64 pointer 32 64 64 64 float 32 32 32 32 double 64原创 2014-05-05 15:45:04 · 399 阅读 · 0 评论 -
内联函数与宏、普通函数的区别
内联函数是代码被插入到调用者代码处的函数。如同 #define 宏,内联函数通过避免被调用的开销来提高执行效率,尤其是它能够通过调用(“过程化集成”)被编译器优化。 内联函数和宏很类似,而区别在于,宏是由预处理器对宏进行替代,而内联函数是通过编译器控制来实现的。而且内联函数是真正的函数,只是在需要用到的时候,内联函数像宏一样的展开,所以取消了函数的参数压栈,减少了调用的开销。你可以象调用原创 2014-05-05 15:44:57 · 363 阅读 · 0 评论 -
avi 格式
| 4 | 4 | 4 | 4 || RIFF | size | AVI/WAVE| ...data...ps: size = data_size + 4;| 4 | 4 | 4 | 4 || LIST | size | Type |...Data...ps: size原创 2014-05-05 15:45:45 · 428 阅读 · 0 评论 -
最大化 触发 WM_PAINT
当WM_PAINT不是由InvalidateRect产生时,即由最大化,最小化等产生时,或者移动产生(移动有时只会产生WM_ERASEBKGND消息)系统先发送WM_ERASEBKGND消息,再发送WM_PAINT消息. 如果处理WM_ERASEBKGND消息时返回FALSE,BeginPaint标记pt.fErase 为TRUE,如果处理WM_ERASEBKGND时返回TRUE,Begin原创 2014-05-05 15:46:20 · 465 阅读 · 0 评论 -
软件技术积累
各种RFC标准目录 http://www.ietf.org/rfc/ detours库: 可以对win32 的API hook, http://research.microsoft.com/en-us/projects/detours/boost库: C++扩展标准库 , http://www.boost.org/原创 2014-05-05 15:46:22 · 435 阅读 · 0 评论 -
boost 访问JSON
1. 包含对应的头文件 #include 2.例子int main(){ boost::property_tree::ptree ptree_root; ptree_root.put("root","me_root"); boost::property_tree::ptree ptree_items; { boost::property_tree::ptree pt; //原创 2014-05-05 15:46:08 · 541 阅读 · 0 评论 -
打包工具实现原理
本文转载自JohnsonFeng的文章《数据自解压简单原理》,原文链接为http://www.cnblogs.com/Tue/archive/2009/04/06/1430500.html 自解压文件,就是能将自身的数据解压缩的压缩文件,实际上,这些文件是以exe的形式出现的,这样它才能被执行。简单研究了一下基本步骤,实际并不复杂。 自解压文件的原理是把压缩数据存放到exe中,当需要解原创 2014-05-05 15:45:22 · 1127 阅读 · 0 评论 -
哪些控件用到ON_NOTIFY 一问一答
问题:对button,我直接用WM_COMMAND是可以的。 现在我想尝试使用VC的ON_NOTIFY,怎么试也不起作用。解答:ON_NOTIFY是针对WM_NOTIFY的消息宏,而WM_NOTIFY是针对 ListCtrl,TreeCtrl,TabCtrl等通用控件使用的消息 button,listbox等基本控件是不会用到这个消息的 .原创 2014-05-05 15:47:34 · 686 阅读 · 0 评论 -
C++ 重启网卡
许多网卡修改MAC后需要重启才能生效,下面介绍一下用编程实现重启网卡的功能:头文件: #includeAPI: 1. SetupDiGetClassDevs 获得设备信息列表 2.SetupDiEnumDeviceInfo 枚举设备信息 循环查找: { 3.SetupDiGetDeviceRegistryProperty(hDevInfo,&DevInfoData,SPDRP_CLASS原创 2014-05-05 15:47:13 · 3357 阅读 · 1 评论 -
1. SQLite 概要
SQLite概略SQLite是遵守ACID[Atomicity、Consistency、Isolation、Durability][原子性、一致性、隔离性、持久性]的关系数据库。SQLite实现多数的SQL-92标准:包括 事务、触发器和复杂查询;不进行类型检查[字符串可以插入到整数列]。SQLite官方网站http://www.sqlite.orgwindow原创 2013-06-08 21:20:12 · 378 阅读 · 0 评论 -
VC CL.exe命令使用介绍
最近要学习cl 本文来源于http://blog.youkuaiyun.com/thomas_nuaa/archive/2008/12/04/3443147.aspxcl.exe所在的文件夹里面有一个批处理叫做 VSVAR32.BAT 首先运行它一次,你就可以用cl.exe来编译你的代码了。 CL.exe 是控制 Microsoft C 和 C++ 编译器与链接器的 32 位工具。编译器产生通用对象文件格式原创 2014-05-05 15:45:06 · 592 阅读 · 0 评论 -
关于strcpy函数的说明
函数的声明大致是这样的 char * strcpy(char* strDes,const char* strSrc); 1)不用库函数重写strcpy函数。 char * strcpy(char* strDes,const char *strSrc) { Assert(strDes!=NULL&&strSrc!=NULL); Char *strTemp = strDes; While(*(strD原创 2014-05-05 15:44:46 · 1294 阅读 · 0 评论 -
QQ空间登录的http包分析-QQ农场研究手札
QQ空间登录: 我用的是spyNet抓包工具: //获得验证码信息GET /getimage?aid=15000102&0.705547526671201 HTTP/1.1Accept: */*UA-CPU: x86Accept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.原创 2014-05-05 15:44:48 · 1258 阅读 · 0 评论