?? 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 + -