自己写的窗口类中包含窗口回调函数(为static),这个函数怎么调用其他的函数(非static):
例:
class MyWindow
{
public:
    WNDCLASS WndClass;
    ....
    static LRESULT CALLBACK MyWndProc(HWND,UINT,WPARAM,LPARAM);
    int FuncAdd(int,int);
    virtual int FuncGetData(int);
}

解决方案 »

  1.   

    用类全局变量传递this指针!就可以了!
      

  2.   

    调用回调函数时利用参数传送其所在类的指针给它,在回调函数中再把这个参数强制转换为MyWindow *类型。然后就可以调用该类的public成员。
      

  3.   

    class MyWindow;
    static MyWindow *me;
    class MyWindow
    {
    public:
        WNDCLASS WndClass;
        ....
        static LRESULT CALLBACK MyWndProc(HWND,UINT,WPARAM,LPARAM);
        int FuncAdd(int,int);
        virtual int FuncGetData(int);
    }
    MyWindow::MyWindow():me(this){/*...*/}//将me指向当前类指针
    LRESULT CALLBACK MyWndProc(HWND,UINT,WPARAM,LPARAM){
    /*...*/
    me->FuncGetData(1);//这样就可以调用了
    /*...*/
    }