我有一个MFC程序,它是基于对话框的,里面有一个继承了CScrollBar的类CSkinScrollBar,来实现滚动条的自绘。这个MFC工程也就仅仅这个显示了CSkinScrollBar的功能。现在我需要把MFC的CSkinScrollBar改为WTL的类CWtlScrollBar。现在已经基本改好了,除了一个函数CSkinScrollBar::WindowProc,这个WindowProc是CSkinScrollBar自己重写了CWnd的虚函数virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam),而我却在WTL中找不到对应的函数可以改写。请问如何能改写完WindowProc,谢谢!MFC中的类声明:
class CSkinScrollBar : public CScrollBarWTL中的类声明:
class CWtlScrollBar : public CWindowImpl<CWtlScrollBar, CScrollBar>谁想看源代码,给我留言,我把源代码email给你。
谢谢!

解决方案 »

  1.   

    在类中添加一个成员函数:
    virtual WNDPROC GetWindowProc()
    {
        return CWtlScrollBar::WindowProc;
    }修改一下窗口过程的代码,要改成静态函数,而且参数要多一个:
    static LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);实现要注意:
    LRESULT CALLBACK CWtlScrollBar::WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
      CWtlScrollBar* pThis = (CWtlScrollBar*)hWnd;  // 做你要做的事情  return CWindowImpl<CWtlScrollBar, CScrollBar>::WindowProc(hWnd,uMsg,wParam,lParam);
    }