⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 myioplugin.cpp

📁 3DMed Plugins 是MITK的配套例子
💻 CPP
字号:
// MyIOPlugin.cpp: implementation of the CMyIOPlugin class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "IOPlugin.h"
#include "MyIOPlugin.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//PluginsSDK头文件
#include "medVolume.h"

//MITK头文件
#include "mitkBMPReader.h"
#include "mitkVolume.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CMyIOPlugin::CMyIOPlugin()
{

}

CMyIOPlugin::~CMyIOPlugin()
{

}

bool CMyIOPlugin::Show(void)
{
	//MFC 的规定,必须先调用这个宏.
	AFX_MANAGE_STATE(AfxGetStaticModuleState());	

	//使用MFC 提供的打开文件对话框.
	CFileDialog dlg(TRUE,
		            ".bmp", 
					NULL, 
					OFN_HIDEREADONLY | 
					OFN_OVERWRITEPROMPT | 
					OFN_ALLOWMULTISELECT,
		            "BMP文件(*.bmp)|*.bmp||", 
					NULL);

	//CFileDialog 用于存储文件名的默认缓冲区
	//太小,在选择多文件时可能溢出,因此需要
	//设置额外的缓冲区来存储文件名
	char *fileNamesBuf = new char[512 * _MAX_PATH];
	fileNamesBuf[0] = '\0';
	DWORD maxBytes = 512 * _MAX_PATH;
	dlg.m_ofn.lpstrFile = fileNamesBuf;
	dlg.m_ofn.nMaxFile = maxBytes;
	
	//如果用户选择了文件并点“确定”按钮.
	if(dlg.DoModal() == IDOK)
	{
		mitkBMPReader *aReader = new mitkBMPReader;

//		::AfxMessageBox("reader created.");

		//循环得到用户选中的每个文件名,
		//并将其加入到mitkBMPReader 中.
		POSITION pos = dlg.GetStartPosition();
		CString szFileName;
		while(pos)
		{
			szFileName = dlg.GetNextPathName(pos);		
			aReader->AddFileName(szFileName);
		}
			
		//像素间距应该是在读取文件之前由用户输入的,
		//这里为简化起见直接设置为1.0.
		aReader->SetSpacingX(1.0f);
		aReader->SetSpacingY(1.0f);
		aReader->SetSpacingZ(1.0f);
	
		//运行mitkBMPReader 读取文件.
		aReader->Run();

//		::AfxMessageBox("reader Run finished.");
	
		//生成输出的数据.
		m_Data = new medVolume;	
		m_Data->SetData(aReader->GetOutput());		
		m_Data->SetFileName(szFileName);
		m_Data->SetName("My BMP Files");
	
		//删除mitkBMPReader 对象
		aReader->Delete();
		return true;		
	}
			
	return false;
}

IMPLEMENT_VOLUME_IMPORT(CMyIOPlugin, "My BMP Plugin")

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -