日常
爱凯特的威廉
工控
展开
-
ATL 类的理解
自己的类从 CComObjectRoot ,CComCoClass派生, CComObject又从自己写的类派生CComModel类模块的中心类,不区分进程内和本地组件。如果是本地组件则必须建立一个CComModule子类。本地组件在引用计数为0时需要退出。CComObjectRoot/CComObjectRootEx,任何ATL Com组件都必须从此类继承。想起IUnknown,而转载 2013-03-03 00:13:32 · 840 阅读 · 0 评论 -
窗口置顶/取消置顶
#include #pragma comment(linker, "/subsystem:windows")int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int iCmdShow){ HWND hWnd = NULL; HWND htmp =转载 2013-10-30 11:15:02 · 2615 阅读 · 0 评论 -
QMessageBox
先来看一下最熟悉的QMessageBox::information。我们在以前的代码中这样使用过: QMessageBox::information(NULL, "Title", "Content", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); 下面是一个简单的例子:转载 2013-11-19 11:02:22 · 927 阅读 · 0 评论 -
遍历树
递归与非递归转换的基础知识是能够正确理解三种树的遍历方法:前序,中序和后序,第一篇就是关于这三种遍历方法的递归和非递归算法。如何用栈实现递归与非递归的转换(一)三种遍历树的算法一.为什么要学习递归与非递归的转换的实现方法? 1)并不是每一门语言都支持递归的. 2)有助于理解递归的本质. 3)有助于理解栈,树等数据结构.二.三种遍历树的递归和非递归算法转载 2013-11-22 23:24:09 · 690 阅读 · 0 评论 -
摄像头例子
#include #include #include #include "vfw.h"#pragma comment( lib, "vfw32.lib" )void main(){ char strDeviceVersion[80]; //设备版本信息 char strDeviceAndVersion[300]; //设备名和版本信息原创 2013-11-12 23:44:12 · 469 阅读 · 0 评论 -
任务栏发送消息
Shell_NotifyIcon函数,向任务栏的状态栏发送一个消息 函数原型 BOOL Shell_NotifyIcon( DWORD dwMessage, PNOTIFYICONDATA lpdata ); 参数: dwMessage为输入参数,传递发送的消息,表明要执行的操作。可选的值如下: NIM_A原创 2013-11-14 14:29:26 · 813 阅读 · 0 评论 -
const
1. const修饰普通变量和指针const修饰变量,一般有两种写法:const TYPE value;TYPE const value;这两种写法在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。对于一个非指针的类型TYPE,无论怎么写,都是一个含义,即value只不可变。例如:const转载 2013-12-03 12:04:03 · 496 阅读 · 0 评论 -
去掉注释换行等
std::string s = "select * form aaa \n /*mmmuuu*/ \n \n yuan hs";boost::xpressive::sregex reg1 = boost::xpressive::sregex::compile("(\\n)|^(//.*?\\n\\s*)|(/\\*(.|\\n)*?\\*/\\s*)"); std::string原创 2013-12-15 11:48:39 · 613 阅读 · 0 评论 -
mysql Windows
(1) 为了少走弯路,建议下载5.1.x版本。 网上关于在win32系统布署调试环境的贴子本来就少,官网的资料也都是英文,对于不习惯看英文的人可算是折磨。并且,就那么少的贴子说的内容说的还是5.1.x版本的办法(我事后才知道),对于习惯下载最新版人的人来说,算是一头雾水,因为刚开始要用win目录下的configure.js文件,而5.5.x版本并没有这个文件。还以为自己下错版本了。所以,转载 2013-12-20 10:20:21 · 595 阅读 · 0 评论 -
WINDOWS API——OPENCLIPBOARD——剪切板
剪切板:系统维护的一个全局公共内存区域.每次只允许一个进程对其进行访问。剪切板操作方法如下:(MSDN上搜索Clipboard Operations)1.打开剪切板Bool OpenClipboard(HWND hWndNewOwner); 指定关联到打开的剪切板的窗口句柄,传入NULL表示关联到当前任务。每次只允许一个进程打开并访问。每打开一次就要关闭,否则其他转载 2014-04-09 14:42:56 · 673 阅读 · 0 评论 -
如何终止线程的运行(C/C++)
想要终止线程的运行,可以使用以下方法: 1、线程函数返回(最好使用该方法)。 2、通过调用ExitThread函数,线程将自行撤消(最好不使用该方法)。 3、同一个进程或另一个进程中的线程调用TerminateThread函数(应避免使用该方法)。 4、ExitProcess和TerminateProcess函数也可以用来终止线程的运行(应避免使用该方法)。下面将详细介绍终转载 2014-05-08 22:27:49 · 865 阅读 · 0 评论 -
钩子
全系统钩子要放在DLL中,监视屏幕重画可用WH_CALLWNDPROC,下面是个鼠标钩子,可以参考Win32全局钩子在VC5中的实现作者:贺成士 Windows系统是建立在事件驱动的机制上的,说穿了就是整个系统都是通过消息的传递来实现的。而钩子是Windows系统中非常重要的系统接口,用它可以截获并处理送给其他应用程序的消息,来完成普通应用程序难以实现的功能。钩子的转载 2014-06-04 21:25:18 · 520 阅读 · 0 评论 -
qt 调用dll
声明: 事先我已经自己动手写了一个简单的dll文件(myDLL.dll),C版接口的。并且用我前两篇有关DLL文章里面的方法,从dll中导出了导入库(.lib)文件,dll中有两个函数,原型如下: void HelloWorld(); //函数内部调用Win32 API,功能是弹出一个helloworld提示框 int add(int a,int b); //实现两个转载 2014-06-05 22:42:51 · 653 阅读 · 0 评论 -
WINVER和_WIN32_IE等宏的含义
它们是用于定义windows和Internet Explorer版本号的,用于区分不用版本的函数和参数。在你编译程序时会根据不同的版本系统号,链接不同的函数和参数。Minimum System Required Macros to Define----------------------------------------------转载 2014-06-09 10:47:42 · 726 阅读 · 0 评论 -
QT QSplashScreen
#include "mainwindow.h"#include #include #include #include#includeint main(int argc, char *argv[]){ QApplication app(argc, argv); QSplashScreen splash; QTime t0; t0原创 2014-05-29 15:06:36 · 765 阅读 · 0 评论 -
Trait
//类型信息榨取机#include "stdafx.h"#include using namespace std;templateclass myIterator{public:typedef T value_type;value_type Put();};templatetypename myIterator::va原创 2013-08-11 21:40:29 · 495 阅读 · 0 评论 -
函数后 throw()
func() throw(type) ,会抛出某种异常func() throw(),不会抛出func() throw(...),可能是任何类型的异常原创 2013-07-25 09:09:43 · 558 阅读 · 0 评论 -
解释类的地址偏移量
class A1 { public: virtual void Test(){} }; class A2 : public A1 { public: virtual void Test(){} }; class A3 : public A1 { public: virtual void Test(){} }; cl原创 2013-03-01 23:16:53 · 862 阅读 · 0 评论 -
VC++中进程间相互通信的十一种方法
进程通常被定义为一个正在运行的程序的实例,它由两个部分组成: 一个是操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方 另一个是地址空间,它包含所有的可执行模块或DLL模块的代码和数据。它还包含动态分配的空间。如线程堆栈和堆分配空间。每个进程被赋予它自己的虚拟地址空间,当进程中的一个线程正在运行时,该线程可以访问只属于它的进程的内存。属于其它进程的转载 2013-03-31 11:36:05 · 558 阅读 · 0 评论 -
typedef和typename关键字
1、类型说明typedef类型说明的格式为:typedef 类型 定义名;类型说明只定义了一个数据类型的新名字而不是定义一种新的数据类型。定义名表示这个类型的新名字。例如: 用下面语句定义整型数的新名字:typedef int SIGNED_INT;使用说明后, SIGNED_INT就成为int的同义词了, 此时可以用SIGNED_IN转载 2013-04-16 14:16:18 · 460 阅读 · 0 评论 -
delphi 恢复
今天帮同事恢复delphi7时把如下文件夹里的2个文件删掉就可以了C:\Documents and Settings\yuan\.borland原创 2013-04-26 23:37:31 · 551 阅读 · 0 评论 -
映射模式
Windows提供了以下几种映射模式:MM_TEXT MM_LOENGLISH MM_HIENGLISH MM_LOMETRIC MM_HIMETRIC MM_TWIPS MM_ISOTROPIC MM_ANISOTROPICMM_TEXT: 默认的映射模式,把设备坐标被映射到象素。x值向右方向递增;y值向下方向递增。坐标原点是屏幕左转载 2013-04-26 23:31:10 · 994 阅读 · 0 评论 -
[转]临界区,互斥,信号量
临界区(criticalSection) 又称阻塞,它能够使一段代码只由一个线程来执行,其它线程被挡在这段代码之外,直到第一个线程执行完代码。临界区的使用主要涉及如下API函数: initializeCriticalSection(), 在临界区首次使用之前,用此函数进行初始化。 deleteCreticalSection(), 在临界区不再使用之前,用此函数释放临转载 2013-07-15 12:22:47 · 532 阅读 · 0 评论 -
Vs2005快捷键
CTRL + SHIFT + B 生成解决方案CTRL + F7 生成编译CTRL + O 打开文件CTRL + SHIFT + O打开项目CTRL + SHIFT + C显示类视图窗口F4 显示属性窗口SHIFT + F4显示项目属性窗口CTRL + SHIFT + E显示资源视图F12 转到定义CTRL + F12转到声明CTRL + ALT +转载 2013-07-16 22:36:43 · 839 阅读 · 0 评论 -
exit与atexit
一、exit()函数函数声明:void exit(int state);exit()函数用于在程序运行的过程中随时结束程序,exit的参数state是返回给操作系统,返回0表示程序正常结束,非0表示程序非正常结束。main函数结束时也会隐式地调用exit函数。exit函数运行时首先会执行由atexit()函数登记的函数,然后会做一些自身的清理工作,同时刷新所有输出流、关闭所有打开的流并转载 2013-07-17 17:15:46 · 435 阅读 · 0 评论 -
Debug
inline void put_opc_log(const wchar_t* ErrorMsg){locale &loc=locale::global(locale(locale(),"",LC_CTYPE));wofstream fout(L"C:\\opc_driver_log.txt",ios::app);locale::global(loc);std::streamsi原创 2013-07-29 11:12:46 · 439 阅读 · 0 评论 -
解决QT中Warning中Wreorder
在类中声明的顺序与类的初始化列表中顺序不一致导致的。原创 2014-06-19 21:11:20 · 1065 阅读 · 0 评论