在注册窗口类时,需要注册一个消息的回调函数
  WNDCLASSEX wcex;
  wcex.style = CS_HREDRAW | CS_VREDRAW;
  wcex.lpfnWndProc = (WNDPROC)WndProc;
  ...我现在想将这个函数指针指向我自定义的一个类方法中去  wcex.lpfnWndProc = (WNDPROC)ClassA.WndProc;这样做是不行的,因为在注册窗口时ClassA还没有产生,这个类里面的方法也还没有分配空间,所以会报错,如果将这个类里面的方法写成static时,虽然可以生成窗口,但在这个静态方法里面也不能调用属于这个类的其它方法。windows的消息处理函数怎样才能注册到我自定义的这个类下?

解决方案 »

  1.   

    用这个函数lpfnOldWndProc = SetWindowLong(hWnd, GWL_WNDPROC, Class.WndProc);
      

  2.   

    要用类的成员函数直接做消息回调函数不知道可行否(类的成员函数有隐含的this指针参数造成类型不匹配)
    不过可以让WndProc函数调用你的类成员函数
    LRESULT CALLBACK WndProc(...)
    {
        if(pClassA)  //pClassA is a global pointer of ClassA
            return pClassA->WndProc(...);
    }
      

  3.   

    vocanicy:
    你的这个函数是怎么样使用啊?
      

  4.   

    可以定义一个类的全局对象,通过一个静态成员函数或者全局函数来调用这个类的功能,MFC也是使用类似这样的方法。
      

  5.   

    看这里:
    http://blog.csdn.net/ringphone/archive/2004/09/28/118883.aspx