我在Create一个窗体时,第一次Create之后,立即执行到OnCreate事件里,但是把窗体关掉之后,第二次Create时,怎么也执行不到OnCreate里,或者已经Create一个窗体,再Create这个类,同样执行不到OnCreate事件里,不知何故,请大家帮忙.

解决方案 »

  1.   

    第二次Create你检查一下返回值,你确定成功了?
      

  2.   

    就你现在说的,看不出问题。能再详细一点?比如,你的是什么窗口,你在OnCreate中做了什么?
      

  3.   

    BOOL CTabView::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd)
    {
    if(!CBCGPTabView::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd,0))
    return FALSE; return TRUE;
    }int CTabView::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
    if (CBCGPTabView::OnCreate(lpCreateStruct) == -1)
    return -1; // TODO:  在此添加您专用的创建代码 return 0;
    }//在这里掉用
    m_pTabView = new CTabView();
    if(!m_pTabView->Create(NULL,m_pProcItem->m_strItemNameCn,WS_CHILD | WS_VISIBLE | WS_OVERLAPPED,rt,this))
    return;返回值是TRUE,第二次就是执行不到OnCreate里去
      

  4.   

    我检查了一下,因为CBCGPTabView::m_wndTabs是在CBCGPTabView::OnCreate里创建的,如果执行不到这里去,那么CBCGPTabView::m_wndTabs的窗体就不能创建现在就是不知道为什么执行不进去
      

  5.   

    大家都不用想了,我找到了错误的原因了
    因为
    private: 
    static AFX_MSGMAP_ENTRY _messageEntries[2]; 
    protected: 
    static const AFX_MSGMAP messageMap; 
    virtual const AFX_MSGMAP* GetMessageMap() const; 
    virtual const void AddMessageEntry(UINT uMessage,UINT nNotifyCode,UINT nID,UINT nLastID);
    中的
    messageMap为静态成员,而我的消息映射均为动态的,所以行不通