随笔分类 - C++
C++,WTL,win32等的一些Tips
摘要:微软一直在主推的 .NET 作为一个重要的应用运行平台对微软的生态系统具有重要的影响,在 Windows 8 中,这一应用程序运行的基石也将发展到最新版 .NET Framework 4.5。由于这一全新版本和以前的 .NET 2.0/3.0/3.5 运行库并不兼容,而 Windows 8 在内置 4.5 的同时并没有像 Windows 7 那样直接集成了 2.0/3.0/3.5,因此为先前版本开...
阅读全文
摘要:http://www.bcwhy.com/jdsf/AlgorithmGossip/InFixPostfix.htmAlgorithm Gossip: 中序式轉後序式(前序式)說明平常所使用的運算式,主要是將運算元放在運算子的兩旁,例如a+b/d這樣的式子,這稱之為中序(Infix)表示式,對於人類來說,這樣的式子很容易理 解,但由於電腦執行指令時是有順序的,遇到中序表示式時,無法直接進行運算,而必須進一步判斷運算的先後順序,所以必須將中序表示式轉換為另一種表示方 法。可以將中序表示式轉換為後序(Postfix)表示式,後序表示式又稱之為逆向波蘭表示式(Reverse polish notat
阅读全文
摘要:http://www.lixin.me/blog/2012/05/26/29536tesseract-ocr有2和3两个版本,不同版本训练方法稍有不同。第3版本的训练方法官版教程在这里:TrainingTesseract3第2版的训练方法官版教程在这里:TrainingTesseract我使用的是最新的3.01版本的。训练所需准备:1.下载并安装3.01版本的tesseract。事实上并不需要安装这步骤,我下载的是压缩包版,解压即可,这里我解压到E:\Tesseract-ocr目录。2.下载并安装jTessBoxEditor工具,这是一个Box file editors,用来编辑训练文件的,直
阅读全文
摘要:透明窗口与不规则窗口制作方法总结:Layered窗口:1.使用GDI读取bmp图片, 只要用SetLayeredWindowAttributes设置mask color就可以制作不规则窗口了.2.使用GDI+读取任意格式图片, 用SetLayeredWindowAttributes设置mask color, 不可以使某一颜色透明, 只能用RGN来做不规则窗口.3.使用GDI+读取带alpha通道的png图片, 用UpdateLayeredWindow可以制作简便透明的窗口, 控件alpha的值, 可以制作不规则窗口或带阴影的窗口.非Layered窗口:1.使用GDI读取bmp图片, 用rgn做
阅读全文
摘要:http://www.cppblog.com/alantop/archive/2006/05/10/6871.html1.WIN32_FIND_DATA m_data;HANDLE hFile;hFile=FindFirstFile(filename,&m_data)if(hFile==INVALID_HANDLE_VALUE) //file not foundMake sure you close the handle if the file is found.FindClose(hFile);2.You can use SHGetFileInfo()The prototype of
阅读全文
摘要:http://www.cnblogs.com/cxun/archive/2009/02/24/1397153.html#include<iostream>#include<io.h>#include<sys\stat.h>#include<afx.h>#define_AFXDLLusingnamespacestd;voidmain(){//此文件在工程打开状态下为不可访问char*filepath="..\\test.ncb";//方法一struct_statinfo;_stat(filepath,&info);int
阅读全文
摘要:综述现在有很多B/S与C/S相结合的产品,会出现一种需求:从浏览器启动客户端的程序,并且如果客户端未安装相应程序,先提示安装。 主流的几款产品:腾讯QQ、阿里旺旺、迅雷、PPLive等,都有实现了类似的功能。 浏览器启动客户端程序可以通过注册自定义的Url协议来实现,而检测客户端是否安装程序需要利用ActiveX控件。 要额外注意的是,现在只有IE浏览器才支持。客户端程序 先准备一个简单的客户端程序,只用来显示传入的命令行参数。Client 1 namespace wuhong.Client 2 { 3 class Program 4 { 5 static vo...
阅读全文
摘要:在http://www.wasm.ru/print.php?article=gui_subsystem中,提供了32位系统的驱动枚举所有快捷键的程序,但是转到win7 64位下会有各种问题。win7 x64不支持inline的汇编。。。那个驱动都无法编译。。。我对汇编也不熟,不能把汇编提成函数放到单独的asm里面。唉。只能学习一下windbg的内核调试过程了。debug到gphkHashTable却得不到这个变量的数据类型。。。lkd> !process 0 0 //枚举所有进程**** NT ACTIVE PROCESS DUMP ****PROCESS fffffa80039689e
阅读全文
摘要:在windbg中查看shadow ssdt:0: kd> lmstart end module name804d8000 806e3000 nt (pdb symbols) I:\Symbols\ntkrpamp.pdb\966DF78E558F483199141B029DF5A9D51\ntkrpamp.pdbUnloaded modules:f56ab000 f56d6000 kmixer.sysf7b59000 f7b5a000 drmkaud.sysf6fc8000 f6fd5000 DMusic.sysf7018000 f7026000 swmidi.sysf56d6000 f
阅读全文
摘要:https://blog.delphij.net/2012/04/freebsd-strlen3.html与 Pascal 等语言不同,C 的字符串并不保存串的长度,而是在字符串末尾以 nul 字符('\0')来表示字符串结束。这个设计决策是上世纪 60 年代作出的,有都市传说是为了省几个字节的空间,不过我个人认为也可能是因为汇编里面到处都是判断是否碰到了 0 的操作。不管怎么说,这个设计令 strlen 变成了一个 O(n) 的操作。早期的 BSD Unix 采用的 strlen 是非常简单的循环比较每一个字符是不是 nul。1993年,J.T. Conklin 为 i386
阅读全文
摘要:转自oschina1.不要使用相对路径常常会看到:require_once('../../lib/some_class.php');该方法有很多缺点:它首先查找指定的php包含路径, 然后查找当前目录.因此会检查过多路径.如果该脚本被另一目录的脚本包含, 它的基本目录变成了另一脚本所在的目录.另一问题, 当定时任务运行该脚本, 它的上级目录可能就不是工作目录了.因此最佳选择是使用绝对路径:define('ROOT','/var/www/project/'); require_once(ROOT.'../../lib/some_class.
阅读全文
摘要:对于COM,一般用CoCreateInstance来创建对象,这就要求COM的dll要用regsvr32注册,因为CoCreateInstance是要读注册表信息完成相应操作的。CoCreateInstance主要的工作是读注册表,然后CoLoadLibrary,调用DllGetClassObject,最后CreateInstance创建对象。如果我们自己来实现CoCreateInstance的工作,就可以实现无注册表的COM调用。假设有个简单COM,接口很简单,就是个减法函数。普通COM的代码是这样的://普通COMvoid TestCom1(){cout<<"Test
阅读全文
摘要:系统调用DrawFrameControl(hdc, &rt, DFC_MENU, DFCS_MENUARROW)来绘制箭头,要屏蔽它1.菜单类不从CMenu派生,直接从CObject派生,所有内容都自绘,BCG库里有这样的类2.在DrawItem中把那个小三角所在的区域裁剪掉,让系统无法在那儿绘图。http://www.codeguru.com/cpp/controls/menu/miscellaneous/article.php/c13017/void DrawItem(){xxxxxxxxxxxxxxxxxxxx//finallyRECT arrowRect;//箭头Rect::E
阅读全文
摘要:将左边的数据排列成右边的整齐和密集的数据。<html> <body> <canvas id="CanvasOri" width="200" height="200" style="border:1px solid #c3c3c3;"> Your browser does not support the canvas element. </canvas> <canvas id="Canvas1" width="200" he
阅读全文
摘要:增加了部分去重复的功能,以及后缀转中缀显示。#include <iostream>
#include <stack>
#include <algorithm>
#include <string>
#include <cmath>
#include <time.h>
using namespace std; struct TOperData
{ int operType; double data;
}; //检查计算的参数是否合法,也可以用于过滤一些重复的表达式
bool checkjisuan(double a, doub
阅读全文
摘要:前面既然确定了后缀表达式的序列。那就可以开始遍历了。#include <iostream>
#include <stack>
#include <algorithm>
#include <string>
#include <cmath>
#include <time.h>
using namespace std; struct TOperData
{ int operType; double data;
}; //检查计算的参数是否合法,也可以用于过滤一些重复的表达式
bool checkjisuan(double a,
阅读全文
摘要:无意间看见这个24点的网站http://www.24theory.com/solutions/allsolutions/,于是想起来把程序写写。考虑到中缀表达式有括号的麻烦,所以打算用后缀表达式处理。24点用后缀表达式的话,一共4个数字,3个运算符。假设数字用1表示,运算符用2表示。那么可能的计算方式就是类似11112221112221。。。但是这样随便列举出来的不一定是合法的后缀表达式。所以第一步,找出合法的包含4个数值,3个运算符的后缀表达式。bool check(int data[])
{ int len = 7; stack<int> suffix; for ...
阅读全文
摘要:http://www.cppblog.com/Chipset/archive/2011/12/21/162552.html编程语言烽火台v10.4 – 2010年11月该表包含了主要软件产品或应用,以及实现所用的编程语言详细信息。有关信息很难找到,个别小错误可能会掠过作者的眼帘,欢迎给出修改、添加、以及引用的建议。该列表不会面面俱到,仅仅列出主要应用。具体到产品家族的次序没有什么特别的规则,读者应该理解这不是排名。主要的编程语言,完成的新开发高亮显示,古老时期使用过也给出来,仅仅使用很少一部分开发也指出来。软件列表通常很大,编程语言不够全面,杂七杂八的语言没有涉及到。有时候一行有多种产品(例如
阅读全文
摘要:截屏程序的源码网上到处都有,但是基本都不支持多显示器。这让我一度以为支持多显示器是一件很困难的事情。(demo http://download.csdn.net/detail/problc/3841959包含多显示器支持,窗口高亮,十字放大等)其实多显示的截屏跟主显示器的截屏区别并不大,甚至根本不需要EnumDisplayMonitors之类的调用。只是因为网上有了源码,我们就懒得想了。1. DC的问题。hScrDC = CreateDC( _T("DISPLAY"),NULL,NULL,NULL );//主显示器DChScrDC = ::GetDC(GetDesktopW
阅读全文
摘要:Win7: 红色区域:类名是Shell_TrayWnd的容器 黄色区域:类名是ReBarWindow32的二级容器 绿色区域:类名是MSTaskSwWClass的窗口WinXP: 红色区域:红色区域——类名是Shell_TrayWnd的容器 黄色区域:类名是ReBarWindow32的二级容器 绿色区域:快速启动区域 紫色窗口:类名是MSTaskSwWClass的窗口从spy++看,小Q书桌的窗口跟Shell_TrayWnd根本没有任何关系,不是Shell_TrayWnd的子窗口。所以小Q书桌可能不是用的Shell扩展的...
阅读全文