我用MFC向导生成一个SDI程序。
然后我添加一个新类,新类派生自CTabView。
我在MainFrame.h中声明一个CTabView类的对象并在窗口创建的时候创建一个TabView子窗口。但是问题来了,每次关闭窗口,都会出现堆访问异常。我知道如果使用new创建这个对象,就不会出现此种情况。但是我现在想静态声明这个对象,不想用new的方式,应该怎么做呢。谢谢高手。

解决方案 »

  1.   

    这不是new不new的问题,你原先声明的CTabView对象是CMainFrame的成员变量还是全局变量?声明一个CTabView类的对象并在窗口创建的时候创建一个TabView子窗口。
    ======
    声明为CTabView子类的对象.
      

  2.   

    关闭窗口,出错,估计是你窗口关闭的代码有问题,而不是new的问题
      

  3.   

    试试下面这样创建TabView子窗口。case WM_CREATE:        {            HWND hTabView = CreateWindow(_T("SysTabControl32"), _T("TabView"), WS_CHILD|WS_VISIBLE,                0, 0, 300, 200, hWnd, NULL, hInst, NULL);            TCITEM ti = {0};            ti.mask = TCIF_TEXT;            TCHAR szText[100] = {0};            ti.pszText = szText;            ti.cchTextMax = 100;            for(int i=0; i<3; i++)            {                _stprintf(szText, _T("Label %d"), i+1);                SendMessage(hTabView, TCM_INSERTITEM, i, (LPARAM)(LPTCITEM)&ti);            }        }        break;