
WINDOWS VS
凭谁问
做自己所爱的
展开
-
Win7 文件访问时间和修改时间不一样的原因分析
在Win7下,我注意到一个现象,就是经常文件属性中的“访问时间”和“修改时间”是不一致的,如下图:这个文件是我在21:41 创建的,然后我在21:42修理里面的内容并保存。按照常理,访问时间应该和修改时间一致才对。现象是反而比修改时间早,很奇怪。根据GetFileTime这个API,和文件相关的时间有3个:BOOL WINAPI GetFileTime( __in转载 2013-04-03 16:14:22 · 2292 阅读 · 0 评论 -
window 链接 postgreSQL
最近在做一个项目需要把资源存放到数据库,用到了postgreSQL。需要在c++代码里访问数据库。网上查了下总结了以下几种方式:(其他的方式如使用ado之类的,此处没有例举)一.通过ODBC访问:1.下载odbc驱动:官方的我没有找到,不过可以从以下站点下载。 http://d.download.csdn.net/down/3059636/ldz_1_0_1 下载下来psq原创 2013-01-29 16:38:54 · 5153 阅读 · 1 评论 -
Windows界面编程第一篇 位图背景与位图画刷
Windows界面编程第一篇 位图背景与位图画刷 可以通过WM_CTLCOLORDLG消息来设置对话框的背景,MSDN上对这个消息的说明如下:The WM_CTLCOLORDLG message is sent to a dialog box before the system draws the dialog box. By responding to this message转载 2013-01-14 10:31:27 · 672 阅读 · 0 评论 -
Windows界面编程第三篇 异形窗体 普通版
上一篇《Windows界面编程第二篇 半透明窗体》介绍了先使用SetWindowLong为窗体加上WS_EX_LAYERED属性,再使用SetLayeredWindowAttributes调整窗体的透明度。本篇将使用这二个函数来完成另一个实用的功能——异形窗口(异形窗体)。异形窗口的原理很简单,首先加载一张位图画刷作窗口背景,然后设置透明色就可以使得窗口由矩形变成任意形状。这样使得窗口的显示更转载 2013-01-14 10:26:52 · 669 阅读 · 0 评论 -
Windows界面编程第四篇 异形窗体 高富帅版 .
上一篇《Windows界面编程第三篇 异形窗体 普通版》介绍了异形窗口(异形窗体)的创建,其主要步骤为——先通过创建位图画刷来做窗口的背景画刷,再通过SetWindowLong为窗体加上WS_EX_LAYERED属性,然后使用SetLayeredWindowAttributes指定窗口的透明色来完成窗口形状的调整。并且为了使异形窗口支持鼠标的拖曳,在WM_LBUTTONDOWN消息中作了特殊处理。转载 2013-01-14 10:24:57 · 542 阅读 · 0 评论 -
Windows界面编程第五篇 静态控件背景透明化
上一篇《Windows界面编程第三篇 异形窗体 普通版》和《Windows界面编程第四篇异形窗体 高富帅版》介绍了异形窗口(异形窗体)的创建,并总结出了异形窗口的“三要素”:1.WS_EX_LAYERED属性2.指定透明色3.以位图为窗口背景 本篇文章将主要介绍Windows编程中如何实现静态控件背景的透明化,这将进一步的美化界面。下面先看一张没有做静态控件背景透明转载 2013-01-14 10:23:05 · 770 阅读 · 0 评论 -
Windows界面编程第二篇半透明窗体
上一篇《Windows界面编程第一篇 位图背景与位图画刷》介绍了通过WM_CTLCOLORDLG消息来来设置对话框的背景以及位图画刷的使用。本篇将介绍动态调节窗体透明度的方法。 调节窗体透明度可以先使用SetWindowLong为窗体加上WS_EX_LAYERED属性,再使用来SetLayeredWindowAttributes指定窗体的透明度。这样就可以在程序运行时动态的调节窗体的透明转载 2013-01-14 10:29:18 · 865 阅读 · 0 评论 -
将后台窗口激活到前台的方法
下面这种方法是我见到的最理想的,还有一些其他的方法,像通过SetWindowsPos这个API设置窗口的Z-oder到最顶层,再设置回去。还有通过把当前窗口设置到底层,然后激活目标窗口等等方法。HWND hCurWnd = NULL; DWORD dwMyID; DWORD dwCurID; hCurWnd = ::GetForegroundWindow();转载 2013-01-13 17:21:41 · 2520 阅读 · 0 评论 -
一个简单的键盘钩子程序
实现适时监视键盘,并将按键信息保存在TXT文件中的程序 Windows系统是建立在事件驱动的机制上的,说穿了就是整个系统都是通过消息的传递来实现的。而钩子是Windows系统中非常重要的系统接口,用它可以截获并处理送给其他应用程序的消息,来完成普通应用程序难以实现的功能。钩子的种类很多,每种钩子可以截获并处理相应的消息,如键盘钩子可以截获键盘消息,外壳钩子可以截取、启动和关闭应转载 2013-01-11 15:23:24 · 1968 阅读 · 0 评论 -
VC、VS2005调试技巧
一、 引言本文主要介绍以下几方面内容:常见编译错误VC调试器VC快捷键VC项目文件说明环境参数的设置 二、常见编译错误 1. Fatal Error C1010 unexpected end of file while looking for precompiled header转载 2013-01-15 14:32:12 · 5376 阅读 · 0 评论 -
VS Debug与Release版本的区别
Debug 和 Release 并没有本质的区别,他们只是VC预定义提供的两组编译选项的集合,编译器只是按照预定的选项行动。如果我们愿意,我们完全可以把Debug和 Release的行为完全颠倒过来。当然也可以提供其他的模式,例如自己定义一组编译选项,然后命名为MY_ABC等。习惯上,我们仍然更愿意使用VC已经定义好的名称。 Debug版本包括调试信息,所以要比Release版本大很多转载 2013-01-15 14:37:26 · 3243 阅读 · 0 评论 -
winsock的select模型
select函数: 系统提供select函数来实现多路复用输入/输出模型。原型: #include sys/time.h> #include unistd.h> int select(int maxfd,fd_set *rdset,fd_set *wrset,fd_set *exset,struct timeval转载 2013-03-17 18:24:10 · 738 阅读 · 0 评论 -
winsock的阻塞和非阻塞通信模型
摘要:在应用程序开发中,经常涉及各式各样的机器的交互通信问题。在Windows操作系统下,可以使用MFC中的CSocket,也可以使用以Windows Api为基础的Winsock等等。本文主要描述了Winsock的两种实现方式,即阻塞方式和非阻塞方式。并对应这两种方式,描述了Select模式和IOCP模式。关键字:Winsock Blocking NonBlocking Select模式转载 2013-03-16 11:38:44 · 3398 阅读 · 0 评论 -
fatal error C1001: 编译器中发生内部错误。
用vs2005在构建版本时时出现如下错误:24>C:\Program Files (x86)\Microsoft Visual Studio 8\VC\include\xmemory(165) : fatal error C1001: 编译器中发生内部错误。24>(编译器文件“msc1.cpp”,第 1392 行)24> 要解决此问题,请尝试简化或更改上面所列位置附近的程序。原创 2013-03-13 10:40:43 · 14888 阅读 · 1 评论 -
预编译头
预编译头的概念:在很多程序中,每个源文件都存在一些相同的部分。比如要包括相同的一些头文件,而且这些头文件可能很长,例如window.h。如果用普通的方法编译这些源文件,对这些头文件在每个源文件中的出现都要重新编译,作了很多重复工作。如果能将这些头文件专门进行编译,并且把结果存储起来。然后在编译包含这些头文件的源文件时,使用上述结果替代头文件在源文件中的出现,就可以大大减少工作量。Microso转载 2013-02-18 16:25:54 · 1032 阅读 · 0 评论 -
ShellExecute 使用
有三个API函数可以运行可执行文件WinExec、ShellExecute和CreateProcess。CreateProcess因为使用复杂,比较少用。 WinExec主要运行EXE文件。如:WinExec(’Notepad.exe Readme.txt’, SW_SHOW); ShellExecute不仅可以运行EXE文件,也可以运行已经关联的文件。 首先必须引用she转载 2013-01-22 11:16:42 · 1216 阅读 · 0 评论 -
window异常处理
闲来无事作点翻译工作,今天要介绍的是关于错误处理的.以下内容大部分不是我的原创,我只是把他们收集到一起来了而已. 错误处理在一个系统里面算是一个比较底层的东西了.拥有一个稳定的错误处理系统,是一个良好的系统的基础.从发展的角度看,错误处理大体有下面几种方式. 比较基础的,使用返回值表示错误还是正确,比如使用int作为返回值,0表示正常1表示错误,这种算是c语言里面的办法了,比如转载 2013-01-31 13:53:48 · 1363 阅读 · 0 评论 -
调试常用的 __FILE__, __FUNCTION__, __LINE__
调试常用的 __FILE__, __FUNCTION__, __LINE__没想到 VC6 不支持 __FUNCTION__所以我写了如下的奇怪代码//用来记录当前行和当前函数//也可说是记录 堆栈void log_stack(const char *file, int line, const char * function);//当然还要对 __FUN转载 2013-01-31 13:57:39 · 673 阅读 · 0 评论 -
CreateProcess的用法
第一、第二个参数的用法: 例子:使用ie打开指定的网页。注意第二个参数是 可执行文件+命令行参数 [cpp] view plaincopyprint?#include "stdafx.h" #include #include int main(int argc, char* argv[]) { STA转载 2013-01-16 23:32:03 · 889 阅读 · 0 评论 -
QT安装不使用dll的全局钩子
/********************************************************** 不用调用dll就可以执行的全局钩子示例: 只留下F12做为程序退出,屏蔽键盘和鼠标,测试时请注意 ********************************************************/#ifndef HH_H#define转载 2013-01-11 15:11:55 · 1602 阅读 · 0 评论 -
win32 DECLARE_HANDLE
好多网友会有这样的疑问,WNDCLASSA结构体中遇到的HINSTANCE到底是什么类型,它是否是某种基本数据类型呢?下面通过我的阐述你就会有一个准确的把握了!在WINDEF.H中有这样的语句DECLARE_HANDLE(HINSTANCE);,在WINNT.H中有这样的内容#ifdef STRICTtypedef void *HANDLE;#define DECLARE_HAND转载 2013-01-11 15:02:04 · 1216 阅读 · 0 评论 -
运行shell:windows命令,及显示桌面.scf的问题
“显示桌面.scf”内容是:[Shell]Command=2IconFile=explorer.exe,3[Taskbar]Command=ToggleDesktop (把上面文字粘贴到记事本里,保存为“显示桌面.scf”即可)开始-运行-shell:******可以访问到系统的许多资源,具体如下:我的电脑 shell:DriveFolder我的文档转载 2013-01-23 16:11:14 · 7443 阅读 · 1 评论 -
DLL搜索顺序问题详解
DLL的动态链接有两种方法。一种是加载时动态链接(Load_time dynamic linking)。Windows搜索要装入的DLL时,按以下顺序:应用程序所在目录→当前目录→Windows SYSTEM目录→Windows目录→PATH环境变量指定的路径。 前天看到这几句,突然设计出一道自认绝妙的笔试题:“如果采用加载时动态链接的方式,Windows搜索要装入的DLL采用转载 2012-12-14 11:33:06 · 1205 阅读 · 0 评论 -
win api 打开可执行文件
在MFC中打开其他可执行文件常用到的方法有:WinExec、ShellExecute、CreatProcess。1.WinExecWinExec 主要运行EXE文件,用法简单,只有两个参数,前一个指定命令路径,后一个指定窗口显示方式: UINT WinExec(LPCSTR lpCmdLine, UINT uCmdShow)示例:WinExec("E:\\Program Fi转载 2012-12-24 14:15:10 · 946 阅读 · 0 评论 -
CreateProcess函数 详细使用
http://www.cr173.com/html/11519_1.html函数原型 BOOL CreateProcess ( LPCTSTR lpApplicationName, LPTSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes。 LPSECURITY转载 2012-12-24 17:13:45 · 3640 阅读 · 0 评论 -
开机自动运行
要实现开机自动运行,要用到两个操作注册表的函数:RegOpenKeyEx()和RegSetValueEx()。前者用于打开注册表的键,后者则为打开的键设置键值。函数的详细用法可以查msdn哈~~示例代码如下:BOOL SetAutoRun(HWND hwnd)//开机自动运行{ //得到程序本身路径 TCHAR sthPath[MAX_PATH];转载 2012-12-24 17:08:10 · 510 阅读 · 0 评论 -
窗口风格(Window style)
WS_BORDER 有边框窗口 WS_CAPTION 必须和WS_BORDER风格配合,但不能与WS_DLGFRAME风格一起使用。指示窗口包含标题要部分。(很明显,其中的WS_CAPTION就是多余的,因为它是由WS_BORDER和WS_DLGFRAME组成的,去掉它对窗口没有任何影响)WS_CHILD 说明窗口为子窗口,不能应用于弹出式窗口风格(WS_POPUP)。转载 2012-12-21 17:35:20 · 801 阅读 · 0 评论 -
配置MSVC命令行环境
配置msvc命令行环境有些时候使用命令行而不是IDE去编译源代码会比较方便。而在命令行下使用msvc的编译器——cl, 需要为其配置环境。一、 环境变量测试测试cl的环境是否配置妥当, 可以执行如下测试:win键+R 启动运行 -> 输入cmd(winnt系列)或者command(win95系列) -> 回车, 打开命令行窗口。键入"cl"并回车,转载 2012-11-27 17:13:33 · 4882 阅读 · 1 评论 -
VS2008 自用注释宏
创建过程:1. 新建Macro工程 打开 菜单 -->工具--> 宏 --> 新建宏项目...。2. 编辑Macro工程 打开 菜单 -->工具--> 宏 -->宏资源管理器 ,在红资源管理器中选择新建的工程,修改Module名(右键),在Module名上双击,在打开的MacroIDE中进行编辑。3. 在Module下,添加要实现的Macro,并原创 2012-09-20 02:07:19 · 2920 阅读 · 0 评论 -
应用程序无法正常启动0xc0150002 解决方案
我也遇到过此问题,解决办法:方案一: 在项目的“属性|配置属性|链接器|常规”中的“启用增量链接”选择“否”。此方法阻断了问题产生的源头,其每次生成exe文件时都直接嵌入清单文件,而不是默认的根据时戳而决定是否更新清单文件。方案二:不嵌入清单文件。在项目的“属性|配置属性|清单工具|输入和输出”中的“嵌入清单”选择“否”,从而在生成exe文件时附随生成一个清单文件(默认情况下,其文件名为e转载 2012-08-15 17:05:59 · 135132 阅读 · 15 评论 -
vs2005 生成的应用程序 在win7下以管理员权限运行
在开启UAC的时候,在win7中执行程序默认是以一种权限较低的方式执行的,但是在这种方式下,我们有些操作会失败(比如修改注册表,监听端口,往系统目录写入文件等),要实现这些操作,就需要我们以管理员权限执行程序了。当然,只有在程序上右键,选择“以管理员执行”就可以,不过如何让程序自己自动以管理员权限来运行呢,这就需要Manifest了。 两种方法 一 在已经生成的exe中插入ma原创 2012-12-27 17:32:21 · 9939 阅读 · 0 评论 -
窗口全屏,覆盖任务栏
给人做个东西,有这个要求先放上一些玩意的隐藏任务栏::ShowWindow(::FindWindow(_T("Shell_TrayWnd"), NULL), SW_HIDE);开始菜单 ::ShowWindow(::GetDlgItem(::FindWindow(_T("Shell_TrayWnd"), NULL),0x130), SW_HIDE);//0x130 是开始按钮的ID转载 2012-12-17 15:00:59 · 2738 阅读 · 2 评论 -
Windows 手势识别API .
一、背景:还是不得不提及iPhone的伟大创造性工作,用手势识别来操作手机,特别是对于滚动条,想想之前是何等的痛苦,拿着触摸板,在那个只有几个像素的滚动条上又是拉又是点的。在WM6.5没有出来之前,自己也实现过手势识别的引擎,包括方向识别、画圈识别。微软为了大家不至于对他失去信心,还是在6.5上了点点东西。对于开发者来说,其实只要添加了Gesture API 和widget。最近做个新的项目,需要转载 2013-01-07 17:42:03 · 1035 阅读 · 0 评论 -
在低版本的 vc 中使用 vc 10.0 的新特性
vc 10.0 提供了一些新的特性,最引人注目的莫过于 lambda, 但 vs2010 beta 内存占用之多也不得不让人心生退让. 高手 7cat 指出 "vc ide 只是一个壳" 那么如果利用 vc 10.0 编译器的新功能? 以vc9为例, 注意 Tools->Projects and Solutions->VC++ Directories->Executabl转载 2013-01-07 13:49:15 · 645 阅读 · 0 评论 -
C#获取进程的主窗口句柄
通过调用Win32 API实现。public class User32API{ private static Hashtable processWnd = null; public delegate bool WNDENUMPROC(IntPtr hwnd, uint lParam); static User32API() {转载 2012-12-19 22:50:22 · 9339 阅读 · 1 评论 -
通过进程ID获得该进程主窗口的句柄
一个进程可以拥有很多主窗口,也可以不拥有主窗口,所以这样的函数是不存在的,所幸的是,相反的函数是有的。所以我们可以调用EnumWindows来判断所有的窗口是否属于这个进程。typedef struct tagWNDINFO...{DWORD dwProcessId;HWND hWnd;} WNDINFO, *LPWNDINFO;BOOL CALLBACK YourEnum转载 2012-12-19 22:45:39 · 3350 阅读 · 0 评论 -
WIN32进程快照以及进程ID和句柄查找
要对进程进行某种操作,就必须首先知道该进程的进程句柄或者进程ID,否则一切无从谈起,对于程序自己创建的子进程来说,CreateProcess函数返回了进程句柄和进程ID,但如果需要调试系统中已经运行的进程,那就必须首先获取它们的句柄才行。Win32中并没有直接获取其他进程句柄的函数,但如果知道进程ID,可以由此得到进程句柄,所以可以首先通过某种途径获取进程ID。 一、获取进程ID转载 2012-12-19 22:41:51 · 4623 阅读 · 0 评论 -
win32 让程序只运行一次
在写一些与硬件打交道的程序时,最让人担心的是程序被启动多次,这样不仅浪费系统资源,而且很容易造成数据获取错误。下面介绍一种VC++中很简单的方法来避免同一程序被启动多次。本方法用到了互斥量。互斥量是操作系统中的一个很重要的技术。它用于独占系统硬件或软件资源,避免外在程序的干扰。具体代码如下: //判断程序是否运行第二次 HANDLE hMutex = NULL;转载 2013-01-03 22:01:00 · 1005 阅读 · 0 评论 -
QListView的样式
这里简单的一个应用QListView的样式。 首先建立一个文本文档,改名为xx.qss 。qss内容为:QListView::item:selected { border: 1px solid #6a6ea9;}QListView::item:selected:!active { background: qlineargradient(x1: 0,转载 2012-12-18 15:20:41 · 7279 阅读 · 0 评论 -
Qt 中捕获窗口停用和激活的消息 .
最近一直在用Qt做一个简单的俄罗斯方块的游戏,由于要实现一个暂停游戏的功能,就是当鼠标移出正在运行的游戏,点击电脑桌面上的其他位置时,这个时候游戏暂停。在这里把实现过程简单的记录一下,作为一个学习笔记,如果有什么错误之处,还希望大家指出,共同提高,谢谢!刚开始的时候,我很自然的想到要实现这个功能,只要重载一下下面的这个函数:[cpp] view plaincopyprint转载 2012-12-17 15:11:50 · 1039 阅读 · 0 评论