C++
文章平均质量分 50
itjobtxq
这个作者很懒,什么都没留下…
展开
-
MFC自义控件
class CCustomCtrl : public CWnd{ DECLARE_DYNAMIC(CCustomCtrl)public: CCustomCtrl(void); virtual ~CCustomCtrl();protected: DECLARE_MESSAGE_MAP()}; IMPLEMENT_DYNAMIC(CCustomCtrl原创 2012-10-08 21:47:19 · 506 阅读 · 0 评论 -
system WinExec ShellExecuteEx
windows编程的时候经常需要调用操作系统提供的命令,比如调用net user命令可以在系统中新建一个用户等。 1. 最简单的调用方法就是使用函数system(),例如 system("copy d:\\1.rar d:\\2.rar"); 属于C Runtime Library,调用该函数会阻塞调用线程。 优点:简单方便,既转载 2013-04-11 18:16:49 · 1101 阅读 · 0 评论 -
VC修改存在快捷方式图标
直接上代码:bool ChangeLinkIcon(const CString &strLnkName, const CString &strIconPath){ if (strLnkName.IsEmpty() || strIconPath.IsEmpty()) { return false; } HRESULT hres;原创 2013-05-20 17:58:40 · 3750 阅读 · 1 评论 -
VC程序快速删除自己
项目一般都会带有卸载程序,如果这个程序是自己来做的话,在调用完卸载程序后需要删除自己的所有文件,在Google了好久终于找到一些相关信息,一般只能删除一个文件,经过自己的处理,可以删除文件夹下面所有内容,也可包含子文件夹。主要原理是,在退出程序时,执行一条Dos命令来删除,如下: CString strParam; strParam = "/C choice /C Y原创 2013-05-24 10:40:03 · 1100 阅读 · 0 评论 -
Win32删除文件夹
BOOL DeleteDirectory(LPCTSTR lpszDir){ if (NULL == lpszDir || L'\0' == lpszDir[0]) { return FALSE; } if (PathFileExists(lpszDir)) { return FALSE; }原创 2013-05-24 09:52:07 · 3569 阅读 · 0 评论 -
VC向EXE添加版本信息
rc文件VS_VERSION_INFO中 FILEVERSION 键的值每段不能超过255,切记您可以编写程序来修改资源编译器 (.rc) 文件,而不是使用此处所述的步骤。但是,RC 文件是 Visual c + + 的控制之下。visual c + + 修改 RC 文件,在保存时,这可能会影响版本资源。本节中介绍的方法可应用于任何 Visual c + + 项目。此示例使用 Microsof转载 2013-05-27 14:36:03 · 4897 阅读 · 0 评论 -
使用分层窗口及透明png图片实现一个异形窗口
使用分层窗口及透明png图片实现一个异形窗口 搞Windows程序的人尽皆知分层窗口能够实现很多不错的效果,之前看过一些异形窗口的实现,所以就手痒也想自己搞一个玩一玩。自己动手实现过程才发现还是有不少问题的。基本思路是:1.将窗口扩展属性设置为分层属性WS_EX_LAYERED。2.选一张透明的png图片,并将其加载进来。3.创建与窗口兼容的内存设备上下文,以及兼容位图,将兼容转载 2013-03-26 11:39:26 · 1581 阅读 · 0 评论 -
VC利用管道读取EXE返回值
BOOL Run(const char *command, char *pOut, int nCount){ SECURITY_ATTRIBUTES sa; HANDLE hRead = NULL, hWrite = NULL; sa.nLength = sizeof(SECURITY_ATTRIBUTES); sa.lpSecurityDescri原创 2013-07-12 11:43:21 · 1385 阅读 · 0 评论 -
Win32隐藏窗口运行
由于一些程序是对话框的模式,且有些没有处理隐藏消息,这时候用ShellExecute,或者ShellExecuteEx隐藏方式运行第三方程序,会是失败的。此时使用下面方法,则可以:BOOL Run(const wchar_t *pszApp){ if (NULL == pszApp) { return FALSE; } TCHA原创 2013-07-24 16:03:32 · 2291 阅读 · 0 评论 -
VC 后台服务程序(二)
// Service.cpp: CService 类的实现。 #include "stdafx.h" #include "FlashThief.h" #include "Service.h" CService _Module; CService::CService() { m_bService = TRUE; m_d转载 2013-08-22 16:58:20 · 5393 阅读 · 0 评论 -
C++监控USB设备
这个程序前阵子帮一个朋友实现的,之前从未用消息队列做过类似的事情,做完后感觉其在线程同步,通信发面很好用,难怪COM也用这套机制。程序稍微修改便能用作一般性的处理,目前实现的功能类似于监控Windows USB设备的插拔操作。可以直接注释掉CString的使用后使用 cl /EHsc /W4 /Zi 编译,或粘贴到任意的VS中做编译。#include #includ转载 2013-09-06 20:51:59 · 6552 阅读 · 5 评论 -
创建进程后得到该进程的主窗口句柄
最近抽空用VC写了一个小应用程序。主要功能就是创建进程,并到该进程的主窗口句柄,然后再给该窗口发消息。下面把代码共享给大家。 HWND CreateMyProcess(){ // 进程启动信息 STARTUPINFO si; memset(&si, 0, sizeof(STARTUPINFO)); si.cb = sizeof(STARTUPIN转载 2013-12-16 16:01:44 · 739 阅读 · 0 评论 -
Windows下adb编译详解
Adb编译一开始觉得挺难的,但是理顺了还是挺容易的,这里介绍一下自己的编译过程,尽量把我遇到的问题说的清楚一点。首先官方adb的编译是在linux下完成,并没有提供直接可以在windows下编译的代码和工程文件,所以要想在windows下面编译需要对代码作一些等价调整,即把一些linux上的函数和代码在windows找一个替代的或是写一个同样功能的函数。adb包含三个文件adb.exe、A转载 2013-12-15 17:34:49 · 10062 阅读 · 1 评论 -
VC与JAVA互通AES加解密
1。JAVA关于AES的代码很多,但是找到能跟OpenSSL配对的很少。这是加密的程序,解密程序也差不多SecretKeySpec secretKeySpec = new SecretKeySpec(password, "AES");IvParameterSpec paramSpec = new IvParameterSpec(ivi);Cipher ecipher = Cip转载 2014-07-01 18:26:10 · 2158 阅读 · 0 评论 -
Base64编码及解码程序源代码
// Base64.h: interface for the CBase64 class.////////////////////////////////////////////////////////////////////////#if !defined(AFX_BASE64_H__8D85F486_CD10_4A0A_A689_2299C9DE52CB__INCLUDED_)转载 2013-04-10 17:53:33 · 610 阅读 · 0 评论 -
VC 窗口用图片做阴影边框
原理:使用SetWindowLong 设置WS_EX_LAYERED,将对话框设置成层级窗口。分为两层:后层为背景窗口,使用GDI+显示图片。显示成功后再用UpdateLayeredWindow函数进行透明处理。并在这个对话框中定义一个子对话框对象,子对话框用来作为前景窗口。前景为另一层,用来放各种控件。1、在stdafx.h中加入以下代码:#include using n原创 2013-03-22 10:24:15 · 4856 阅读 · 5 评论 -
如何快速创建一个临时文件
Fsutil file createnew d:\Data.dat 50000/可以在D:\产生虚拟文件Data.dat ,大小为50000字节原创 2013-04-02 18:22:50 · 704 阅读 · 0 评论 -
C++ 私有成员变量的理解
C++ 私有成员变量的理解私有成员变量的概念,在脑海中的现象是,以private关键字声明,是类的实现部分,不对外公开,不能在对象外部访问对象的私有成员变量.然而,在实现拷贝构造函数和赋值符函数时,在函数里利用对象直接访问了私有成员变量,因而,产生了困惑.下面以具体实例进行说明: 1 class CTest { 2 public: 3 CTest(int转载 2012-09-20 14:47:57 · 991 阅读 · 0 评论 -
限制CListCtrl列的宽度
BOOL CMyListCtrl::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) { HD_NOTIFY *pHDNotify = (HD_NOTIFY*)lParam; if( pHDNotify->转载 2012-10-12 08:53:58 · 1297 阅读 · 0 评论 -
领悟设计模式
领悟设计模式 Template Method / Visitor [译者按] 本文根据发表在CUJ Expert Forum上的两篇文章编译而成。C/C++ User's Journal是目前最出色的C/C++语言专业杂志,特别是在C++ Report闭刊之后,CUJ的地位更加突出。CUJ Expert Forum是CUJ主办的网上技术专栏,汇集2000年10月以来C++社群中顶尖专家的技转载 2012-09-25 10:24:37 · 787 阅读 · 0 评论 -
WS_CLIPCHILDREN和WS_CLIPSIBLINGS两种窗口样式的理解
我是个喜欢瞎琢磨的人。尤其是这几天心情非常郁闷。于是开始琢磨了…….琢磨的问题就是WS_CLIPCHILDREN和WS_CLIPSIBLINGS两种窗口样式的理解。 1.求助MSDN我的第一步当然是求助MSDN。在MSDN里面有详细的解释。1.1 WS_CLIPCHILDRENWS_CLIPCHILDREN样式从字面上可以理解成ClipChildren,裁减子窗口。转载 2012-11-05 11:22:57 · 1270 阅读 · 0 评论 -
VC透明显示带透明度PNG图片及不带透明度的图片
一、显示带透明度的PNG图片PNG图片的透明背景总是一片白色,后来才发现这其实是微软GDI+的设计问题,PNG图片是ARGB,使用GDI+载入图片的时候,GDI+会默认已经进行了预剩运算(PARGB),即每象素的实际值是已经和ALPHA值按比例相乘的结果,实际上它根本就没有做预乘,在使用透明图片的象素ALPHA通道的时候,CImage内部正是调用的AlphaBlend,没有预乘的图当作预乘的图原创 2012-11-06 15:42:11 · 4557 阅读 · 0 评论 -
跨平台生成GUID/UUID
#ifndef XGUID_H#define XGUID_H#include #include #ifdef WIN32#include #else#include typedef struct _GUID{ unsigned long Data1; unsigned short Data2; unsigned short Da转载 2012-11-26 10:48:03 · 1676 阅读 · 0 评论 -
GDI对象的最大值又被默认为10000
GDI对象,实际上是Windows系统维护的一些数据结构。微软基于稳定性和健壮性考虑,将所有GDI对象的管理权都交给Windows系统的对象管理器管理,用户只能通过系统返回的“句柄”来操作这些对象。 在Windows 2000中,句柄实际上是一个DWORD类型的值。该DWORD值是一个32比特位的数据,它又分为两个部分:Table Index及Uniqueness Identifier转载 2012-11-13 17:46:17 · 3439 阅读 · 0 评论 -
WINDOWS操作系统中可以允许最大的线程数
WINDOWS操作系统中可以允许最大的线程数默认情况下,一个线程的栈要预留1M的内存空间 而一个进程中可用的内存空间只有2G,所以理论上一个进程中最多可以开2048个线程 但是内存当然不可能完全拿来作线程的栈,所以实际数目要比这个值要小。 你也可以通过连接时修改默认栈大小,将其改的比较小,这样就可以多开一些线程。 如将默认栈的大小改成512K,这样理论上最多就可以开4096个线转载 2012-11-13 17:45:48 · 819 阅读 · 0 评论 -
try catch使用
转自:http://blog.csdn.net/windhaunting/archive/2009/10/27/4735338.aspx try{} catch(…){} 以前都是用try{} catch(…){}来捕获C++中一些意想不到的异常, 今天看了Winhack的帖子才知道,这种方法在VC中其实是靠不住的。例如下面的代码: try { BYTE* pch ; pc转载 2012-11-20 12:28:20 · 552 阅读 · 0 评论 -
VC读取文件的文件版本号
#include#include///引入Version.lib库QString InfomationCollect::GetFileVertion( QString fullName ){DWORD dwLen = 0;char* lpData=NULL;BOOL bSuccess = FALSE;QString fileInfomation;//获得文件基础转载 2012-12-24 11:30:33 · 5429 阅读 · 1 评论 -
VC强止终止进程
BOOL KillProcess(CString strProcessName){ bool result = false; HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0) ; PROCESSENTRY32 pInfo; pInfo.dwSize = sizeof(pInfo); P原创 2012-12-29 14:33:42 · 603 阅读 · 0 评论 -
VC从EXE中提取资源文件
bool ExtractFileWithRes(unsigned int nResID, LPCTSTR pszResType, LPCTSTR pszSavePath){ if (NULL == pszResType || NULL == pszSavePath) { return false; } HRSRC hResource = FindResource(GetM原创 2013-01-04 16:52:27 · 4700 阅读 · 0 评论 -
比较洗牌算法的两种实现方法
我们首先会介绍随机生成法,该方法要点就是从头开始逐个随机生成规定区域的数字,如果新生成随机数之前已经生成过就不保存该数;如果新生成的随机数之前没有生成过就保存该数;直到生成的数字的数量达到所需的数量。接下来我们还会介绍交换位置法。AD: 方法一:随机生成法首先,我介绍一种很常见的方法:随机生成法(我自己命名的),这方法我在扫雷游戏中随机分布雷的位置时用过(思想是一样的),该方法要点转载 2012-12-19 16:46:00 · 497 阅读 · 0 评论 -
GetVersionEx 获取系统版本信息
最近在windows 8上获取系统版本信息需要调用系统API,于是用到了GetVersionEx。首先看一看函数原型:[cpp] view plaincopyBOOL GetVersionEx(POSVERSIONINFO pVersionInformation); 结构OSVERSIONINFOEX定义如下:[cpp] view plaincopytype转载 2013-01-29 10:32:19 · 766 阅读 · 0 评论 -
windows管道
1、双向管道 1) 创建出来的两个管道,管道1的read连接到进程的输入,管道2的write连接到进程的输出;见上图;2) 如果往进程执行一个命令,用管道1的write来写数据;3) 往进程执行一条命令后,要读取进程的返回,用管道2的read来读数据; 2、单向管道1) 只需要连接进程的输出到管道write;2) 在调用Creat原创 2015-02-11 11:22:14 · 788 阅读 · 0 评论