[vtkusers] RE:Comment on: *The solution* Re: Access violations in MFC sample

Andrew J. P. Maclean a.maclean at acfr.usyd.edu.au
Tue Dec 11 17:22:52 EST 2001


This is strange. In int vtkMFCRenderView::OnCreate(LPCREATESTRUCT
lpCreateStruct)
I have:
{
  if (vtkMFCView::OnCreate(lpCreateStruct) == -1)
    return -1;
  
  // TODO: Add your specialized creation code here
  this->RenderWindow->SetParentId(lpCreateStruct->hwndParent);
  this->RenderWindow->SetWindowId(this->m_hWnd);
  this->RenderWindow->WindowInitialize();
  return 0;
}

The key is to call vtkMFCView::OnCreate(...) before setting the
Parent/Window ID and then initializing.

As I said, I have no access violations at all with the above paradigm.
After checking with the debugger, everything seems to be initialized and
allocated correctly.

I don't have: virtual void OnInitialUpdate(); and I am not sure that the
OnInitialUpdate is necessary.

___________________________________________
Andrew J. P. Maclean
Postal:
Australian Centre for Field Robotics
The Rose Street Building J04
The University of Sydney  2006  NSW
AUSTRALIA
Room:
106
Phone:
+61 2 9351 3283
Fax:
+61 2 9351 7474

http://www.acfr.usyd.edu.au/
___________________________________________


-----Original Message-----
From: vtkusers-admin at public.kitware.com
[mailto:vtkusers-admin at public.kitware.com] On Behalf Of João Filipe de
Castro Ferreira
Sent: Wednesday, 12 December 2001 02:53
To: a.maclean at acfr.usyd.edu.au
Cc: Lista do VTK
Subject: [vtkusers] RE: *The solution* Re: Access violations in MFC
sample

Ok! Here are the new versions of OnCreate and OnInitialUpdate for
vtkMFCRenderView:

vtkMFCRenderView.h

<snip>
...

// Operations
public:

...

	virtual void OnInitialUpdate();
<snip>

vtkMFCRenderView.cpp

<snip>
...

int vtkMFCRenderView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (vtkMFCView::OnCreate(lpCreateStruct) == -1)
		return -1;

	// TODO: Add your specialized creation code here
	this->RenderWindow->SetParentId(lpCreateStruct->hwndParent);

	// These are the old declarations which are to be transfered to
OnInitialUpdate()

	//this->RenderWindow->SetWindowId(this->m_hWnd);

	//this->RenderWindow->WindowInitialize();


	return 0;
}

void vtkMFCRenderView::OnInitialUpdate()
{
	vtkMFCView::OnInitialUpdate();

	// TODO: Add your specialized creation code here

	this->RenderWindow->SetWindowId(this->m_hWnd);

	this->RenderWindow->WindowInitialize();
}

...

<snip>

 I am still surprised by the fact that you don't get any warnings of
access
violations in your VC++ debugger's output window; of course, if you say
so I
believe it - its just that, since I had found similar threads in the
archive, I thought it would be recurring... Sorry about that! :))

	
Cheers,
	
JFC

-----Mensagem original-----
De: Andrew J. P. Maclean [mailto:a.maclean at acfr.usyd.edu.au]
Enviada: segunda-feira, 10 de Dezembro de 2001 22:07
Para: 'Joao Filipe de Castro Ferreira'
Assunto: RE: *The solution* Re: Access violations in MFC sample


Yes, I would love to see a code snippet. As I have said, I haven't had
nay problems. Especially in relation to access violations.

___________________________________________
Andrew J. P. Maclean
Postal:
Australian Centre for Field Robotics
The Rose Street Building J04
The University of Sydney  2006  NSW
AUSTRALIA
Room:
106
Phone:
+61 2 9351 3283
Fax:
+61 2 9351 7474

http://www.acfr.usyd.edu.au/
___________________________________________


-----Original Message-----
From: Joao Filipe de Castro Ferreira [mailto:jfilipe at isr.uc.pt]
Sent: Tuesday, 11 December 2001 07:23
To: a.maclean at acfr.usyd.edu.au
Cc: vtkusers at public.kitware.com
Subject: *The solution* Re: Access violations in MFC sample

 Dear Andrew,

 I regret to tell you that I used that exact version (which only
corrects
the interactor problem), but the problem remained. The question is, if
you
don't pay attention to your VC++ debugger (not so unusual a thing to
happen ;)) ), you will miss those access violations and the program will
*seem* too work without a problem.

 I have, thus, decided to collect my MFC wits and put them to use to
solve
the problem, which I have noticed by thumbling through the list's
archives
to be a recurring one, and, voila!, have solved it thus:

 The OnCreate override is not the correct place to get
the m_hWnd handle from the *not yet visible* window for the RenderWindow
member. The *correct* procedure is to move the respective line from the
OnCreate override to a newly overriden OnInitialUpdate member, without
forgetting to *call the base class member first*. That's it, really!

 If anybody still has any doubt on this subject, please write and I will
submit code snippets from my own modified MFCSample.


					Cheers,
						JFC


From: a.maclean at acfr.usyd.edu.au

> Get the most recent version of Sample from a nightly download. I have
no
troubles with it.







More information about the vtkusers mailing list