VS2008
我刚开始用hook。
想写一个程序,用hook处理键盘消息。
发现要把处理过程的主要函数传到SetWindowsHookEx的第二个参数里,我原来写的处理过程的函数是封装在类里的普通函数,如果传如要改成static,太破坏原来类的解构了。
怎么办呢?另外,请问各位高手:碰到windowsAPI中要传函数这种事情,你们怎么办?
我只能在类中用static的函数
有没有更好,更系统的面向对象的办法?

解决方案 »

  1.   

    我原来写的处理过程的函数是封装在类里的普通函数,如果传如要改成static,太破坏原来类的解构了。
    怎么办呢?
    ================
    据我所知,钩子的处理函数只能是类的静态成员函数或是全局函数。
      

  2.   

    要知道,世界上本没有类,有的只是一个个属性和元素。与其说静态变量破坏了类的结构,不如说类只是将一些元素组合起来。
    比如说将整个地球写成一个类Earth,类里面有很多元素,人类,山脉,森林,草原等等。
    但是,地球只有一个,不可能每个Earth类实例,都有一个地球元素,所以,这个地球元素,要不是全局的,要不就是静态成员,以表示只有一个这个含义。
      

  3.   

    地球只有一个,行星可有好多呀。地球应该继承自行星吧。
    写成static函数后
    1.前面不能加virtual
    2.只能调用static变量所有类的优势几乎都没了。
    windows API也真陈旧,都什么年代了还用C函数接口
      

  4.   

    要么静态static,要么友元,要么是全局
      

  5.   

    是啊,都什么年代了,还要我们人类编程,还得手工输入代码,有问题还得上CSDN来问,真是太落后。
      

  6.   

    其实就是因为VC编译的时候 被这我们往类里的函数里加了一个this指针。
    听说BC有一种编译方法可以把类里的函数当函数指针传入C的参数中。