我在onCreate中new了,代码中有

解决方案 »

  1.   

    你用((CCWZView*)((CMainFrame*)AfxGetMainWnd())->GetActiveView()->MoveWindow()试试!
      

  2.   

    因为OnSize在OnCreate之前调用,所以m_MyWnd没有初始化!!!
      

  3.   

    edrftgyh(老胡):我的CMyWnd不是从CView类继承来的,没有别的办法
      

  4.   

    什么时候提示Access Voilation,是在OnCreate() or OnSize()?你可以单步执行调试。若自己还不可以确定可以把程序EMAIL过来!
      

  5.   

    mmwhw1(黑人) :是在OnSize()时Access Voilation的,我的IsWindow(m_MyWnd)为False
      

  6.   

    你用MessageBOx();这个函数试一试,是不是OnCreate是在OnSize之前
    调用的,如果是这样的话,你可以,让OnSize();在一开始时不调用
    m_MyWnd->MoveWindow(0,0,cx,cy)函数,具体你可这样:
    定义一个BOOL变量m_bInit,初始化为FALSE;
    然后:
    void CMainFrame::OnSize(UINT nType, int cx, int cy) 
    {
    CFrameWnd::OnSize(nType, cx, cy);

    // TODO: Add your message handler code here
             if(m_bInit=TRUE)
            {
    m_MyWnd->MoveWindow(0,0,cx,cy);
             m_bInit=TRUE;
            }
    }
    这样就该可以了!可了后,说一声,
      

  7.   

    m_bInit有什么意义,OnSize()确实是在onCreate前调用
      

  8.   

    wm_size 在 wm_create之前发出,所以
    m_MyWnd->MoveWindow(0,0,cx,cy);语句中
    m_MyWnd指针无效。可改为:
    if (m_MyWnd)
      m_MyWnd->MoveWindow(0,0,cx,cy);当然m_MyWnd在CMainFrame构造函数中要置空。
      

  9.   

    m_bInited 在构造函数中初始化为 FALSE, 表示 MyWidow 已经创建.
    在 OnCreate中 的 m_MyWnd->Create 成功后 使为 TRUE;
    void CMainFrame::OnSize(UINT nType, int cx, int cy) 
    {
    CFrameWnd::OnSize(nType, cx, cy);

            if(m_bInited)
            {
       m_MyWnd->MoveWindow(0,0,cx,cy);
            }
    }
      

  10.   

    m_bInited 在构造函数中初始化为 FALSE, 表示 MyWidow 已经创建.
    在 OnCreate中 的 m_MyWnd->Create 成功后 使为 TRUE;
    void CMainFrame::OnSize(UINT nType, int cx, int cy) 
    {
    CFrameWnd::OnSize(nType, cx, cy);

            if(m_bInited)
            {
       m_MyWnd->MoveWindow(0,0,cx,cy);
            }
    }