由CWnd派生的窗口类,在创建时,都需要调用CWnd::Create()或CWnd::CreateEx()。我想做一个窗口类,CWnd派生的,也想做一个类似CWnd的Create函数,可以由派生类调用。应该怎么做?必须是静态的方法吗?

解决方案 »

  1.   

    重载Create函数,在函数内加入你所需的功能
      

  2.   

    重载Create函数,在函数内自己创建窗口或者调用CWnd::Create();
    重载Create函数的形参可以自己定义例如:
    BOOL Create(CWnd* pParentWnd);
    BOOL Create(CWnd* pParentWnd,CRect rtWnd);
    .......
      

  3.   

    一定要定义成虚函数Virtual,否则,派生类就不能再重载定义了
      

  4.   

    谢谢各位。我写了一下,不知道对不对?
    class CPriWnd : public CWnd
    {
    virtual BOOL Create(...);
    }BOOL CPriWnd::Create(...)
    {
    BOOL bResult = CWnd::CreateEx(....);
    }//////////////////////////////////////class CPriPriWnd : public CPriWnd
    {
    BOOL CreateNew(...);
    }BOOL CPriPriWnd::CreateNew(...)
    {
    BOOL bResult = CPriWnd::Create(...);
    }这样子对不对?
      

  5.   

    当然对,不过这样会更明确一些:
    class CPriPriWnd : public CPriWnd
    {
    BOOL Create(...);
    }BOOL CPriPriWnd::Create(...)
    {
       ... // you can do something at here 
    BOOL bResult = CPriWnd::Create(...);
       ... // you can do something at here 
    }