随笔分类 -  [14] 每日一练(Windows)

摘要:本例我们学习另一个操作层窗体的函数, UpdateLayeredWindow 这个函数前几节中讲述的SetLayeredWindow功能更强大一些,它不仅可以显示实现SetLayeredWindow的Colorkey以及Alpha功能外还支持带有不同通道的图从而实现一些部分透明或阴影的功能, 这部分内容我们将会在后继章节中学习。 一. API 学习 BOOL UpdateLayeredWind... 阅读全文
posted @ 2011-09-07 22:26 zTercel 阅读(767) 评论(0) 推荐(0)
摘要:今晚用酷狗听歌时看到它的歌词效果做不不错, 真的很棒,所以想玩一玩模仿一下, 就开始分析如何实现,我分析步骤 1. 实现不被最小化的窗体 发现显示桌面时它不会最小化,我在桌面窗体中没有看到它的存在, 难到它不是一个窗体吗? 我用SPY++查看,它是一个窗体,但为何它不会被最小化呢,看到这窗体风格我想是不是只 要设置这些就可以了呢, 开始写程序试,果然是这样的,我才知道只要设... 阅读全文
posted @ 2011-09-07 22:23 zTercel 阅读(718) 评论(0) 推荐(0)
摘要:我们常常看到许多软件如QQ, 360, 金山词霸等都非常的漂亮,看不到我们通常看到的Window窗体和控件。 本节我们学习一下,当然技术上也是老话重谈,有点点技术就是双重缓冲的解决切换闪烁的问题. 一、关键代码 1. 载入一个背影到内存(确保窗体与背影大小一致) CREATESTRUCT cs = *(CREATESTRUCT*)lParam; hBmpBK = LoadBit... 阅读全文
posted @ 2011-09-05 19:03 zTercel 阅读(304) 评论(0) 推荐(0)
摘要:在上一节中我们学习了不规则窗体的实现, 本节我们通过另一个方式来实现用SetWindowRgn函数实现不了的功能,使用的方法我们在前期学过的SetLayeredWindowAtrribute函数通过 ColorKey参数的灵活使用. colorkey就是窗体中有颜色为color的值将其完成透明掉, 使用这个特性可以将我们不形状之外的部分填充成要ColorKey的颜色, 最后调用这个这个函数即可... 阅读全文
posted @ 2011-09-03 23:47 zTercel 阅读(320) 评论(0) 推荐(0)
摘要:我们常看到有许多不规则的窗体, 像Photoshop启动窗体以及一下破解软件也常是一些不规则窗体还有QQ,Windows 提供了不规则窗体的方法有多种, 我们先学习一下通过Rgn来实现。 实现方法: 1. 创建一个想要的状态区域(HRGN); 2. 使用SetWindowRgn函数将区域做为参数即可实现不规则窗体. 一、关键代码 RECT rtClient; GetClient... 阅读全文
posted @ 2011-09-03 23:46 zTercel 阅读(276) 评论(0) 推荐(0)
摘要:将一个窗体钉在桌面上, 在任务上不显示, 操作Window提供的显示桌面的功能也不会最小化, windows自带的便笺软件功能很好用,但有两个功能个人认人产品化做的很不好,第一、显示在任务栏(便笺的目的就是提示自己要做的事,所有应该一直挂在桌面上,而任务栏原本空间就有限,如果占用任务样影响了正常的工作), 其二、点击桌面时会被最小化, 被最小化了就失去了便笺) 为了实现以上不足我想这个软件应该是钉... 阅读全文
posted @ 2011-09-01 21:16 zTercel 阅读(1425) 评论(0) 推荐(0)
摘要:通过读取Shell 中接口(IID_IShellDispatch), 使用此方式MinizeAll() 来最小化窗体, 并通过UndoMinizeAll()来恢复。 这个功能比起Window提供的[显示桌面]来, 功能还是有局限性的,此方法仅用于所有顶层窗体不存在模态对话框时才起作用。 一、关键代码块 IShellDispatch*pDispatch; CoInitializ... 阅读全文
posted @ 2011-08-31 23:20 zTercel 阅读(236) 评论(0) 推荐(0)
摘要:主要通过处理WM_LBUTTONDOWN 消息, 将此消息转发出WM_NCLBUTTONDOWN 消息并将参数WPARAM设置为HTCAPTION1. 處理WM_LBUTTONDOWD 消息 發送消息: SendMessage(hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0); 或 SendMessage(hWnd, WM_SYSCOMMAND, 0XF012, 0); 代碼: a. 處理 WM_NCBUTTONDOWN 消息LRESULTWndProc(HWNDhWnd,UINTnMsg,WPARAMwParam,LPARAMlParam){switch(nMs.. 阅读全文
posted @ 2011-08-30 21:53 zTercel 阅读(338) 评论(0) 推荐(0)
摘要:通过GetWindowLongPtr函数读取当前窗体的扩展风格,去除WS_EX_APPWINDOW风格并加入WS_EX_TOOLWINDOW风格并通过SetWindowLongPtr 函数设置。 但这里有个小巧门, 先将窗体隐藏一下修改风格后再显示即可。 本节与0037几乎一样,多实了toolwindow与appwindow之间实现切换, 因为两例时间关系,忘记了己写了此类练习,误写了这个... 阅读全文
posted @ 2011-08-29 22:55 zTercel 阅读(274) 评论(0) 推荐(0)
摘要:本章节学习也是非常简单的, 几乎没有什么技术问题可言, 仅仅是一点小技巧。 通常我们运行软件后会在任务栏上软件启动图标,但对一个特定的软件不希望在任务栏上碍事这时我们只要修改一点点即可达到要求, 修改窗体的WS_EX_TOOLWINDOW风格, 若要恢复取反即可 一、代码演示 DWORD dwExStyle = GetWindowLongPtr(hWnd, GWL_EXSTYLE); S... 阅读全文
posted @ 2011-08-29 22:54 zTercel 阅读(243) 评论(0) 推荐(0)
摘要:层窗体 – 这个概念和photoshop的图层概念是一样的, 每一层上可以用许多UI或控件, 层与层之间可以实现透明以及部分切除. 一、代码演示 SetWindowLongPtr(hWnd, GWL_EXSTYLE, WS_EX_LAYERED | GetWindowLongPtr(hWnd, GWL_EXSTYLE)); SetLayeredWindowAttributes(... 阅读全文
posted @ 2011-08-29 22:53 zTercel 阅读(446) 评论(0) 推荐(0)
摘要:本章学习内容非常少就一个API(GetWindowPlacement) 1. 代码演示 ////////////////////////////////////////////////////////////////////////// BOOL CALLBACK WndEnumProc(HWND hWnd, LPARAM lParam) { HWND hListbox = (H... 阅读全文
posted @ 2011-08-26 23:09 zTercel 阅读(499) 评论(0) 推荐(0)
摘要:许多支持文件打开的软件如VS、NotePad, Word,通常都支持鼠标拖拽文件到应用软件窗体实现快速打开文件。 本节里我们也模仿这个功能的实现. 要完成此功能大体思路: 1. 窗体需要支持WS_EX_ACCEPTFILE 这个属性; 2. 通过处理WM_DRAPFILES消息使用DragQureyFile, DrayGetFileList函数即可得到拖入窗体的文件及文件夹,用DrayC... 阅读全文
posted @ 2011-08-25 23:21 zTercel 阅读(451) 评论(0) 推荐(0)
摘要:今天学习的内容在Demo032中基本上己学过了, 此例仅在Demo32基础上做了一点延伸。 在上节中我们了解EnumchildWindows遍历桌面的子窗体, 本节使 用此函数来获取窗体中所有控件. 一、代码演示 ////////////////////////////////////////////////////////////////////////// BOOL CALLBAC... 阅读全文
posted @ 2011-08-24 22:36 zTercel 阅读(609) 评论(0) 推荐(0)
摘要:在上节中我们学习如何遍历顶层窗体,本节中我们继续学习如何遍历子窗体,在例程中我们用使用了二种方法来遍历子窗体; 1. 使用EnumChildWindows 遍历 BOOL EnumChildWindows(HWND hWndParent, WNDENUMPROC lpEnumFunc, LPARAM lParam ); 功能: 遍历指定窗体的子窗体,将遍历到的子窗体通... 阅读全文
posted @ 2011-08-22 23:05 zTercel 阅读(4274) 评论(1) 推荐(0)
摘要:今天我们将讲述如何遍历系统中所有的顶层窗体,讲述之前我们提个问题, 什么是顶层窗体, 顶层窗体有些什么特点呢? 我引用了Codeguru上的老外的描述看看他是怎么说的: Q: What is a top-level window?A: A top-level window is a window that is not child, i.e. it has not WS_CHILD sty... 阅读全文
posted @ 2011-08-22 23:04 zTercel 阅读(557) 评论(0) 推荐(0)
摘要:今天我们学习如何获取到其他进程窗体信息如: 类名,窗体内容,大小以及进程和线程ID等; 但我们做的练习将会比我们所要学的更有意思; 哈哈… 我们通过仿VS著名工具SPY++中拖拉鼠标到指定窗体上来截获窗体句柄,根据窗体句柄后获取特点窗体的信息(例程中屏避了对本进程的窗体), 根据这个例子我们对其中技术一起学习, 先看一下SPY++效果: 一、 改变鼠标光标 1. LoadC... 阅读全文
posted @ 2011-08-22 23:04 zTercel 阅读(2012) 评论(0) 推荐(0)
摘要:今天这个话题比较简单,仅截取同进程的窗体消息,如果我们再做一些处理做成一个DLL然后将DLL驻入到指定进程的窗体中那更有意思了, 我们将在后面的章节里再研究一下。 我们开始学习了。 本节与上一节都在讲述着同相的内容围绕着GetWindowLongPtr, SetWindowLongPtr两个API进行的 (一) 函数声明 LONG_PTR GetWindowLongPtr(HWND... 阅读全文
posted @ 2011-08-19 21:51 zTercel 阅读(2860) 评论(0) 推荐(0)
摘要:作为一个窗体,除了具有窗体类信息外还有其自身的一些信息如风格,扩展风格,窗体处理函数外还包括一个用户信息, 我们可以通过信息空间将我们要公共信息置入其中实现信息共享. 接下来我们看看它的功能. (一) 函数声明 LONG_PTR GetWindowLongPtr(HWND hWnd, int nIndex ); 获取指定窗体特定标识信息, 此函数支持32位和64位 ... 阅读全文
posted @ 2011-08-18 23:28 zTercel 阅读(527) 评论(0) 推荐(1)
摘要:在上一节中我们有测试过使用GetClassInfoEx读取不到窗体类信息,我们这一节将学习通过GetClassLongPtr获取非窗体所在的进程类信息 (一) 函数声明 ULONG_PTR GetClassLongPtr(HWND hWnd, int nIndex ); 获取指定窗体(可进程也可进程外)特定类信息项值(数据源:窗体类分配的WNDCLASSEX参数值),... 阅读全文
posted @ 2011-08-17 23:19 zTercel 阅读(800) 评论(0) 推荐(0)