Hello.
I start programs such as AfxBeginThread in CExtButton.
When AfxBeginThread is finished
It is terminated abnormally at the following place.
-----------------------------------------------------------------
LRESULT lResult =
::CallWindowProc(
pWNDPROC,
hWndHooked,
nMessage,
wParam,
lParam
);
if( ::IsWindow( hWndHooked ) )
{
nSinkCount = (int)m_HookSinkArray.GetSize();
for( nSinkIdx = 0; nSinkIdx < nSinkCount; nSinkIdx++ )
{
CExtHookSink * pHookSink =
terminated abnormally -----> m_HookSinkArray[ nSinkIdx ];
if( pHookSink == NULL )
continue;
pHookSink->OnPostHookWndMsg(
lResult,
m_hWndHooked,
nMessage,
wParam,
lParam
);
} // for( nSinkIdx = 0; nSinkIdx < nSinkCount; nSinkIdx++ )
} // if( ::IsWindow( hWndHooked ) )
return lResult;
};
}; // struct CExtHookSink::HookChains_t
-----------------------------------------------------------------
Call Func
File=[ExtToolControlBar.cpp],Func=[UINT CExtBarButton::GetStyle() const]
File=[ExtToolControlBar.cpp],Func=[void CExtToolControlBar::SetButtonStyle(int nIndex, UINT nStyle)]
File=[ExtToolControlBar.cpp],Func=[CExtBarButton * CExtToolControlBar::_GetButtonPtr(int nIndex) const]
File=[ExtToolControlBar.cpp],Func=[UINT CExtBarButton::GetStyle() const]
File=[ExtToolControlBar.cpp],Func=[UINT CExtToolControlBar::GetButtonID(int nIndex) const]
File=[ExtToolControlBar.cpp],Func=[CExtBarButton * CExtToolControlBar::_GetButtonPtr(int nIndex) const]
File=[ExtToolControlBar.cpp],Func=[UINT CExtBarButton::GetCmdID(]
File=[ExtCmdManager.cpp],Func=[CExtCmdManager * CExtCmdManager::CExtCmdManagerAutoPtr::operator -> ()]
File=[ExtCmdManager.cpp],Func=[__EXT_MFC_SAFE_LPCTSTR CExtCmdManager::ProfileNameFromWnd(]
File=[ExtCmdManager.cpp],Func=[CExtCmdManager * CExtCmdManager::CExtCmdManagerAutoPtr::operator -> ()]
File=[ExtCmdManager.cpp],Func=[CExtCmdItem * CExtCmdManager::CmdGetPtr(]
File=[ExtCmdManager.cpp],Func=[CExtCmdProfile * CExtCmdManager::ProfileGetPtr(]
File=[ExtCmdManager.cpp],Func=[CExtCmdItem * CExtCmdProfile::CmdGetPtr(]
File=[ExtToolControlBar.cpp],Func=[CExtBarButton * CExtToolControlBar::_GetButtonPtr(int nIndex) const]
File=[ExtToolControlBar.cpp],Func=[void CExtBarButton::OnUpdateCmdUI(]
File=[ExtToolControlBar.cpp],Func=[CExtToolControlBar * CExtBarButton::GetBar()]
File=[ExtToolControlBar.cpp],Func=[bool CExtBarButton::IsSeparator() const]
File=[ExtToolControlBar.cpp],Func=[UINT CExtBarButton::GetStyle() const]
File=[ExtHook.cpp],Func=[LRESULT CALLBACK CExtHookSink::HookChains_t::g_HookWndProc(]
File=[ExtTabPageContainerWnd.cpp],Func=[bool CExtTabPageContainerWnd::OnHookWndMsg(]
File=[ExtHook.cpp],Func=[bool CExtHookSink::OnHookWndMsg(]
File=[ExtComboBox.cpp],Func=[LRESULT CExtComboBox::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) ]
File=[ExtComboBox.cpp],Func=[LRESULT CExtComboBoxBase::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) ]
File=[ExtHook.cpp],Func=[void CExtHookSink::OnPostHookWndMsg(]
File=[ExtHook.cpp],Func=[LRESULT CALLBACK CExtHookSink::HookChains_t::g_HookWndProc(]
File=[ExtTabPageContainerWnd.cpp],Func=[bool CExtTabPageContainerWnd::OnHookWndMsg(]
File=[ExtHook.cpp],Func=[bool CExtHookSink::OnHookWndMsg(]
File=[ExtButton.cpp],Func=[LRESULT CExtButton::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) ]
File=[ExtButton.cpp],Func=[CExtPopupMenuTipWnd * CExtButton::OnAdvancedPopupMenuTipWndGet() const]
File=[ExtHook.cpp],Func=[void CExtHookSink::OnPostHookWndMsg(]
File=[ExtHook.cpp],Func=[LRESULT CALLBACK CExtHookSink::HookChains_t::g_HookWndProc(]
File=[ExtTabPageContainerWnd.cpp],Func=[bool CExtTabPageContainerWnd::OnHookWndMsg(]
File=[ExtHook.cpp],Func=[bool CExtHookSink::OnHookWndMsg(]
File=[ExtButton.cpp],Func=[LRESULT CExtButton::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) ]
File=[ExtButton.cpp],Func=[CExtPopupMenuTipWnd * CExtButton::OnAdvancedPopupMenuTipWndGet() const]
File=[ExtHook.cpp],Func=[void CExtHookSink::OnPostHookWndMsg(]
-----------------------------------------------------------------
This malfunction is for release and always occurs.
Had better I prepare for a sample program?