随笔分类 -  Windows::Development

Windows平台下的开发。
摘要:已知进程句柄,如何知道此进程的主窗口句柄,在此说明两种方法:1. 调用FindWindow(),前提是必须知道该进程中窗口类名和窗口名,返回后的句柄可以通过IsWindow()函数来验证是否是有效的窗口句柄.HWND hWnd = ::FindWindow(szClassName, szWndName);if(::IsWindow(hWnd)){ // 处理该窗口}2.先枚举全部窗口,再枚举回调函数中调用GetWindowThreadProcessID()得到窗口得进程ID,再与以前得到得ID比较.如果不一致,不处理,若一致,循环调用GetParent()一直到返回NULL, 最后得hwnd即 阅读全文
posted @ 2008-06-11 13:06 david++ 阅读(1189) 评论(0) 推荐(0)
摘要:主要用到的API有GetLogicalDrives ,GetLogicalDirveStrings, GetDriveType, GetDiskFreeSpace.分别介绍如下:1. DWORD GetLogicalDrives(void) 此函数没有参数,它的返回值是一个掩码,用来描述当前可用的逻辑驱动器。第0位代表驱动器A,第一位代表驱动器B,,第2位代表驱动器C,依次类推。若某一位为1,则说明该位所对应的驱动器可用,为0则相反。2 . DWORD GetLogicalDriveStrings( DWORD nBufferLength, // 下面lpBuffer所指向的缓冲区大小 LP. 阅读全文
posted @ 2008-06-01 01:38 david++ 阅读(277) 评论(0) 推荐(0)
摘要:1.HANDLE CreateFileMapping(HANDLE hFile, // 一个文件句柄LPSECURITY_ATTRIBUTElpAttributes, // 定义内存映射文件对象是否可以被承DWORD flProtect, // 该内存映射文件的保护类型DWORD dwMaximumSizeHigh,// 内存映射文件的长度DWORD dwMaximumSizeLow, //LPCTSTR lpName // 内存映射文件的名字)hFile 指定要映射的文件的句柄,如果这是一个已经打开的文件的句柄(CreateFile函数的返回值),那么将建立这个文件的内存映射文件,如果这个参 阅读全文
posted @ 2008-05-24 15:23 david++ 阅读(868) 评论(0) 推荐(0)
摘要:下面是两个函数,SaveBmp函数用于设备相关位图(DIB)保存为bmp格式的文件。DrawBitmapFile则用于将bmp格式的文件打开并显示在指定的设备环境上。BOOLSaveBmp(HBITMAPhBitmap,constchar*FileName)...{HDChDC;//当前分辨率下每象素所占字节数intiBits;//位图中每象素所占字节数WORDwBitCount;//定义调色板大小,位图中像素字节大小,位图文件大小,写入文件字节数DWORDdwPaletteSize=0,dwBmBitsSize=0,dwDIBSize=0,dwWritten=0;//位图属性结构BITMA. 阅读全文
posted @ 2008-05-24 15:12 david++ 阅读(1330) 评论(1) 推荐(0)
摘要:内存映射文件与虚拟内存一样,内存映射文件可以用来保留一个地址空间的区域,并将物理存储器提交给该区域。它们之间的差别是,物理存储器来自一个已经位于磁盘上的文件,而不是系统的页文件。一旦该文件被映射,就可以访问它,就像整个文件已经加载内存一样。 内存映射文件可以用于3个不同的目的: • 系统使用内存映射文件,以便加载和执行. e x e和D L L文件。这可以大大节省页文件空间和应用程序启动运行所需的时间。 • 可以使用内存映射文件来访问磁盘上的数据文件。这使你可以不必对文件执行I / O操作,并且可以不必对文件内容进行缓存。 • 可以使用内存映射文件,使同一台计算机上运行的多个进程能够相互之间共 阅读全文
posted @ 2008-05-24 15:02 david++ 阅读(391) 评论(0) 推荐(0)
摘要:1.HINSTANCE ShellExecute( HWND hwnd, // 父窗口句柄 NULL LPCTSTR lpOperation, // 动作 "Open" "edit" "explore".. LPCTSTR lpFile, // 要通过动作来操纵的文件对象 "notepad" LPCTSTR lpParameters, // 若lpFile为可执行文件,lpParameters就是该可执行文件的命令行参数 "test.txt" LPCTSTR lpDirectory, // 默认 阅读全文
posted @ 2008-05-16 15:01 david++ 阅读(300) 评论(0) 推荐(0)
摘要:一:遵循一致的准则,确立标准并遵循无论是控件使用,提示信息措辞,还是颜色、窗口布局风格,遵循统一的标准,做到真正的一致。 这样得到的好处:1:使用户使用起来能够建立起精确的心里模型,使用熟练了一个界面后,切换到另外一个界面能够很轻松的推测出各种功能,语句理解也不需要费神理解2:降低培训、支持成本,支持人员不会行费力逐个指导。3:给用户统一感觉,不觉得混乱,心情愉快,支持度增加做法:项目组有经验人士,确立UI规范:·美工提供色调配色方案,提供整体配色表·界面控制程序人员、用户体验人员提出合理统一使用的控件库。参考标准界面使用规范:控件功能遵循行业标准,windows平台参见《 阅读全文
posted @ 2008-05-11 22:43 david++ 阅读(574) 评论(0) 推荐(1)
摘要:位图文件简介BMP(Bitmap-File)格式是最常用的图像文件存取格式之一,是微软为其Windows环境设置的标准图像格式,BMP位图文件默认的文件扩展名是“.BMP”或者“.bmp”,有时它也会以“.DIB”或者“RLE”为扩展名。用BMP格式存放的图像几乎可以被所有的图像显示软件读取。BMP图形文件是Windows采用的图像文件格式,在Windows环境下运行的所有图像软件都支持BMP图像文件格式。Windows系统内部个图像绘制操作都是以BMP为基础的。Windows3.0以前的BMP文件格式与显示设备有关,因此把这种BMP图像文件格式称为设备相关位图(Device Dependen 阅读全文
posted @ 2008-05-07 19:54 david++ 阅读(3841) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2008-03-19 12:35 david++ 阅读(466) 评论(0) 推荐(0)
摘要:应用程序的消息循环Windows是消息驱动的,它的消息循环部分主要是通过GetMessage函数来处理消息的。操作系统为每一个创建的窗口维护着一个消息队列,当在该窗口上有事件发生时,操作系统就把该事件所对应的消息放入该窗口的消息队列中。应用程序要处理事件消息的话,就必须先将消息取出来,主要有两个函数可以实现:GetMessage和PeekMessage。它们两者的功能有所不同:当消息队列中没有消息的时候GetMessage会挂起,将CPU资源让给其他应用程序,当有消息可以处理时,才获得CPU资源并处理。而PeekMessage则不管消息队列有无消息立即返回。一般情况下,GetMessage可以 阅读全文
posted @ 2008-03-11 13:48 david++ 阅读(262) 评论(0) 推荐(0)
摘要:动态链接库动态链接库为模块化应用程序提供了一种方式,使得更新和重用程序更加方便。当几个应用程序在同一时间使用相同的函数时,它也帮助减少内存消耗,这是因为虽然每个应用程序有独立的数据拷贝,但是它们的代码却是共享的。动态连接库的概念 动态链接库是应用程序的一个模块,这个模块用于到处一些函数和数据供程序中的其他模块使用。应该从以下三个方面来理解:1.动态连接库是应用程序的一部分,它的任何操作大都是代表应用程序进行的。所以动态链接库文件和可执行文件在本质上来说是一样的,都是作为模块被进程加载到自己的空间地址的。2.动态链接库在程序在编译时不会被插入到可执行文件中,在程序运行时整个库的代码才会调入内存, 阅读全文
posted @ 2008-02-29 10:35 david++ 阅读(1095) 评论(0) 推荐(0)
摘要:Windows钩子Windows应用程序的运行模式是基于消息驱动的,任何线程只要注册了窗口类就会有一个消息队列来接收用户的输入消息和系统消息。为了取得特定线程接收或发送的消息,就要 Windows提供的钩子。钩子的概念钩子(Hook)是Windows消息处理机制中的一个监视点,应用程序可以在这里安装一个子程序(钩子函数)以监视指定窗口某种类型的消息,所监视的窗口可以是其他进程创建的。当消息到达后,在目标窗口处理函数处理之前,钩子机制允许应用程序截获它进行处理。 钩子函数是一个处理消息的程序段,通过调用相关的API函数,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就捕获该消息 阅读全文
posted @ 2008-02-28 10:31 david++ 阅读(5746) 评论(1) 推荐(0)