📄 myioplugin.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 + -