Re: Frame, View, Crash
Ajay Kalra wrote:
Dont know whats going on here. The info you have shown here is not
different than a generic project. I first thought thread state may be
an issue but it appears to be what you have for me as well. This is not
a DLL is it? If it is, what type is it?
No, this is a normal MFC application. (Well, as normal a large, getting
on in years, application can be.)
I'm going to do some cleaning up and see if the bug goes bye bye. But I
hate fixing something and not being sure what I fixed. I'll do the
'might be' one at a time like setting the parent of the doc.
Here is some more:
....
I keep looking at the code, I wrote it quite a while back. The doc is
derived from:
class CRichDoc : public CRichEditDoc
I use CRichDoc everywhere without a problem.
And in initialize I:
doc->SetOwner( parent );
Which is NULL. (The more I look at this code the more I want to go back
and clean stuff up. Some of it doesn't look so good. Like I don't need
to pass the view instead of using doc->GetView( ). ) I haven't delved
into CRichEditDoc to see if it uses the owner, but the pointer error is
not on NULL, it is 0x08!? (or it could be 0x00 + 0x08 that is doing it.)
Here is some more, but I don't see anything that would smash memory.
This only happens on initialize, there is no message mapped for
Update_cModels. It was meant for a future that never happened.
void CSummaryDoc::InitialViewUpdate( CRichView* pView )
{
pView->SetPaperSize( CSize( 9360, 8000 ) );
pView->SetWrap( CRichEditView::WrapToTargetDevice );
CRichFrame* pFrame= static_cast<CRichFrame*>( pView->GetParentFrame( ) );
if( !cDialogBar.Create( pFrame, IDD_BAR_DROPDOWN, WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER
| CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC,
AFX_IDW_CONTROLBAR_LAST - 1 ) )
{
TRACE( "Failed to create dialog bar m_wndDialogBar\n" );
return;
}
cDialogBar.EnableDocking( CBRS_ALIGN_TOP );
pFrame->DockControlBar( &cDialogBar );
HEDockBarNextTo( &cDialogBar, &pFrame->formatBarRE );
cModels.SubclassDlgItem( IDC_BAR_COMBO, &cDialogBar );
AfxGetWinPos( _T("SummaryEditor"), pView );
Update_cModels( NULL, NULL );
OnCbnSelchange( );
}
LRESULT CSummaryDoc::Update_cModels( WPARAM /**/, LPARAM /**/ )
{
cModels.Clear( );
for( int i= 0; i < oProject.GetModelCount( ); ++i )
{
CString t;
MODEL_INFO& info= oProject.mathModels.info[i];
cModels.InsertString( i, info.GetTitle( ) );
if( lastSelected == info.uid )
cModels.SetCurSel( i );
}
if( cModels.GetCurSel( ) == -1 )
cModels.SetCurSel( 0 );
return false;
}
Ajay
Thanks, Dan.