谁能用通俗的语言解释以下名词:
1。句柄:
2。钩子:
请大家不吝赐教,我是个菜鸟,刚开始学vc++,以后还有很多问题。
谢谢。

解决方案 »

  1.   

    1.系统中唯一定义一个对象(如菜单、按钮等)的对象,本质上是一个指针,但是使用上与指针完全不同。从字面上说,“柄”其实就是拿住物体的东西,这里其实也一样。
    2。拦截某个对象的操作,使之优先通知并服务于你的程序。可以有各种不同的钩子如键盘、鼠标、消息钩子等,其实就是钩住这些对象的动作并且你可以自己处理,或者加入自己的操作,或者丢弃,或者pass给系统。
      

  2.   

    siphonelee(sifone)  讲得好
    同意
      

  3.   

    1.系统中唯一定义一个对象(如菜单、按钮等)的对象,本质上是一个指针,但是使用上与指针完全不同。从字面上说,“柄”其实就是拿住物体的东西,这里其实也一样。
    2。拦截某个对象的操作,使之优先通知并服务于你的程序。可以有各种不同的钩子如键盘、鼠标、消息钩子等,其实就是钩住这些对象的动作并且你可以自己处理,或者加入自己的操作,或者丢弃,或者pass给系统。-----------------------------------参靠《windows程序设计>
      

  4.   

    句柄(handle):
        在标准C库中句柄用来对文件输入输出。
    在Windows环境中,句柄是用来标识项目的,这些项目包括:
        *.模块(module)
        *.任务(task)
        *.实例(instance)
        *.文件(file)
        *.内存块(block of memory)
        *.菜单(menu)
        *.控制(control)
        *.字体(font)
        *.资源(resource),包括图标(icon),光标(cursor),字符串(string)等
        *.GDI对象(GDI object),包括位图(bitmap),画刷(brush),元文件(metafile),调色板(palette),画      笔(pen),区域(region),以及设备描述表(device context)。
        WINDOWS程序中并不是用物理地址来标识一个内存块,文件,任务或动态装入模块的,相反的,WINDOWS API给这些项目分配确定的句柄,并将句柄返回给应用程序,然后通过句柄来进行操作。窗口句柄:
        系统通过窗口句柄来在整个系统中唯一标识一个窗口,发送一个消息时必须指定一个窗口句柄表明该消息由那个窗口接收。而每个窗口都会有自己的窗口过程,所以用户的输入就会被正确的处理。-------------------
    钩子(Hook),是Windows消息处理机制的一个平台(point),应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。    钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。