Professional UI Solutions
Site Map   /  Register
 
 

Forum

Please Log In to post a new message or reply to an existing one. If you are not registered, please register.

NOTE: Some forums may be read-only if you are not currently subscribed to our technical support services.

Forums » Prof-UIS Tech Support » Deleting CExtTabbedToolControlBar Collapse All
Subject Author Date
Michael Clapp Aug 2, 2007 - 12:51 PM

I have having trouble deleting a CExtTabbedToolControlBar object that I’ve created in my mainframe class..

I’ve set the autodelete flag on when creating it:

    m_tabbar = new CAgtekTabBar();

    m_tabbar->Create(_T("Tab Bar"), this, ID_VIEW_TABBEDBAR);
    m_tabbar->m_bAutoDelete = true;
    m_tabbar->EnableDocking(CBRS_ALIGN_TOP | CBRS_ALIGN_BOTTOM);

    DockControlBar( m_tabbar, CBRS_ALIGN_TOP);
    ShowControlBar( m_tabbar,TRUE, FALSE);

In my mainframe OnDestroy, I get an unhandled exception when the tabbar is attempted to be deleted (verifying by inspected the window handle of the window to be deleted in CWnd::DestroyWindow()

The stack is:

    ProfUIS264nd.dll!CArray<CExtHookSink *,CExtHookSink *>::GetSize() Line 279 + 0x11 bytes    C++
    ProfUIS264nd.dll!CExtHookSink::HookChains_t::HookChainsWindowProc(unsigned int nMessage=130, unsigned int & wParam=0, long & lParam=0) Line 239 + 0xb bytes    C++
    ProfUIS264nd.dll!CExtHookSink::HookChains_t::g_HookWndProc(HWND__ * hWnd=0x00c01272, unsigned int nMessage=130, unsigned int wParam=0, long lParam=0) Line 287 + 0x14 bytes    C++
    user32.dll!7e418734()     
    [Frames below may be incorrect and/or missing, no symbols loaded for user32.dll]    
    user32.dll!7e41d05b()     
    user32.dll!7e41b4c0()     
    user32.dll!7e41dabd()     
    ntdll.dll!7c90eae3()     
    user32.dll!7e41daf6()     
    mfc80d.dll!CWnd::DestroyWindow() Line 993 + 0xd bytes    C++
>    Highway3D.exe!CExtNCW<CMDIFrameWnd>::DestroyWindow() Line 453    C++
    Highway3D.exe!CMainFrame::DestroyWindow() Line 325    C++
    mfc80d.dll!CFrameWnd::OnClose() Line 849    C++
    Highway3D.exe!CMainFrame::OnClose() Line 286    C++
    mfc80d.dll!CWnd::OnWndMsg(unsigned int message=16, unsigned int wParam=0, long lParam=0, long * pResult=0x0021f294) Line 2028    C++
    mfc80d.dll!CWnd::WindowProc(unsigned int message=16, unsigned int wParam=0, long lParam=0) Line 1741 + 0x20 bytes    C++
    Highway3D.exe!CExtNCW<CMDIFrameWnd>::WindowProc(unsigned int message=16, unsigned int wParam=0, long lParam=0) Line 413 + 0x14 bytes    C++
    mfc80d.dll!AfxCallWndProc(CWnd * pWnd=0x0e85f290, HWND__ * hWnd=0x00591130, unsigned int nMsg=16, unsigned int wParam=0, long lParam=0) Line 240 + 0x1c bytes    C++
    mfc80d.dll!AfxWndProc(HWND__ * hWnd=0x00591130, unsigned int nMsg=16, unsigned int wParam=0, long lParam=0) Line 389    C++
    mfc80d.dll!AfxWndProcBase(HWND__ * hWnd=0x00591130, unsigned int nMsg=16, unsigned int wParam=0, long lParam=0) Line 411 + 0x15 bytes    C++
    user32.dll!7e418734()     
    user32.dll!7e418816()     
    user32.dll!7e41c63f()     
    user32.dll!7e41f65d()     
    ProfUIS264nd.dll!CExtHookSink::HookChains_t::HookChainsWindowProc(unsigned int nMessage=16, unsigned int & wParam=0, long & lParam=0) Line 236 + 0x20 bytes    C++
    ProfUIS264nd.dll!CExtHookSink::HookChains_t::g_HookWndProc(HWND__ * hWnd=0x00591130, unsigned int nMessage=16, unsigned int wParam=0, long lParam=0) Line 287 + 0x14 bytes    C++
    user32.dll!7e418734()     
    user32.dll!7e418816()     
    user32.dll!7e41b4c0()     
    user32.dll!7e41b50c()     
    ntdll.dll!7c90eae3()     
    user32.dll!7e4194be()     
    user32.dll!7e41b42d()     
    user32.dll!7e4184fc()     
    user32.dll!7e41ba0e()     
    user32.dll!7e4184fc()     
    user32.dll!7e4185a4()     
    user32.dll!7e41d598()     
    uxtheme.dll!5ad73c20()     
    uxtheme.dll!5ad8e300()     
    uxtheme.dll!5ad71ac7()     
    uxtheme.dll!5ad7367a()     
    uxtheme.dll!5ad8e2d5()     
    user32.dll!7e42f11d()     
    user32.dll!7e43e535()     
    user32.dll!7e4308a6()     
    user32.dll!7e41b96b()     
    mfc80d.dll!CMDIFrameWnd::AssertValid() Line 385 + 0x1c bytes    C++
    mfc80d.dll!CThreadSlotData::GetThreadValue(int nSlot=2226356) Line 265    C++
    0263c798()    
    user32.dll!7e44f720()     
    mfc80d.dll!CMDIFrameWnd::DefWindowProcA(unsigned int nMsg=274, unsigned int wParam=61536, long lParam=10223642) Line 188    C++
    mfc80d.dll!CWnd::Default() Line 274    C++
    mfc80d.dll!CWnd::OnSysCommand(unsigned int __formal=61536, unsigned int __formal=61536) Line 460 + 0xf bytes    C++
    mfc80d.dll!CFrameWnd::OnSysCommand(unsigned int nID=61536, long lParam=10223642) Line 1046    C++
    mfc80d.dll!CWnd::OnWndMsg(unsigned int message=274, unsigned int wParam=61536, long lParam=10223642, long * pResult=0x0021fa70) Line 2056    C++
    mfc80d.dll!CWnd::WindowProc(unsigned int message=274, unsigned int wParam=61536, long lParam=10223642) Line 1741 + 0x20 bytes    C++
    Highway3D.exe!CExtNCW<CMDIFrameWnd>::WindowProc(unsigned int message=274, unsigned int wParam=61536, long lParam=10223642) Line 413 + 0x14 bytes    C++
    mfc80d.dll!AfxCallWndProc(CWnd * pWnd=0x0e85f290, HWND__ * hWnd=0x00591130, unsigned int nMsg=274, unsigned int wParam=61536, long lParam=10223642) Line 240 + 0x1c bytes    C++
    mfc80d.dll!AfxWndProc(HWND__ * hWnd=0x00591130, unsigned int nMsg=274, unsigned int wParam=61536, long lParam=10223642) Line 389    C++
    mfc80d.dll!AfxWndProcBase(HWND__ * hWnd=0x00591130, unsigned int nMsg=274, unsigned int wParam=61536, long lParam=10223642) Line 411 + 0x15 bytes    C++
    user32.dll!7e418734()     
    user32.dll!7e418816()     
    user32.dll!7e41c63f()     
    user32.dll!7e41f65d()     
    ProfUIS264nd.dll!CExtHookSink::HookChains_t::HookChainsWindowProc(unsigned int nMessage=274, unsigned int & wParam=61536, long & lParam=10223642) Line 236 + 0x20 bytes    C++
    ProfUIS264nd.dll!CExtHookSink::HookChains_t::g_HookWndProc(HWND__ * hWnd=0x00591130, unsigned int nMessage=274, unsigned int wParam=61536, long lParam=10223642) Line 287 + 0x14 bytes    C++
    user32.dll!7e418734()     
    user32.dll!7e418816()     
    user32.dll!7e4189cd()     
    user32.dll!7e4196c7()     
    mfc80d.dll!AfxInternalPumpMessage() Line 183    C++
    mfc80d.dll!CWinThread::PumpMessage() Line 896    C++
    mfc80d.dll!CWinThread::Run() Line 625 + 0xd bytes    C++
    mfc80d.dll!CWinApp::Run() Line 894    C++
    mfc80d.dll!AfxWinMain(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__ * hPrevInstance=0x00000000, char * lpCmdLine=0x00241f12, int nCmdShow=1) Line 47 + 0xd bytes    C++
    Highway3D.exe!WinMain(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__ * hPrevInstance=0x00000000, char * lpCmdLine=0x00241f12, int nCmdShow=1) Line 33    C++
    Highway3D.exe!__tmainCRTStartup() Line 589 + 0x35 bytes    C
    Highway3D.exe!WinMainCRTStartup() Line 414    C
    kernel32.dll!7c816fd7()     
    Highway3D.exe!C2DView::DrawPolyPlus(CDC * pDC=0x00630069, CPolyLines * pLines=0x0065004b, bool bPrinting=true) Line 673 + 0x11 bytes    C++
    Highway3D.exe!C3DView::EditStrataNames(bool bAllowDelete=true) Line 9317 + 0x37 bytes    C++
    15ff00b7()    




Michael Clapp Aug 2, 2007 - 4:49 PM

1) Yes, a similar crash occurs in TabbedBars if m_bAutoDelete is set after a tabbedToolControlBar is created:

    ntdll.dll!7c901230()     
    [Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]    
    ntdll.dll!7c96c943()     
    ntdll.dll!7c96cd80()     
    ntdll.dll!7c960af8()     
    kernel32.dll!7c85e9cf()     
    msvcr80d.dll!_CrtIsValidHeapPointer(const void * pUserData=0x01e70ec8) Line 2072    C++
    msvcr80d.dll!_free_dbg_nolock(void * pUserData=0x01e70ec8, int nBlockUse=0x00c00004) Line 1279 + 0x9 bytes    C++
    msvcr80d.dll!_free_dbg(void * pUserData=0x01e70ec8, int nBlockUse=0x00c00004) Line 1220 + 0xd bytes    C++
    mfc80d.dll!CObject::operator delete(void * p=0x01e70ec8) Line 42 + 0xf bytes    C++
>    ProfUIS264md.dll!CExtTabbedToolControlBar::`vector deleting destructor’() + 0x68 bytes    C++
    mfc80d.dll!CControlBar::PostNcDestroy() Line 204 + 0x21 bytes    C++
    ProfUIS264md.dll!CExtControlBar::PostNcDestroy() Line 8086    C++
    mfc80d.dll!CWnd::OnNcDestroy() Line 850    C++
    mfc80d.dll!CWnd::OnWndMsg(unsigned int message=0x00000082, unsigned int wParam=0x00000000, long lParam=0x00000000, long * pResult=0x0012e2a4) Line 2028    C++
    mfc80d.dll!CWnd::WindowProc(unsigned int message=0x00000082, unsigned int wParam=0x00000000, long lParam=0x00000000) Line 1741 + 0x20 bytes    C++
    mfc80d.dll!CControlBar::WindowProc(unsigned int nMsg=0x00000082, unsigned int wParam=0x00000000, long lParam=0x00000000) Line 504 + 0x14 bytes    C++
    ProfUIS264md.dll!CExtControlBar::WindowProc(unsigned int message=0x00000082, unsigned int wParam=0x00000000, long lParam=0x00000000) Line 8519    C++
    ProfUIS264md.dll!CExtToolControlBar::WindowProc(unsigned int message=0x00000082, unsigned int wParam=0x00000000, long lParam=0x00000000) Line 12651    C++
    ProfUIS264md.dll!CExtTabbedToolControlBar::WindowProc(unsigned int message=0x00000082, unsigned int wParam=0x00000000, long lParam=0x00000000) Line 511 + 0x14 bytes    C++
    mfc80d.dll!AfxCallWndProc(CWnd * pWnd=0x01e70ec8, HWND__ * hWnd=0x002c04a6, unsigned int nMsg=0x00000082, unsigned int wParam=0x00000000, long lParam=0x00000000) Line 240 + 0x1c bytes    C++
    mfc80d.dll!AfxWndProc(HWND__ * hWnd=0x002c04a6, unsigned int nMsg=0x00000082, unsigned int wParam=0x00000000, long lParam=0x00000000) Line 389    C++
    mfc80d.dll!AfxWndProcBase(HWND__ * hWnd=0x002c04a6, unsigned int nMsg=0x00000082, unsigned int wParam=0x00000000, long lParam=0x00000000) Line 411 + 0x15 bytes    C++
    user32.dll!7e418734()     
    user32.dll!7e41d05b()     
    user32.dll!7e41b4c0()     
    user32.dll!7e41dabd()     
    ntdll.dll!7c90eae3()     
    user32.dll!7e41daf6()     
    mfc80d.dll!CWnd::DestroyWindow() Line 993 + 0xd bytes    C++
    mfc80d.dll!CControlBar::DestroyWindow() Line 598    C++
    ProfUIS264md.dll!CExtControlBar::DestroyWindow() Line 8098    C++
    mfc80d.dll!CFrameWnd::DestroyDockBars() Line 1622    C++
    mfc80d.dll!CFrameWnd::OnDestroy() Line 856    C++
    mfc80d.dll!CWnd::OnWndMsg(unsigned int message=0x00000002, unsigned int wParam=0x00000000, long lParam=0x00000000, long * pResult=0x0012e9fc) Line 2028    C++
    mfc80d.dll!CWnd::WindowProc(unsigned int message=0x00000002, unsigned int wParam=0x00000000, long lParam=0x00000000) Line 1741 + 0x20 bytes    C++
    TabbedBars-md.exe!CExtNCW<CFrameWnd>::WindowProc(unsigned int message=0x00000002, unsigned int wParam=0x00000000, long lParam=0x00000000) Line 326 + 0x14 bytes    C++
    mfc80d.dll!AfxCallWndProc(CWnd * pWnd=0x01e70068, HWND__ * hWnd=0x003e0446, unsigned int nMsg=0x00000002, unsigned int wParam=0x00000000, long lParam=0x00000000) Line 240 + 0x1c bytes    C++
    mfc80d.dll!AfxWndProc(HWND__ * hWnd=0x003e0446, unsigned int nMsg=0x00000002, unsigned int wParam=0x00000000, long lParam=0x00000000) Line 389    C++
    mfc80d.dll!AfxWndProcBase(HWND__ * hWnd=0x003e0446, unsigned int nMsg=0x00000002, unsigned int wParam=0x00000000, long lParam=0x00000000) Line 411 + 0x15 bytes    C++
    user32.dll!7e418734()     
    user32.dll!7e418816()     
    user32.dll!7e41c63f()     
    user32.dll!7e41f65d()     
    ProfUIS264md.dll!CExtHookSink::HookChains_t::HookChainsWindowProc(unsigned int nMessage=0x00000002, unsigned int & wParam=0x00000000, long & lParam=0x00000000) Line 236 + 0x20 bytes    C++
    ProfUIS264md.dll!CExtHookSink::HookChains_t::g_HookWndProc(HWND__ * hWnd=0x003e0446, unsigned int nMessage=0x00000002, unsigned int wParam=0x00000000, long lParam=0x00000000) Line 287 + 0x14 bytes    C++
    user32.dll!7e418734()     
    user32.dll!7e418816()     
    user32.dll!7e41b4c0()     
    user32.dll!7e41b50c()     
    ntdll.dll!7c90eae3()     
    user32.dll!7e41daf6()     
    mfc80d.dll!CWnd::DestroyWindow() Line 993 + 0xd bytes    C++
    TabbedBars-md.exe!CMainFrame::DestroyWindow() Line 786    C++
    mfc80d.dll!CFrameWnd::OnClose() Line 849    C++
    mfc80d.dll!CWnd::OnWndMsg(unsigned int message=0x00000010, unsigned int wParam=0x00000000, long lParam=0x00000000, long * pResult=0x0012f144) Line 2028    C++
    mfc80d.dll!CWnd::WindowProc(unsigned int message=0x00000010, unsigned int wParam=0x00000000, long lParam=0x00000000) Line 1741 + 0x20 bytes    C++
    TabbedBars-md.exe!CExtNCW<CFrameWnd>::WindowProc(unsigned int message=0x00000010, unsigned int wParam=0x00000000, long lParam=0x00000000) Line 326 + 0x14 bytes    C++
    mfc80d.dll!AfxCallWndProc(CWnd * pWnd=0x01e70068, HWND__ * hWnd=0x003e0446, unsigned int nMsg=0x00000010, unsigned int wParam=0x00000000, long lParam=0x00000000) Line 240 + 0x1c bytes    C++
    mfc80d.dll!AfxWndProc(HWND__ * hWnd=0x003e0446, unsigned int nMsg=0x00000010, unsigned int wParam=0x00000000, long lParam=0x00000000) Line 389    C++
    mfc80d.dll!AfxWndProcBase(HWND__ * hWnd=0x003e0446, unsigned int nMsg=0x00000010, unsigned int wParam=0x00000000, long lParam=0x00000000) Line 411 + 0x15 bytes    C++
    user32.dll!7e418734()     
    user32.dll!7e418816()     
    user32.dll!7e41c63f()     
    user32.dll!7e41f65d()     
    ProfUIS264md.dll!CExtHookSink::HookChains_t::HookChainsWindowProc(unsigned int nMessage=0x00000010, unsigned int & wParam=0x00000000, long & lParam=0x00000000) Line 236 + 0x20 bytes    C++
    ProfUIS264md.dll!CExtHookSink::HookChains_t::g_HookWndProc(HWND__ * hWnd=0x003e0446, unsigned int nMessage=0x00000010, unsigned int wParam=0x00000000, long lParam=0x00000000) Line 287 + 0x14 bytes    C++
    user32.dll!7e418734()     
    user32.dll!7e418816()     
    user32.dll!7e4318e3()     
    user32.dll!7e41b4c0()     
    user32.dll!7e41b50c()     
    ntdll.dll!7c90eae3()     
    user32.dll!7e4194be()     
    user32.dll!7e41b42d()     
    user32.dll!7e4184fc()     
    user32.dll!7e4185a4()     
    user32.dll!7e41d598()     
    uxtheme.dll!5ad71af6()     
    user32.dll!7e41d4ee()     
    mfc80d.dll!CThreadLocalObject::GetData(CNoTrackObject * (void)* pfnCreateObject=0x003e0446) Line 419 + 0x11 bytes    C++
    user32.dll!7e42f11d()     
    user32.dll!7e41d4ee()     
    user32.dll!7e418734()     
    user32.dll!7e41d4ee()     
    user32.dll!7e41d4ee()     
    user32.dll!7e418816()     
    user32.dll!7e41d4ee()     
    user32.dll!7e41d4ee()     
    user32.dll!7e41c63f()     
    user32.dll!7e41d4ee()     
    user32.dll!7e41f65d()     
    user32.dll!7e41d4ee()     
    mfc80d.dll!CWnd::DefWindowProcA(unsigned int nMsg=0x00000112, unsigned int wParam=0x0000f060, long lParam=0x0096002e) Line 1029 + 0x20 bytes    C++
    mfc80d.dll!CWnd::Default() Line 274    C++
    mfc80d.dll!CWnd::OnSysCommand(unsigned int __formal=0x0000f060, unsigned int __formal=0x0000f060) Line 460 + 0xf bytes    C++
    mfc80d.dll!CFrameWnd::OnSysCommand(unsigned int nID=0x0000f060, long lParam=0x0096002e) Line 1046    C++
    mfc80d.dll!CWnd::OnWndMsg(unsigned int message=0x00000112, unsigned int wParam=0x0000f060, long lParam=0x0096002e, long * pResult=0x0012f9dc) Line 2056    C++
    mfc80d.dll!CWnd::WindowProc(unsigned int message=0x00000112, unsigned int wParam=0x0000f060, long lParam=0x0096002e) Line 1741 + 0x20 bytes    C++
    TabbedBars-md.exe!CExtNCW<CFrameWnd>::WindowProc(unsigned int message=0x00000112, unsigned int wParam=0x0000f060, long lParam=0x0096002e) Line 326 + 0x14 bytes    C++
    mfc80d.dll!AfxCallWndProc(CWnd * pWnd=0x01e70068, HWND__ * hWnd=0x003e0446, unsigned int nMsg=0x00000112, unsigned int wParam=0x0000f060, long lParam=0x0096002e) Line 240 + 0x1c bytes    C++
    mfc80d.dll!AfxWndProc(HWND__ * hWnd=0x003e0446, unsigned int nMsg=0x00000112, unsigned int wParam=0x0000f060, long lParam=0x0096002e) Line 389    C++
    mfc80d.dll!AfxWndProcBase(HWND__ * hWnd=0x003e0446, unsigned int nMsg=0x00000112, unsigned int wParam=0x0000f060, long lParam=0x0096002e) Line 411 + 0x15 bytes    C++
    user32.dll!7e418734()     
    user32.dll!7e418816()     
    user32.dll!7e41c63f()     
    user32.dll!7e41f65d()     
    ProfUIS264md.dll!CExtHookSink::HookChains_t::HookChainsWindowProc(unsigned int nMessage=0x00000112, unsigned int & wParam=0x0000f060, long & lParam=0x0096002e) Line 236 + 0x20 bytes    C++
    ProfUIS264md.dll!CExtHookSink::HookChains_t::g_HookWndProc(HWND__ * hWnd=0x003e0446, unsigned int nMessage=0x00000112, unsigned int wParam=0x0000f060, long lParam=0x0096002e) Line 287 + 0x14 bytes    C++
    user32.dll!7e418734()     
    user32.dll!7e418816()     
    user32.dll!7e4189cd()     
    user32.dll!7e4196c7()     
    mfc80d.dll!AfxInternalPumpMessage() Line 183    C++
    mfc80d.dll!CWinThread::PumpMessage() Line 896    C++
    mfc80d.dll!CWinThread::Run() Line 625 + 0xd bytes    C++
    mfc80d.dll!CWinApp::Run() Line 894    C++
    mfc80d.dll!AfxWinMain(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__ * hPrevInstance=0x00000000, char * lpCmdLine=0x00151f11, int nCmdShow=0x00000001) Line 47 + 0xd bytes    C++
    TabbedBars-md.exe!WinMain(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__ * hPrevInstance=0x00000000, char * lpCmdLine=0x00151f11, int nCmdShow=0x00000001) Line 33    C++
    TabbedBars-md.exe!__tmainCRTStartup() Line 589 + 0x35 bytes    C
    TabbedBars-md.exe!WinMainCRTStartup() Line 414    C
    kernel32.dll!7c816fd7()     


2) If I comment out the m_tabbar->m_bAutoDelete , then I also see the crash

Technical Support Aug 6, 2007 - 8:04 AM

Would you send the modified version of the TabbedBars sample (which crashes) to us?

Technical Support Aug 2, 2007 - 2:22 PM

Would you tell us if it is possible to reproduce this problem using the TabbedBars sample? Does it disappear if you comment out the m_tabbar->m_bAutoDelete = true; code (disregard some memory leaks in this case, just try to reproduce the crash)?