[vtkusers] cant not creat vtkMFCWindow

Pham Sy Quy phamsyquybk at gmail.com
Thu Sep 17 11:14:49 EDT 2009


I guess something not right in my project so i tried separated simple  
project:
create a new VS project, Dialog Base type, add a picture control onto  
dialog
name it as IDC_VTKVIEW, declare pvtkMFCWindow as a vtkMFCWindow*
and use following in initdialog.

this->pvtkMFCWindow = new vtkMFCWindow(this->GetDlgItem(IDC_MAINWIND));

The same runtime error occurred.

Are there anyone know what wrong, what i did miss?
Plz help.


On Thu, 10 Sep 2009 08:44:42 +0900, Pham Sy Quy <phamsyquybk at gmail.com>  
wrote:

> Thanks for reply,
>
> It is main application thread (i used new prject wizard to make a dialog  
> based project)
> This window is create in OnInitDialog() function of my main dialog (like  
> vtkDLG example)
> it looks like:
>
> -------------------------------------------------
> BOOL CNoseMatchDlg::OnInitDialog()
> {
> 	CDialog::OnInitDialog();
>
> 	//....
>
> 	CMenu* pSysMenu = GetSystemMenu(FALSE);
> 	if (pSysMenu != NULL)
> 	{
> 		//...some thing here
> 	}
>
> 	// Set the icon for this dialog.  The framework does this automatically
> 	//  when the application's main window is not a dialog
> 	SetIcon(m_hIcon, TRUE);			// Set big icon
> 	SetIcon(m_hIcon, FALSE);		// Set small icon
>
> 	CWnd* pViewWind = this->GetDlgItem(IDC_STATIC_VIEW);
> 	test = new vtkMFCWindow(pViewWind);
>
> 	return TRUE;  // return TRUE  unless you set the f`ocus to a control
> }
> ---------------------------------------------------------
>
>
>
> On Thu, 10 Sep 2009 08:09:48 +0900, John Drescher <drescherjm at gmail.com>  
> wrote:
>
>> On Wed, Sep 9, 2009 at 6:50 PM, Pham Sy Quy <phamsyquybk at gmail.com>  
>> wrote:
>>> Hi all,
>>>
>>> I have a problem with creating vtkMFCWindow object.
>>> I refered to vtkDLG examples (VTKExamples/vtkDLG)and make a similar  
>>> project
>>> trying to
>>> display vtk's ouput in an area on Dialog (use Picture Control, set
>>> OnwerDraw)
>>>
>>> test = new vtkMFCWindow(this->GetDlgItem(IDC_STATIC_VIEW));
>>>
>>> here test declared as: vtkMFCWindow* ; this statement is called in
>>> OnInitDialog()
>>>
>>> I got a runtime assert in afxwin1.inl
>>>
>>> _AFXWIN_INLINE HINSTANCE AFXAPI AfxGetInstanceHandle()
>>>        { ASSERT(afxCurrentInstanceHandle != NULL);
>>>                return afxCurrentInstanceHandle; }
>>>
>>> here is call stack
>>>
>>> mfc90d.dll!AfxGetInstanceHandle()  Line 21 + 0x20 bytes C++
>>> mfc90d.dll!AfxEndDeferRegisterClass(long fToRegister=1)  Line 4509 +  
>>> 0x5
>>> bytes   C++
>>> mfc90d.dll!CWnd::PreCreateWindow(tagCREATESTRUCTA & cs={...})  Line  
>>> 733 +
>>> 0x7 bytes       C++
>>> mfc90d.dll!CWnd::CreateEx(unsigned long dwExStyle=0, const char *
>>> lpszClassName=0x00000000, const char * lpszWindowName=0x1076db08,  
>>> unsigned
>>> long dwStyle=1409286144, int x=0, int y=0, int nWidth=1, int nHeight=1,
>>> HWND__ * hWndParent=0x00070fe8, HMENU__ * nIDorHMenu=0xffffffff, void *
>>> lpParam=0x00000000)  Line 699 + 0x11 bytes      C++
>>> mfc90d.dll!CWnd::Create(const char * lpszClassName=0x00000000, const  
>>> char *
>>> lpszWindowName=0x1076db08, unsigned long dwStyle=1409286144, const  
>>> tagRECT &
>>> rect={...}, CWnd * pParentWnd=0x02dd8614, unsigned int nID=4294967295,
>>> CCreateContext * pContext=0x00000000)  Line 757 C++
>>> vtkMFC.dll!vtkMFCWindow::vtkMFCWindow(CWnd * pcWnd=0x02dd8614)  Line  
>>> 77 +
>>> 0x2c bytes      C++
>>>
>>> Did i miss something?
>>> Please help!
>>>
>>
>> Are you trying to create this window in a dll or a thread that is not
>> the same as the main application thread?
>>
>> John
>
>


-- 
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/



More information about the vtkusers mailing list