用下面的声明:
WNDPROC m_lPrevProc;
因为 CallWindowProc 的一个参数类型是 WNDPROC。

解决方案 »

  1.   

    不行,我已经试过了,因为GetWindowLong(hWND,GWL_WNDPROC)返回的是long型,
    我用强制转换成WNDPROC也不行!唉......不想到C会这么难于理解.
      

  2.   

    typedef LRESULT (CALLBACK* WNDPROC)(HWND, UINT, WPARAM, LPARAM);
    WNDPROC无非是一个函数指针而已,与long转换应该不是问题吧。
    刚刚试过下面的代码:
    WNDPROC m_lPrevProc;
    m_lPrevProc=(WNDPROC)GetWindowLong(hWnd,GWL_WNDPROC);
      

  3.   

    edyang说得不错。
    WNDPROC m_lPrevProc;
    m_lPrevProc =(WNDPROC )SetWindowLong(hWND,GWL_WNDPROC,(DWORD)MyWinProc); 
    编译通过应该没问题。
      

  4.   

    我也试过了,还是在CallWindowProc该行上报错,跟上面一样,
    可是将它定义成FARPROC则没问题,但在其它程序调用该DLL会非法操作,
    真的搞不懂啦,帮帮我吧,大虾!!!!!!