- 博客(132)
- 资源 (30)
- 收藏
- 关注
原创 实现鼠标钩子遇到的一个问题
在网上找了鼠标钩子的部分代码,做成一个dll实现全局钩子,结果调试发现如何都不能勾住除设置钩子窗口以外的鼠标消息遍查资料,百思不得其解。 g_hInstalledLLKBDhook = SetWindowsHookEx(WH_MOUSE, (HOOKPROC)LLMouseHookCallbackFunction, g_hInstance, 0); 后来发现:Micros
2010-01-28 14:12:00
967
转载 用C语言的rand()和srand()产生伪随机数的方法总结
标准库(被包含于中)提供两个帮助生成伪随机数的函数:函数一:int rand(void);从srand (seed)中指定的seed开始,返回一个[seed, RAND_MAX(0x7fff))间的随机整数。函数二:void srand(unsigned seed);参数seed是rand()的种子,用来初始化rand()的起始值。可以认为rand()在每次被调用的时候,它会查看:1)
2009-09-23 15:15:00
746
转载 条款35:通过mismatch或lexicographical比较实现简单的大小写无关字符串比较
一个STL菜鸟最常问的问题是“我怎么使用STL来进行大小写无关的字符串比较?”这是一个令人迷惑的简单问题。大小写无关字符串比较要么真的简单要么真的困难,依赖于你要多一般地解决这个问题。如果你忽略国际化问题而且只关注于设计成字符串strcmp那样的类型,这个任务很简单。如果你要有strcmp不具有的按语言处理字符串中的字符的能力(也就是,容纳文本的字符串是除了英语以外的语言)或程序使用一个local
2009-09-08 14:18:00
788
转载 Windows系统下的多显示器模式开发日记
这几天研究了一下Windows系统的多显示器模式的编程,实现了Windows下支持10显示器模式的通用com组件,这里做一个整理和回顾,希望能对再这方面开发的兄弟们有些启发和帮助: (一) Windows系统下的多显示器模式的原理 Microsoft新的操作系统(Windows 98/Windows 2000/Windows XP)内置了对多监视器的支持,即用户可
2009-07-24 15:07:00
1643
转载 在VC中,如何修改文件的只读属性设置
static char BASED_CODE szFilter[] = "*.ppt"; CFileDialog FileDlg(TRUE,"PPT",NULL,OFN_FILEMUSTEXIST|OFN_NONETWORKBUTTON |OFN_PATHMUSTEXIST,szFilter); FileDlg.DoModal();
2009-07-20 15:26:00
4027
转载 Windbg 分析 Dump File 简单演示
使用 Windbg 调试 Dump 文件是一种常用的手法,不同于 Attach Process,这种方式允许我们 "离线"完成调试工作。Dump 文件保存了目标进程某个时间点的内存及相关程序信息镜像。本文只是一个简单的调试过程演示,更多细节可参考 Windbg 及SOS.dll 的相关帮助。class Program{ private List list = new List
2009-07-12 15:23:00
1944
转载 Qt vs MFC
在网上看到的,拿来和大家一起讨论下。蓝字均为转载 我曾经使用过QT和MFC来开发过软件,我想和大家分享我使用他们时所体会的不同之处。 我并非一个职业作家,这篇文章可能看起来不如专业的杂志和网站上的那么条理清晰。但是,我在这里是用我自己的语言来表达我自己的经验,希望能和你分享。英语比不是我的母语,所以可能会有一些用词古怪,词句错误之处,请发信给我,我可以改正他们。
2009-07-12 15:22:00
1082
转载 最简单的递归遍历CTreeCtrl树C++代码
class CBrowseTreeCtrl{public://construct CBrowseTreeCtrl() { m_pTree = NULL; }; CBrowseTreeCtrl(CTreeCtrl *pTree) { m_pTree = pTree; }; ~CBrowseTreeCtrl(){};p
2009-07-12 15:21:00
2293
转载 CtreeCtrl::SortChildrenCB
探讨CtreeCtrl::SortChildrenCB在实际开发中,我们往往需要对树控件(CTreeCtrl)的节点进行排序。事实上,大部分的排序工作可以用CTreeCtrl::SortChildren来实现,不过CTreeCtrl::SortChildren是简单的通过树项目名称排序,假如要实现个性化排序,则需要借助 SortChildrenCB。 CTreeCtrl::S
2009-07-12 15:19:00
991
转载 SGI STL: list::sort()算法
文章来源: http://dzbjet.spaces.live.com/blog/cns!b69ae5707b3539f!116.entry源码:// list 不能使用STL 算法 sort(),必须使用自己的 sort() member function,// 因为STL算法sort() 只接受RamdonAccessIterator. // 本函式采用 quick sort. tem
2009-07-03 14:40:00
1435
转载 详细解说 STL 排序(Sort)
作者Winter 详细解说 STL 排序(Sort) 0 前言: STL,为什么你必须掌握 1 STL提供的Sort 算法 1.1 所有sort算法介绍 1.2 sort 中的比较函数 1.3 sort 的稳定性 1.4 全排序 1.5 局部排序 1.6 nth_element 指定元素排序 1.
2009-07-03 14:31:00
590
转载 find_if和函数对象结合实现对自定义类型vector的查找 复杂结构体查询某个值
实现NAT穿透需要对client的IP和port 进行同时查找,这就需要自定义的结构体,然后声明一个此种类型的vector,每次客户发起连接的时候都要查找一下此表,如果存在此客户端的ip 和port 就返回,否则将此结构体加入到转发列表中。#include "stdafx.h"#include #include #include #include #include #inc
2009-07-02 16:58:00
2536
转载 几种开源的TCP/IP协议栈分析
1、BSDTCP/IP协议栈,BSD栈历史上是其他商业栈的起点,大多数专业TCP/IP栈(VxWorks内嵌的TCP/IP栈)是BSD栈派生的。这是因为BSD栈在BSD许可协议下提供了这些专业栈的雏形,BSD许用证允许BSD栈以修改或未修改的形式结合这些专业栈的代码而无须向创建者付版税。同时,BSD也是许多TCP/IP协议中的创新(如广域网中饿拥塞控制和避免)的开始点。ftp://
2009-06-24 14:13:00
1464
转载 STL的一些常用的用法
toupper,tolower 地球人都知道 C++ 的 string 没有 toupper ,好在这不是个大问题,因为我们有 STL 算法: string s("heLLo"); transform(s.begin(), s.end(), s.begin(), ::toupper);
2009-06-24 13:56:00
1112
转载 SystemParametersInfo详说
SystemParametersInfo详说收藏函数功能描述:查询或设置系统级参数。该函数也可以在设置参数中更新用户配置文件。函数原型B00L SystemParametersinfo(UINT uiAction,UINT uiParam,PVOID pvParam,UINT fWinlni);参数uiAction:该参数指定要查询或设置的系统级参数。其取值如下;SPI_GE
2009-06-11 15:31:00
706
转载 VC++中MFC窗口对象的清除
对于vc++初学者来说,总觉得窗口对象的清除过程有些莫名其妙.在程序中看不到对delete的显式调用,这似乎违反了c++中有关初始化和清除的规则.那么,程序是怎样取消一个窗口对象? 要消除窗口对象,必须清楚窗口对象的构成.在一个通常的程序中,先创建c++窗口对象,然后由Windows创建实际的窗口结构,并返回句柄与c++对象连接.也就是说,窗口对象包含c++窗口对象和Windows窗口对象,
2009-06-11 15:14:00
767
转载 C++完美实现Singleton模式
Singleton模式是常用的设计模式之一,但是要实现一个真正实用的设计模式却也不是件容易的事情。1. 标准的实现class Singleton{public: static Singleton * Instance() { if( 0== _instance) {
2009-06-11 15:13:00
631
1
转载 WM_DESTROY 和 WM_NCDESTROY 消息之间有什么区别? (译)
原文链接 What is the difference between WM_DESTROY and WM_NCDESTROY? 在窗口销毁时有两个紧密关联的 windows 消息, 就是 WM_DESTROY 和 WM_NCDESTROY. 它们有何区别? 区别就是 WM_DESTROY 消息是在窗口销毁动作序列中的开始被发送的, 而 WM_NCDESTROY 消息是在结尾. 这在你的窗口拥有子
2009-06-11 15:12:00
1210
转载 窗口破坏过程与Windows消息循环
从用户单击关闭按钮(标题栏最右边)或者用鼠标或鍵盘选择系统菜单的“关闭”选项,直到窗口消失,应用程序结束。这期间到底发生了什么呢?这曾经是我百思不得其解的问题,我想也会有很多人和我一样会碰到这个问题。所以我要把我的一些学习心得写出来,与大家共享: 1、首先会产生一个WM_SYSCOMMAND消息,如果程序员没有对此消息进行拦截,则由缺省的窗口函数DefWindowProc进行处理,如果表达式(LO
2009-06-11 15:11:00
967
转载 关于非模态对话框的销毁
非模态对话框相对于模态对话框,他的创建和销毁过程和模态对话框有一定的区别先看一下MSDN的原文:When you implement a modeless dialog box, always override the OnCancel member function and call DestroyWindow from within it. Don’t call the base cl
2009-06-11 15:10:00
658
转载 MFC中的消息处理
[转自:http://blog.youkuaiyun.com/gxj1680/archive/2009/03/17/3998923.aspx]窗口消息概述: 所有的窗口消息的基本形式都是一样的,有3个部分:(1).一个无符号整数,包含消息的实际内容.(2)WPARAM,一个4字节整数.(3)LPARAM,一个4字节参数.无符号数是实际消息. 含MFC在内的任何WINDOWS程序的核心都
2009-06-11 15:08:00
834
转载 DLL_THREAD_DETACH 认识误区
DLL 里面使用TLS (Local Thread Storage) 的常见做法是:在DLLMain的DLL_PROCESS_ATTACH/DLL_THREAD_ATTACH 被调用的时候为每个线程(Thread)分配内存,而在DLL_THREAD_DETACH/DLL_PROCESS_DETACH 被调用的时候释放内存。 MSDN文章《Using Thread Local Storage in
2009-06-02 14:34:00
1593
转载 关于字符及编码
首先,我们要知道一些概念和标准。 字符和字节是两个容易混淆的概念,下面我们来看一下它们的含义。• 字符:人们用来表示某种意义的符号,如“1”、“a”、“字”等。• 字节:字节是存储空间的基本计量单位,由8个二进制位构成。• 字符串:零个或多个字符组成的有限序列。• 字符集:字符的集合,由于历史原因形成了多种标准,主要包括以下几种: ASCII字符集 ANSI字
2009-06-02 14:31:00
659
转载 fstream的用法
这个小知识点迷糊了很久了,前段时间始终没有搞清楚,今天又拿过来看的时候好象明白了点...... 今天将ifstream 与ofstream的用法归纳一下ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间;在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:
2009-05-31 11:31:00
668
转载 MFC窗口位置管理详细分析及实例
在一般用MFC编写的程序的窗口客户区中,可能有好几个子窗口(具有WM_CHILD风格的窗口)。上边是工具栏,中间是视图窗口,下边是状态栏。三个窗口在框架的客户区里和平共处,互不重叠。主框架窗口的尺寸改变了,别的子窗口都能及时调整自己的尺寸以便保持相互位置关系不变,例如状态条窗口总能保持在主框架客户区底部,并且其宽度总能和主框架客户区宽度一致。工具栏窗口总能停靠在主框架的某一边不变,其宽度或高度总能
2009-05-31 11:29:00
636
原创 PostMessage和SendMessage的区别
1.PostMessage The PostMessage function places (posts) a message in the message queue associated with the thread that created the specified window and r
2009-05-21 10:42:00
845
转载 VC6.0编译器参数设置
VC6.0编译器参数设置VC6.0编译器参数的设置主要通过VC的菜单项Project->Settings->C/C++页来完成。我们可以看到这一页的最下面Project Options中的内容,一般如下:/nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /Fp"
2009-05-20 10:20:00
802
原创 关于classwizard识别部分MFC派生类的问题
从CBitmap派生一个新类CWzdBitmap 如何使ClassWizard识别它呢,使它的.h .cpp文件中分别有如下信息: DECLARE_DYNAMIC(CWzdBitmap) IMPLEMENT_DYNAMIC(CWzdBitmap,CBitmap) 可以采用如下办法: WzdBitmap.h中添加
2009-05-19 10:24:00
736
转载 学习指针不可少的好文章
为初学者服务。这是我的帖子的宗旨。我也是个初学者(强调了无数遍了) ,我以我的理解把初学者觉得难懂的东西用浅显的语言写出来。由于小学时语文没学好,所以竭尽全力也未必能达到这个目的。尽力而为吧。指针是c和c++中的难点和重点。我只精通dos下的basic。c语言的其它各种特性,在basic中都有类似的东西。只有指针,是baisc所不具备的。指针是c的灵魂 。 我不想重复大多数书上说得
2009-05-18 15:29:00
569
转载 使用dbghelp获取调用堆栈--release下的调试方法学
Author : Kevin Lynx当软件作为release模式被发布给用户时,当程序崩溃时我们很难去查找原因。常见的手法是输出LOG文件,根据LOG文件分析程序崩溃时的运行情况。我们可以通过SEH来捕获程序错误,然后输出一些有用的信息作为我们分析错误的资料。一般我们需要输出的信息包括:系统信息、CPU寄存器信息、堆栈信息、调用堆栈等。而调用堆栈则是最有用的部分,它可以直接帮我们定位
2009-05-18 14:54:00
1052
转载 C/C++ call stack traces
2008/5/9这两天研究了一下C/C++ call stack traces,遂写了个小程序来输出一下call stack,该程序比较简单,只能输出调用栈上的函数名称,至于复杂点的输出请看下面2008/5/10处的修改。该程序用到了Dbghelp.dll 相信各位达人都知道Dbghelp,这里就不多说了。采用__cdecl 堆栈调用标准,在VC++ 6.0下编译通过,下面贴出代码。
2009-05-18 14:11:00
2937
转载 探究Windows内核你知多少
Windows内核 如上所述,现代操作系统的一个明显特征就是用户空间和系统空间的划分,从UNIX时代以来,人们一直把存在于系统空间的代码和数据的集合称为“内核(Kernel)”,因此内核是有明确边界的。空间的不同,或者说CPU运行模式(系统态和用户态)的不同,是不会被混淆的本质区别。可是,在Windows的术语中却不同,微软并不把系统空间的所有代码和数据的集合称为内核,而是把这
2009-05-13 17:48:00
799
转载 Keyboard Events Simulation using keybd_event() function
IntroductionSimulation of a keyboard input is a well known concept for those who are all familiar with Visual Basic. SendKeys() in Visual Basic does all the things, if you want to do anything wit
2009-05-13 17:44:00
1151
转载 Visual C++编程隐藏计算机中的鼠标
在Windows大行其道的今天,windows界面程序受到广大用户的欢迎。对这些程序的操作不外乎两种,键盘输入控制和鼠标输入控制。那么我们能否通过编制程序来控制系统的鼠标,例如隐藏计算机中的鼠标呢?这个问题的答案是肯定的。这里主要是通过一个Windows API函数来实现的。 下面以一个Visual C++的实例来介绍如何实现这个功能。需要读者朋友们注意的是本代码具有一定的危险性,程序
2009-05-13 17:39:00
619
转载 VC6.0中对消息的特殊处理--PreTranslateMessage说明
首先看看MSDN对PreTranslateMessage的说明 Override this function to filter window messages before they are dispatched to the Windows functions TranslateMessage and DispatchMessage The default implem
2009-05-12 13:51:00
2968
1
转载 DrawText如何使多行文字居中
(1)DT_WORDBREAK只能截断单词。例如如果输入一连串英文字符,那么它会当做一个单词来处理,而不会自动换行。而对于中文字符则可以。如果要对所有字符都可以像Edit控件中那样自动换行,那么可以使用DT_WORDBREAK | DT_EDITCONTROL DT_EDITCONTROLDuplicates the text-displaying characte
2009-05-07 15:07:00
7736
2
转载 CListCtrl使用技巧汇总
http://blog.youkuaiyun.com/lixiaosan/archive/2006/04/07/653563.aspx以下未经说明,listctrl默认view 风格为report相关类及处理函数MFC:CListCtrl类SDK:以 “ListView_”开头的一些宏。如 ListView_InsertColumn//整理过程中加入自己实践过程的一些使用代码1.
2009-05-04 18:02:00
4613
4
原创 什么样的产品都会被山寨,最近和陌生人聊天很流行!!!Omegle
Omegle 突然之间开始火了,短短数天,它创造了几十万的访问量,并且数据还在上升。Omegle是在2009年3月25日,由美国一个名叫Leif K-Brooks的小伙子开发的一款和陌生人聊天的Web产品[实际上是他的高中IT作业],这个网站与众不同之处在于能够随机的抽选一位在线陌生人和你聊天,构成一个二人之间的聊天室,当然你不会知道对方是谁,性别、年龄、国籍、性别等等,没有任何资料,让人充满
2009-04-28 12:34:00
884
原创 我所经历的ERP项目的失败(转)
都说ERP项目成少败多,但又有多少人把自己失败的经验拿出来分享的?企业自己有一个失败的经历,也是有苦自己知,项目的当事人,为了自己的职业生涯着想,把一个烂尾项目包装成了成功案例。即便是媒体,也是“只看新人笑,哪管旧人哭” 。在这里我们不妨来看看,这位朋友是如何来剖析自己的失败的。 ----------------------------------------------------------
2009-04-22 17:17:00
1079
原创 唐骏的八大“职业经理潜规则”辨析(转)
一山如何能容二虎? 职业经理人如何处理和老板的关系? 如何平衡工作与生活的关系? 如何更好地、不断地提升自己? ...... 唐骏在《我的成功可以复制》一书中,提出了八大“职业经理潜规则”,可以回答上述问题。我在这里将它们逐项列出,并加上各自相反的观点,然后,对各个规则,谈了自己的看法,供大家参考。因为是潜规则,不是科学能证明的,所以每个人都有自己的看法和实践。唐
2009-04-22 17:00:00
564
WinDbg.入门
2011-09-26
代码优化.有效使用内存.pdf
2011-09-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人