WEB开发网
开发学院软件开发VC 《魔高一丈2.0》开发实例 阅读

《魔高一丈2.0》开发实例

 2006-07-19 11:35:31 来源:WEB开发网   
核心提示: 三、开发步骤:第0步、选用VC 6.0集成开发环境,第1步、由于建立全局钩子必须把钩子函数放在DLL里面,《魔高一丈2.0》开发实例(2),所以我们选择MFC AppWizard(DLL)创建一个新的项目,命名为“Mousehook”,又由于系统在调用callbac

三、开发步骤:

第0步、选用VC 6.0集成开发环境。

第1步、由于建立全局钩子必须把钩子函数放在DLL里面,所以我们选择MFC AppWizard(DLL)创建一个新的项目,命名为“Mousehook”,再选择选择MFC Extension DLL类型(为了方便嘛!)。为什么必须把全局钩子函数放在DLL里呢?这是因为系统会动态地调用你所添加的全局鼠标钩子,所有窗口消息数都会由于你添加了鼠标钩子而引起系统处理(何为处理?调用钩子函数也。)这必然需要操作系统能够从一个东东里动态地加入这段处理程序,而这个东东非DLL莫属。

第2步、在项目中加入Mousehook.h文件用以构造一个钩子类——CMousehook,具体如下:

class AFX_EXT_CLASS CMousehook:public CObject
{
public:
CMousehook();
~CMousehook();
BOOL starthook();//封装SetWindowsHookEx( int idHook, HOOK_PROC lpfn, HINSTANCE hMod,DWORD dwThreadID)用来安装钩子
BOOL stophook(); //封装UnhookWindowsHookEx( HHOOK hhk )用来卸载钩子
VOID SetCheck1(UINT i);//处理对话框的选择钩选框1
VOID SetCheck2(UINT i);//处理对话框的选择钩选框2
VOID SetCheck3(UINT i);//处理对话框的选择钩选框3
static BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam);//系统回调的钩子函数
VOID UseForExit();//退出程序时恢复所有隐藏窗口
};

这里我想特别地提一下EnumWindowsProc函数前的CALLBACK跟static,对于CALLBACK我想给大家一个特别江湖的解释其就是:凡是由你设计而却由Windows系统调用的函数,统称callback函数。这些函数都有一定的类型,以配合Windows的调用操作。——引用台湾侯师傅的话。他还说,某些Windows API函数会要求以callback函数(的函数地址)作为其参数之一。我们这里用到的又比如 SetWindowsHookEx( int idHook, HOOK_PROC lpfn, HINSTANCE hMod,DWORD dwThreadID)的第二个参数。这种API通常会在进行某种行为之后或满足某种状态的情况下调用其参数中的callback函数。又由于系统在调用callback函数的时候并不会借助任何对象去调用该callback函数,所以在用类来封装callback函数时,需要用static来使callback函数能够独立于对象而又属于类的成员函数。明白了不?(啊?地球人都知道呀!太伤自尊了!)

上一页  1 2 3 4  下一页

Tags:魔高一丈 开发实例

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接