随笔分类 -  windows编程

摘要:主要介绍下与设备无关的位图DIB(Device Independent Bitmap)位图的基本格式1.文件头typedef struct tagBITMAPFILEHEADER { WORD bfType;//bmp图类型为'BM'或者0X4D42 DWORD bfSize;//整个文件大小 WORD bfReserved1;//0 WORD bfReserved2;//0 DWORD bfOffBits;//DIB像素数据偏移} BITMAPFILEHEADER2.信息头typedef struct tagBITMAPINFOHEADER{ D... 阅读全文
posted @ 2011-10-31 23:11 Livesss 阅读(781) 评论(0) 推荐(0)
摘要:最近在做一个有关激光笔的小项目,和学长们一起做的。里面还有硬件成份,现在因为才开始做,我主要做软件上面的东西,当然技术含量是很少的···诶,学了一年左右了,水平还是没很大长进啊~~~刚刚C入门,SDK也只能说勉强算是入门了吧。。。项目里面有一部分是要绘制出来鼠标的移动轨迹的,我就去重新看了下GDI,发现自己以前没写过这些东西,印象就是不深刻啊,于是就温习了下。重新看了下<<windows程序设计>>和<<API函数,接口编程实例>>,ctrl+c和ctrl+v出来下面个实验品,然后做了些笔记,我还是记得学长讲得那句话 阅读全文
posted @ 2011-10-16 22:26 Livesss 阅读(1142) 评论(0) 推荐(0)
摘要:看了下《windows核心编程》的错误代码处理部分。我这才知道错误代码处理的重要性,以前的时候有错误就埋头苦调,现在发现当初好傻。埋头苦调根本就是又费力又费时,而且错误代码还不一定能调的出来。以后就用Windows下面的错误代码处理额···下面是一个例子#include <windows.h> DWORD GetLastErrorBox(HWND hWnd, LPSTR lpTitle); LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); LPSTR szAppName = "Curv 阅读全文
posted @ 2011-09-29 18:33 Livesss 阅读(314) 评论(0) 推荐(0)
摘要:碰到了一个很纠结的事情,结果我找了很久才找到问题所在,竟然出在了WM_PAINT消息里面。我本来是想写些GDI的东西的,想设个定时器每隔点时间画个点。结果纠结的事情就是定时器不起作用了,就是画不出点。后来我做了一个精简,写了个小程序,在按下左键的时候触发定时器,然后每1S钟触发WM_TIMER消息,弹出一个框。奇怪的事情就是在这里,老弹不出框。先看代码:#include <windows.h> #include <stdio.h> LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; #define ID_TIM 阅读全文
posted @ 2011-09-28 00:09 Livesss 阅读(699) 评论(0) 推荐(0)
摘要:今天很高兴,因为军训结束了,真是累啊,变得黑人一样。。。(泪奔)切入正题,最近使用到了HOOK技术,就顺便学习了下DLL的知识,不过只是大概地看了下而已,概念性的东西很多,也就只能了解下,还有很多涉及到操作系统层面的,所以看的云里雾里。最后东拼西凑写了点,便于以后自己学习。 Windows系统平台上提供了一种完全不同的较有效的编程和运行环境,你可以将独立的程序模块创建为较小的DLL(DynamicLinkable Library)文件,并可对它们单独编译和测试。在运行时,只有当EXE程序确实要调用这些DLL模块的情况下,系统才会将它们装载到内存空间中。这种方式不仅减少了EXE文件的大小和对内. 阅读全文
posted @ 2011-09-08 18:39 Livesss 阅读(1279) 评论(0) 推荐(0)
摘要:钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。这和前面我博客的窗口子类化都异曲同工,但是Hook可强大多了,我是这两天才开始看的,所以略知皮毛 阅读全文
posted @ 2011-08-30 20:55 Livesss 阅读(65255) 评论(2) 推荐(3)
摘要:这几天都在家里,赶上了暑假,没啥事情可做,就做些小玩意。虽然都没什么技术含量,但自己毕竟是新手,做得不是很好,代码都得参考下别人的。今天看到一个博客上面写的是关于SDK的窗口子类化,什么是窗口子类化,其实说得简单点就是有个多功能的窗口,你对它有绝对的控制权。举个例子好了,你自己写了一个软件,上面有个编辑框,在这里面只能输入“我是笨蛋”,(基本上没人会喜欢你的软件)客户要是想输入其他的,都输不进去。这就有一种思想,软件是我做的,我对它有绝对的控制权。下面简单描述下原理:就拿上面那个例子来说好了,我前面的博客大概介绍了下windows是怎么处理键盘消息的。就拿‘A’键来说,你要是不处理,windo 阅读全文
posted @ 2011-08-09 19:43 Livesss 阅读(319) 评论(0) 推荐(0)
摘要:今天碰到一个很无语的问题,创个编辑框创建了两个多小时,就是不知道哪里出问题。后来我就索性新建一个最简单的工程进行测试,就创建一个窗口,然后中间加个长方形的编辑框(*^__^*)。结果出丑了,编辑框是出来了,结果无法编辑,就连焦点都没法设置。看代码:#include <windows.h> LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { static HWND hwndEdit; switch (message) { case WM_CREATE: hwndE... 阅读全文
posted @ 2011-08-08 16:36 Livesss 阅读(1936) 评论(0) 推荐(1)
摘要:CloseHandle()函数的使用??很多程序在创建线程都这样写的:............ThreadHandle = CreateThread(NULL,0,.....);CloseHandel(ThreadHandle );。。。。。这不是刚好创建又关闭了吗?线程怎么运行呢?================================================Closing a thread handle does not terminate the associated thread. To remove a thread object, you must terminat 阅读全文
posted @ 2011-08-06 13:58 Livesss 阅读(5216) 评论(0) 推荐(1)
摘要:前几天想做个玩玩的小程序:点击任意.exe文件,就打开自己的程序。开始的时候还以为会很难,觉得是不是要用钩子之类,抓到我们点击的程序这个事件的地址,然后用汇编指令实现跳转到自己的程序,一看就是跑到系统内部去了。后来才知道可以直接在注册表里面修改下,就能很简单的实现。下面说说思路:首先注册表是系统的配置文件,很多信息都在这里。比如说点击打开exe文件,其实就是在注册表里面存在一个文件关联。先拿txt举例好了,打开任意一个记事本其实就是关系到注册表中一个指定键的键值,这个键值关联一个程序notepad.exe打开所有txt文件,我们只需要把那个键值修改成自己程序的路径就OK了。我做了一个小程序:打 阅读全文
posted @ 2011-07-18 14:31 Livesss 阅读(745) 评论(0) 推荐(0)
摘要:这里先介绍下wParam和lParam,对于鼠标而言,LOWORD(wParam)和HIWORD(wParam)代表鼠标位置x,y坐标,对于菜单和控件而言,两者wParam的低字节都是各自的ID,即LOWORD(wParam)都是ID。两者的高字节对菜单而言是0,对控件而言是消息码(消息码也可能是0)所以不能单凭wParam参数来判断消息是来自于菜单还是来自于控件,但是可以通过lParam来判断,对于菜单而言lParam恒为0,而对于控件而言却是子窗口句柄。因此就可以这样判断:case WM_COMMAND: { if(lParam == 0) ... 阅读全文
posted @ 2011-07-10 15:55 Livesss 阅读(1440) 评论(0) 推荐(0)
摘要:菜单是很重要的资源,我就大概看了些菜单,总结了下菜单的基本使用。要引入菜单资源: Resource Script 资源脚本 添加到工程里面,这里要注意,产生后出现两个文件,这里假设是menu.rc和rescource.h,由于rc是资源文件的集合,能包含图标,菜单,字符文件资源等等,也可以包含多个菜单。所以你在引用菜单的时候一定要把菜单的名字和你指定的引用的相同,你可以用文本编辑器直接打开.rc文件或者.h文件。菜单的名字以“MenuDemo”为例,要加""。菜单对应的值是操作系统规定的,是101。可以打开.h文件看看.关于菜单的基本知识,菜单的三个特性:1.在菜单中显示什 阅读全文
posted @ 2011-07-02 17:29 Livesss 阅读(1681) 评论(0) 推荐(0)
摘要:写了一个小程序,大概介绍SDK里面鼠标点击,键盘输入,文本绘制的要点。至于前面一大堆的基本窗口的创建,网上的资料很多,这里就不做多的介绍了。这个程序主要介绍键盘按键的统计,将所有按下的键都写到一个文件里面。其次是点击鼠标的操作,大概是一个怎样的过程。再是一些绘制文本的基本要点。先看代码吧(*^__^*)#include "Windows.h"#include <stdio.h>#include "tchar.h"HWND hWinMain;TCHAR szClassName[] = _T("MyClass");TCHAR 阅读全文
posted @ 2011-06-29 16:28 Livesss 阅读(604) 评论(0) 推荐(0)
摘要:今天看到一篇关于GTK+和MFC对比的文章,学GTK+编程的来看看MFC已经江河日下,日渐式微,而GTK+可谓欣欣向荣,如日中天。这里无意于落井下石,痛打落水狗,贬MFC而尊GTK+。自己即在使用MFC也在使用 GTK+,不会偏袒其中之任何一方。这个对比完全出于个人对两者的理解,说它是不完全对比,一方面只是一时兴起想做个笔记而已,另外一方面我对两者的理解 也是有限的。1. 两者都是基于面向对象设计的。尽管MFC是用C++写的,而GTK+是用C写的,但思想都是面向对象的。GTK+使用glib的对象机制,由于用C写的,其实现相对有点繁琐。2. 两者都是基于消息驱动的。这是GUI系统的共性,... 阅读全文
posted @ 2011-04-18 13:34 Livesss 阅读(745) 评论(0) 推荐(0)
摘要:下面是windows中提供的对于文件进行操作的API函数及其功能:CloseHandle 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等。CompareFileTime根据FILETIME结构的信息,对比两个文件的时间CopyFile 复制文件。注意:只能复制文件,而不能复制目录CreateFile 这是一个全功能的函数,可打开和创建文件、管道、邮槽、通信服务、设备以及控制台DeleteFile 删除指定文件FindClose 关闭由FindFirstFile函数创建的一个搜索句柄FindFirstFile 根据文件名查找文件FindNextFile 根据调用FindF 阅读全文
posted @ 2011-03-27 21:51 Livesss 阅读(563) 评论(0) 推荐(0)