- 博客(19)
- 收藏
- 关注
原创 虚拟桌面模拟查找点击自绘控件
// VDesktopClick.cpp : 定义控制台应用程序的入口点。#include "stdafx.h" #include #include using namespace std; #define SET_LIST 1 #define SET_BUT 2 #pragma comment(lib,"Oleacc
2017-10-30 16:23:08 490
原创 win32程序创建按钮并响应点击
我们可以把控件当成特殊的一类窗口,所以,创建控件与创建窗口一样,使用CreateWindow或CreateWindowEx函数,不过,在窗口样式上面记得用上以下两位帅哥:a、WS_CHILD:控件是放在我们的窗口上的,自然要作为窗口的子窗口,WS_CHILDWINDOW也一样,为了节约几个字母,用WS_CHILD吧。b、WS_VISIBLE:既然要使用控件,自然要让别人看得见。
2017-10-29 15:26:06 26285 10
原创 WIN32程序创建热键
//1..WNDCLASS结构() //WNDCLASS储存某一类窗口的信息,要得到某一窗口的WNDCLASS数据可以用GetClassLong() WNDCLASS wndcls; wndcls.cbSize = sizeof(WNDCLASSEX); wndcls.style = CS_HREDRAW | CS_VREDRAW; //窗口类型 wndcls.lpfnWn
2017-10-29 01:55:36 2347
原创 Windows编程实现自定义全局热键
一、实现全局热键主要使用以下API(详情查看MSDN):- 获取热键标识:GlobalAddAtom- 注册热键:RegisterHotKey- 注销热键:UnregisterHotKey- 释放热键标识:GlobalDeleteAtom12345二、热键注册/注销步骤1、ATOM hotKeyId = GlobalAddAtom( _T("myHotKeyId") ) -
2017-10-29 00:36:43 3120 1
原创 base64
Base64是一种用64个字符来表示任意二进制数据的方法。Base64的加密原理是将3个8位二进制转换为4个6位二进制,不足6位时高位补0 ,以确保其值为64个可能,这就是Base64来源。用记事本打开exe、jpg、pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的文本处理软件能处理二进制数据,就需要一个二进制
2017-10-28 18:13:38 188
原创 QQ截图时窗口自动识别的原理(WindowFromPoint, ChildWindowFromPoint, ChildWindowFromPointEx,RealChildWindowFromPoin
新版的QQ在截图时加入了窗口自动识别的功能,能根据鼠标的位置自动画出下面窗口的轮廓。今天有人在论坛上问起这个问题,下面我们来探讨这个功能的实现原理。首先我们要明白截图软件的基本原理,截图时实际上是新建了一个全屏窗口,然后将当前桌面的截图画在上面,大部分截图软件,包括QQ都是这么做的。根据鼠标位置获取下层窗口,有好几个类似的API可以用(WindowFromPoint, ChildWindo
2017-10-27 20:19:01 1793
原创 c++动态联编与静态联编
静态联编说的是在编译时就已经确定好了调用和被调用两者的关系动态联编说的是程序在运行时才确定调用和被调用者的关系.这个主要是虚函数实现的多态性.1.静态联编静态联编是指联编工作在编译阶段完成的,这种联编过程是在程序运行之前完成的,又称为早期联编。要实现静态联编,在编译阶段就必须确定程序中的操作调用(如函数调用)与执行该操作代码间的关系,确定这种关系称为
2017-10-23 11:12:33 365
原创 IPicture总结
1、IPicture接口对象的创建 方法1:直接通过文件创建LPCSTR szFileUrl; IPicture *pIPicture; OleLoadPicturePath(CComBSTR(szFileUrl), (LPUNKNOWN)NULL, 0, 0, IID_IPicture, (LPVOID*)&pIPi
2017-10-22 01:29:37 2169
原创 为什么父类指针可以指向子类,反之则不行?
为什么父类指针可以指向子类反之则不行?例如:[cpp] view plain copyclass a {public: int aa}; class b:public a {public: int bb; } 从内存的来看如a[plain] view plain copy
2017-10-20 10:46:33 2107 2
原创 Windows Socket五种I/O模型——代码全攻略
如果你想在Windows平台上构建服务器应用,那么I/O模型是你必须考虑的。Windows操作系统提供了选择(Select)、异步选择(WSAAsyncSelect)、事件选择(WSAEventSelect)、重叠I/O(Overlapped I/O)和完成端口(Completion Port)共五种I/O模型。每一种模型均适用于一种特定的应用场景。程序员应该对自己的应用需求非常明确,而且综合考虑
2017-10-18 22:52:28 860
原创 SHA-256的实现
#include "SHA256.h"#include #include #include #define SHA256_ROTL(a,b) (((a>>(32-b))&(0x7fffffff>>(31-b)))|(a<<b))#define SHA256_SR(a,b) ((a>>b)&(0x7fffffff>>(b-1)))#define SHA256_Ch(x,y,z) ((x
2017-10-17 01:04:38 1115
原创 SetRegistryKey的作用(转载)
在利用mfc框架的时候,在App应用类的InitInstance()函数中,初始化时总有一个 SetRegistryKey("字符串XXX"),不知道究竟有何用处,这天仔细查看了一下,发现如果你使用注册表,则它为你提供了很便利的方法,当然如果不使用系统注册表,这句可以注释掉。以下是我在网上找到的一些资料:SetRegistryKey Causes application setting
2017-10-12 16:37:31 260
原创 把二元查找树转变成排序的双向链表
题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。10/ \6 14/ \ / \4 8 12 16转换成双向链表4=6=8=10=12=14=16。首先我们定义的二元查找树节点的数据结构如下:struct BSTreeNode{int m_nValue; // value of nod
2017-10-12 09:26:56 233
原创 boost::string_algo详解3——finder的简单应用
Finder是一个搜索某个容器的任意部分的仿函数,一般无法单独使用。搜索的结果以一个限定所选择的部分的iterator_range的形式给出。常用于函数find, find_format, find_format_copy, find_format_all, find_format_all_copyfind_iterator的工厂方法: make_find_iterator, ma
2017-10-12 09:26:00 223
原创 boost::string_algo详解2——find相关函数
函数声明:[cpp] view plaincopyprint?templatetypename Range1T, typename Range2T> iterator_range find_first(Range1T & Input, const Range2T & Search); templatetypename Range
2017-10-12 09:25:34 922
原创 boost::string_algo详解1
1. 概述C++98在标准库中提供了字符串标准类std::string. 它有一些成员函数可以查找子串, 访问字符, 可以执行基本的字符串处理功能. 由于std::string符合容器的定义, 也可以把它看做是元素类型为char(或wchar t)的序列容器, 可以使用标准算法来对它进行运算, 但标准算法并不是为字符串处理定制的, 很多时候会显得有些"笨拙".string_algo库的出现
2017-10-12 09:25:14 440
原创 Boost 的 STL Container 切割工具(上):split
這一篇最初的目的,是想來整理一下在 C++ 裡的字串切割的方法。不過寫到一半就發現,其實 Boost 提供的相關工具都可以延伸到其他形式的資料,並不僅限於字串,所以變成內容是著重在 STL containter 的切割,所以後來就決定變成是由字串切割,來帶到 split() 這個函式,以及Tokenizer 這個函式庫的介紹了。這邊的「字串切割」,Heresy 個人是把它定義成為:「一個給
2017-10-11 16:53:47 332
原创 模板类与类模板、函数模板与模板函数等的区别
在C++中有好几个这样的术语,但是我们很多时候用的并不正确,几乎是互相替换混淆使用。下面我想彻底辨清几个术语,这样就可以避免很多概念上的混淆和使用上的错误。 这几个词是: 函数指针——指针函数 数组指针——指针数组 类模板——模板类 函数模板——模板函数 最终在使用中,我们就可以让它们实至名归,名正言顺。 1.函数指针——指针函数
2017-10-10 21:18:03 302
原创 模板类的继承
模板类的继承包括四种:1.(普通类继承模板类)[cpp] view plain copytemplateclass T> class TBase{ T data; …… }; class Derived:public TBaseint>{ …… }; 2.
2017-10-10 20:59:48 251
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人