Just picking up the 19.2.0 update and integrating it into a number of applications I manage, and I am getting a consistent crash in all the applications which use it. I am creating a property grid control in my application with standard code which has been there for many years:
if (!m_wndPropertyGrid.Create(CRect(0, 0, 10, 10), this, 101)) { TRACE(_T("Failed to create property grid control window\n")); return; } m_wndPropertyGrid.ShowToolBar(FALSE); ...
and I am now getting a crash down in the bowels of CJ Toolkit Pro 19.2:
CXTPPropertyGridView& CXTPPropertyGrid::GetGridView() const { if (NULL == m_pView) { m_pView = CreateView(); m_pView->m_pGrid = (CXTPPropertyGrid*)this; }
CXTPScrollablePropertyGridListBox* pScrollableView = DYNAMIC_DOWNCAST(CXTPScrollablePropertyGridListBox, m_pView); if (NULL != m_pView) { CXTPPropertyGridView* pEmbeddedView = DYNAMIC_DOWNCAST(CXTPPropertyGridView, pScrollableView->GetControl()); if (NULL != pEmbeddedView) { return *pEmbeddedView; } }
return *m_pView; }
pScrollableView is a null pointer in the above code and then the code attempts a call to pScrollableView->GetControl and promptly crashes. The call stack I have is as follows:
ToolkitPro1920vc160x64D.dll!CXTPScrollHost::GetEmbeddedControl() Line 90 C++ ToolkitPro1920vc160x64D.dll!CXTPScrollablePropertyGridListBox::GetControl() Line 96 C++ > ToolkitPro1920vc160x64D.dll!CXTPPropertyGrid::GetGridView() Line 358 C++ ToolkitPro1920vc160x64D.dll!CXTPPropertyGrid::OnSize(unsigned int nType, int cx, int cy) Line 890 C++ mfc140d.dll!CWnd::OnWndMsg(unsigned int message, unsigned __int64 wParam, __int64 lParam, __int64 * pResult) Line 2493 C++ ToolkitPro1920vc160x64D.dll!CXTPPropertyGrid::OnWndMsg(unsigned int message, unsigned __int64 wParam, __int64 lParam, __int64 * pResult) Line 1849 C++ mfc140d.dll!CWnd::WindowProc(unsigned int message, unsigned __int64 wParam, __int64 lParam) Line 2099 C++ mfc140d.dll!AfxCallWndProc(CWnd * pWnd, HWND__ * hWnd, unsigned int nMsg, unsigned __int64 wParam, __int64 lParam) Line 265 C++ mfc140d.dll!AfxWndProc(HWND__ * hWnd, unsigned int nMsg, unsigned __int64 wParam, __int64 lParam) Line 418 C++ mfc140d.dll!AfxWndProcBase(HWND__ * hWnd, unsigned int nMsg, unsigned __int64 wParam, __int64 lParam) Line 299 C++ user32.dll!UserCallWinProcCheckWow() Unknown user32.dll!DispatchClientMessage() Unknown user32.dll!__fnDWORD() Unknown ntdll.dll!00007ffd1c0bfde4() Unknown win32u.dll!0000023c50c21f24() Unknown user32.dll!VerNtUserCreateWindowEx() Unknown user32.dll!CreateWindowInternal() Unknown user32.dll!CreateWindowExA() Unknown mfc140d.dll!IsolationAwareCreateWindowExA(unsigned long dwExStyle, const char * lpClassName, const char * lpWindowName, unsigned long dwStyle, int X, int Y, int nWidth, int nHeight, HWND__ * hWndParent, HMENU__ * hMenu, HINSTANCE__ * hInstance, void * lpParam) Line 419 C++ mfc140d.dll!CWnd::CreateEx(unsigned long dwExStyle, const char * lpszClassName, const char * lpszWindowName, unsigned long dwStyle, int x, int y, int nWidth, int nHeight, HWND__ * hWndParent, HMENU__ * nIDorHMenu, void * lpParam) Line 727 C++ mfc140d.dll!CWnd::CreateEx(unsigned long dwExStyle, const char * lpszClassName, const char * lpszWindowName, unsigned long dwStyle, const tagRECT & rect, CWnd * pParentWnd, unsigned int nID, void * lpParam) Line 694 C++ ToolkitPro1920vc160x64D.dll!CXTPPropertyGrid::Create(const tagRECT & rect, CWnd * pParentWnd, unsigned int nID, unsigned long dwListStyle) Line 459 C++ internal-astrex-database-manager.exe!CNDEDataPropertyGridFormView::CreatePropertyGrid() Line 487 C++
I have also tried rebuilding 19.2.0 with the new XTP_SKINFRAMEWORK_USE_LEGACY_API_HOOK preprocessor macro but get the same crash.
This looks like some issue introduced in the new 19.2.0 release. BTW, I have tried the PropertyGrid -> GridSample sample but there are no crashes there.
Is there some extra initialization or setup code which I need to avoid this issue?
Any ideas?
|