上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 28 下一页
摘要: 相信很多人在VC下开发程序的时候大多都会采用基于对话框的开发吧,我也不例外,大多数的小型测试程序没有必要开发基于文档/视图的结构来测试,只要使用一些基本的对话框程序就可以达到这个目的 。但是在开发基于对话框的程序时,要使用到一些 Spy++ 的功能检测的时候,就会出现一些问题。什么问题呢?当我使用 Spy++ 去检测一个对话框的窗口类 时,并想得到一个对话框的窗口类,以便我在使用钩子的时候可以指定一个对话框进行 hook,但是结果出乎我意料之外 ,对话框的窗口类不是我在注册时所指定的对话框窗口类名。其类名是 "#32770(Dialog)",这是一个MFC自动为基于对话框的 阅读全文
posted @ 2011-03-31 01:15 °ι 、曲 终 阅读(424) 评论(0) 推荐(0)
摘要: 最近有个朋友做了一个基于对话框的小程序,大家知道,一般具有用户界面的 Windows 程序运行起来后,通常都会在任务栏里体现出来。我的这个朋友不想让她做的对话框程序运行的时候显示在任务栏里。问我如何隐藏?我参考了 MSDN 后告诉她说使用 WS_EX_TOOLWINDOW 扩展窗口式样。她按照我说的方法试了一下,结果没有成功。后来我琢磨了半天,发现这件事情并不像文档中说的那么简单。MSDN 里对 WS_EX_APPWINDOW 的描述是这样的: 用 WS_EX_TOOLWINDOW 可以创建一个工具窗口,被作为浮动工具栏使用。工具窗口的标 题栏比常规标题栏短,并且使用的窗口字体更小。工具窗口不 阅读全文
posted @ 2011-03-31 01:12 °ι 、曲 终 阅读(555) 评论(0) 推荐(0)
摘要: 实现方法采用将动态连接库注入到其他进程中的方法来实现。为了便于选择窗口,我借用了另一个程序"2000下显示带*号"来选择窗口。如果要在98下实现你可用钩子同样实现。程序运行界面如下图:将动态连接库注入其他进程的代码如下:BOOL WINAPI RT_CTRL_BTN(LPCSTR lpszLibFile, HWND hWnd, DWORD dwID, LPRECT pRtBtn, LPCTSTR szCaptionBtn){ try { DWORD dwProcessID; GetWindowThreadProcessId(hWnd, &dwProcessID); 阅读全文
posted @ 2011-03-31 01:11 °ι 、曲 终 阅读(370) 评论(0) 推荐(0)
摘要: 简介象flashget、迅雷、BT等都有浮动窗口,能详细地显示下载的详细信息,该类型的窗口有一下几个特点:窗口无标题栏,窗口的大小跟位图一样 大。前端显示。在客户区内按下鼠标左键可以随意拖动窗口的位置。可以改变窗口的透明度。双击可以将主窗口激活,并显示。下面就该类型窗口 的各个功能实现予以说明。代码的详细说明窗口无标题栏,窗口的大小跟位图一样大。建立一个对话框资源,设置为POPUP类型,并取消Title Bar属性。在上面插入一个图片控件,设置为导入的位图。 //得到位图 CBitmap m_Bitmap; HBITMAP hBitmap = m_Logo.GetBitmap(); ASSER 阅读全文
posted @ 2011-03-31 01:10 °ι 、曲 终 阅读(225) 评论(0) 推荐(0)
摘要: FC中基于SDI和MDI的程序,默认情况下有快捷键资源,直接建立快捷键与消息的映射,就能实现程序的快捷键,而基于对话框的程序默认情况下没有快捷键资源,鉴于网友问到这个问题,下面我就分别用两种方法来实现。一是在PreTranslateMessage函数中,判断键盘的按键消息,比如快捷键是Ctrl + Q,我们就检测按键消息的Ctrl键和Q是否同时按下就可以了。//用PreTranslateMessage的方法,判断Ctrl+Q是否按下,按下就执行快捷键对应的操作if(pMsg->message == WM_KEYDOWN && pMsg->wParam == ' 阅读全文
posted @ 2011-03-31 01:07 °ι 、曲 终 阅读(483) 评论(0) 推荐(0)
摘要: 前段时间一直在想怎么样能让窗口变得更漂亮一点,更加吸引人呢?在网上也看到了不少高手们的做法,但对于我这种不喜欢太复杂的人来说,我不是很喜欢那 样写代码,GetSystemMetrics函数来得到各个边框的长度或宽度。。。。没几下,我的头就晕了,在查了许多资料以及实验后,我终于找到了一种 比较简单的美化窗口的方法,现在就拿出来献丑一下,觉得不好的就请跳过去吧。大家请看下面这张图:其实这张图已经很直观的表达了窗口内部的布局,有了这张图你觉得美化窗口还难吗?想怎么好看就可以怎么好看….<注:这张图是从网上搜索得来,十分感谢此作者,为我们提供了方便,在这里我只是拿这张图做一下参考>//取得 阅读全文
posted @ 2011-03-31 01:05 °ι 、曲 终 阅读(398) 评论(0) 推荐(0)
摘要: 对于warning C4005: 'WINVER' : macro redefinition的处理 在Windows.h中有如下定义: #ifndef WINVER #define WINVER 0x0400 #endif 如果你把#define WINVER 0x500置于#include <windows.h>之前,就不会出现警告. 需要包含的文件:#include "Winuser.h"HCURSOR GetCur(){ CURSORINFO hCur;// HCURSOR hCur; ZeroMemory(&hCur,sizeof 阅读全文
posted @ 2011-03-26 22:13 °ι 、曲 终 阅读(1008) 评论(1) 推荐(0)
摘要: 八、线程的同步 虽然多线程能给我们带来好处,但是也有不少问题需要解决。例如,对于像磁盘驱动器这样独占性系统资源,由于线程可以执行进程的任何代码段,且线程的运行是由系统调度自动完成的,具有一定的不确定性,因此就有可能出现两个线程同时对磁盘驱动器进行操作,从而出现操作错误;又例如,对于银行系统的计算机来说,可能使用一个线程来更新其用户数据库,而用另外一个线程来读取数据库以响应储户的需要,极有可能读数据库的线程读取的是未完全更新的数据库,因为可能在读的时候只有一部分数据被更新过。 使隶属于同一进程的各线程协调一致地工作称为线程的同步。MFC提供了多种同步对象,下面我们只介绍最常用的四种:临界区(CC 阅读全文
posted @ 2011-03-22 00:25 °ι 、曲 终 阅读(229) 评论(0) 推荐(0)
摘要: 五、MFC对多线程编程的支持 MFC中有两类线程,分别称之为工作者线程和用户界面线程。二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环。 工作者线程没有消息机制,通常用来执行后台计算和维护任务,如冗长的计算过程,打印机的后台打印等。用户界面线程一般用于处理独立于其他线程执行之外的用户输入,响应用户及系统所产生的事件和消息等。但对于Win32的API编程而言,这两种线程是没有区别的,它们都只需线程的启动地址即可启动线程来执行任务。 在MFC中,一般用全局函数AfxBeginThread()来创建并初始化一个线程的运行,该函数有两种重载形式,分别用于创建工作者线程 阅读全文
posted @ 2011-03-22 00:24 °ι 、曲 终 阅读(200) 评论(0) 推荐(0)
摘要: 七、线程间通讯 一般而言,应用程序中的一个次要线程总是为主线程执行特定的任务,这样,主线程和次要线程间必定有一个信息传递的渠道,也就是主线程和次要线程间要进行通信。这种线程间的通信不但是难以避免的,而且在多线程编程中也是复杂和频繁的,下面将进行说明。使用全局变量进行通信由于属于同一个进程的各个线程共享操作系统分配该进程的资源,故解决线程间通信最简单的一种方法是使用全局变量。对于标准类型的全局变量,我们建议使用volatile 修饰符,它告诉编译器无需对该变量作任何的优化,即无需将它放到一个寄存器中,并且该值可被外部改变。如果线程间所需传递的信息较复杂,我们可以定义一个结构,通过传递指向该结构的 阅读全文
posted @ 2011-03-22 00:24 °ι 、曲 终 阅读(178) 评论(0) 推荐(0)
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 28 下一页