MFC单文档分窗后,各窗口之间的传值问题
vtk吧
全部回复
仅看楼主
level 12
rabbitbride 楼主
艹,累死人不偿命。这里感谢我的老师:baidu~ google~
或许是本人比较笨,每成功一点点,就像一个人在翻越一座大山。
离山远的时候,还不觉得高,越近越发现,自己面对的是何等的高度~~。哎。
1、布局如下:(这里用到的是CSplitterWnd m_wndSplitter;)
2、我想实现的是:
点button1,打开自定义dcm文件夹;点button2,在右边显示dcm图像堆栈。
3、button1的实现:
(直接上代码)
TCHAR szPath[_MAX_PATH];
BROWSEINFO bi;
bi.hwndOwner=m_hWnd;
bi.pidlRoot=NULL;
bi.lpszTitle=_T("选择DICOM文件夹:");
bi.pszDisplayName=szPath;
bi.ulFlags=BIF_RETURNONLYFSDIRS;
bi.lpfn=NULL;
bi.lParam=NULL;
LPITEMIDLIST pItemIDList=SHBrowseForFolder(&bi);
if(pItemIDList)
{TCHAR szPath[_MAX_PATH];
if(SHGetPathFromIDList(pItemIDList,szPath))
{
m_path=szPath;
UpdateData(FALSE);
}
IMalloc* pMalloc;
if(SHGetMalloc(&pMalloc)!=NOERROR)
{TRACE(_T("无法取得外壳程序的接口\n"));}
pMalloc->Free(pItemIDList);
if(pMalloc)pMalloc->Release();
}
//AfxMessageBox(m_path);
if (m_path==""){MessageBox("请确认路径是否有效!");return;}
else
{
reader->SetDataByteOrderToLittleEndian();
reader->SetDirectoryName(m_path);
reader->SetDataSpacing (3.2,3.2, 2.5);
reader->Update();
MessageBox("文件打开成功!文件路径为:"+m_path+";确定后可进行下一步操作!");
}

2012年06月14日 04点06分 1
level 12
rabbitbride 楼主
4、button2的实现
if (m_path=="")
{MessageBox("请选择有效文件!");
return;
}
CMainFrame * pMainFrm = (CMainFrame*)AfxGetMainWnd();
CView1 *m_this = (CView1*)pMainFrm->m_wndSplitter.GetPane(0,1);
//注意这里,上面这两行功能就是在无文档视图类之间的传值
m_this->m_path1=m_path;
m_this->Invalidate();
2012年06月14日 04点06分 2
level 12
rabbitbride 楼主
5、view1视图中的显示部分。首先,在视图中绘制VTK显示窗口。
int CView1::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CScrollView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: 在此添加您专用的创建代码
this->pRenderWin->SetParentId(m_hWnd);
this->pRenderWin->SetPosition(0,0);
this->m_pRenWinIn->SetRenderWindow(this->pRenderWin);
m_pRenWinIn->Initialize();
return 0;
}
2012年06月14日 04点06分 3
level 12
rabbitbride 楼主
5、其次,在OnDraw()中绘制DCM图像
if (m_path1=="") //这个就是链接button2的开关
{
//MessageBox("请确认文件~~!");
return;
}
else{
if ( !this->m_pRenWinIn->GetInitialized() )
this->OnPinpu();
}
2012年06月14日 04点06分 4
level 12
rabbitbride 楼主
结果如图:
2012年06月14日 05点06分 5
level 12
rabbitbride 楼主
6、最后注意几个问题:(怕的不是error,怕的是直接0x0000000,[瀑布汗~]
1)在分窗的问题上,一定要注意窗口的分配,不要出逻辑上的错误。每个分块都要给定一个窗口;
2)在使用工具包的问题上,一定要注意 工具包编译的版本问题,如:debug/release,MD/MT,vs6.0/2005/2008,还有工具包自身的版本;
3)在程序连接工具包时,代码完整问题,如:头文件--定义--声明--引用--回收。
注意声明一定要放在使用之前。注意回收释放内存是的顺序。
4)暂时木有了~~嘿嘿
2012年06月14日 05点06分 6
level 12
rabbitbride 楼主
单文档初始最大化: m_nCmdShow=SW_SHOWMAXMIZED //最大化
2012年06月14日 06点06分 7
求楼主分享学习VTK+MFC联合编程的经验,我现在苦于没有教程,没有资料,求楼主帮忙。
2012年10月15日 12点10分
回复 恶魔_铃铛 :哎,好好编译VTK中的example,里面有现成的例子[Love],看下图
2012年10月16日 00点10分
level 12
rabbitbride 楼主
VTK里的例子还是很不错的~~~都是开发者写的。
有什么需要的,尽管说哈,表客气~~~
2012年10月16日 00点10分 8
吧主好 cmake编译vtk7.0 的时候并没出现这个MFC选项,能用以上这个程序吗?
2016年12月07日 01点12分
@桃鼠朝l 难道7.0不支持MFC了?应该有的呀,你肯定[开心]粗心了,boy
2016年12月08日 04点12分
level 1
Mark
2017年08月31日 16点08分 9
1