📄 framemain.cpp
字号:
// FrameMain.cpp : implementation file//#include "stdafx.h"#include "fusion.h"#include "FrameMain.h"#include "FusionGlobal.h"#include "FusionEnum.h"#include "FMDocVR.h"#include "SplitterXY.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// RxFrameMainRxFrameMain::RxFrameMain(){ m_pFMWndLoad = NULL; m_n3DFMatrix = 0; m_n3DFSeries = 0; m_b3DFMPR = FALSE; m_n3DFLocalMin = -1; m_n3DFLocalMax = -1; m_nTBCurMode = BTN_ZOOM; m_pSpFrame3DF0_X1 = NULL; m_pSpFrame3DF0_Y1 = NULL; m_pSpFrame3DF0_Y2 = NULL; m_pSpFrame3DF1_X1 = NULL; for(int i = 0; i < 3; i++) { m_pFMWndVR[i] = NULL; m_pFMWnd3DMPR[i] = NULL; m_pLocalizerManager[i] = NULL; m_pFMWnd3DLocalA[i] = NULL; m_pFMWnd3DLocalC[i] = NULL; m_pFMWnd3DLocalS[i] = NULL; }}RxFrameMain::~RxFrameMain(){}BEGIN_MESSAGE_MAP(RxFrameMain, RxFrameWnd) //{{AFX_MSG_MAP(RxFrameMain) ON_WM_CREATE() ON_WM_SETFOCUS() ON_WM_DESTROY() ON_WM_PAINT() ON_COMMAND(IDTB_PAN, OnPan) ON_COMMAND(IDTB_ZOOM, OnZoom) ON_COMMAND(IDTB_CROP, OnCrop) ON_COMMAND(IDTB_FITTING, OnFitting) ON_COMMAND(IDTB_RESET, OnReset) ON_COMMAND(IDTB_3DMPR_BASIC, On3dmprBasic) ON_COMMAND(IDTB_REGIST_MUTUAL, OnRegistMutual) ON_COMMAND(IDTB_REGIST_CROSS, OnRegistCross) ON_COMMAND(IDTB_REGIST_MI, OnRegistMi) ON_COMMAND(IDTB_3DOP, On3DOP) ON_UPDATE_COMMAND_UI(IDTB_PAN, OnUpdatePan) ON_UPDATE_COMMAND_UI(IDTB_ZOOM, OnUpdateZoom) ON_UPDATE_COMMAND_UI(IDTB_CROP, OnUpdateCrop) ON_UPDATE_COMMAND_UI(IDTB_3DMPR_BASIC, OnUpdate3dmprBasic) ON_UPDATE_COMMAND_UI(IDTB_REGIST_MUTUAL, OnUpdateRegistMutual) ON_UPDATE_COMMAND_UI(IDTB_REGIST_CROSS, OnUpdateRegistCross) ON_UPDATE_COMMAND_UI(IDTB_REGIST_MI, OnUpdateRegistMi) ON_UPDATE_COMMAND_UI(IDTB_3DOP, OnUpdate3DOP) //}}AFX_MSG_MAP ON_MESSAGE_VOID(UM_INITIALUPDATE, OnInitialUpdate)END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// RxFrameMain message handlersBOOL RxFrameMain::PreCreateWindow(CREATESTRUCT& cs) { cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS, ::LoadCursor(NULL, IDC_ARROW), NULL, NULL); cs.dwExStyle |= WS_EX_CLIENTEDGE; return RxFrameWnd::PreCreateWindow(cs);}void RxFrameMain::OnInitialUpdate(){ Frame3DF_InitSplitter(); CRect rcFixedLoad; RxGetMainFrame()->GetFMWndRectLoad(rcFixedLoad); m_pFMWndLoad->MoveWindow(rcFixedLoad); m_pFMWndLoad->SendMessage(UM_INITIALUPDATE);}int RxFrameMain::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (RxFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; DWORD dwStyle, dwRxStyle; dwStyle = WS_CHILD|WS_CLIPSIBLINGS|WS_CLIPCHILDREN; dwRxStyle = 0; m_pFMWndLoad = new RxFMWndLoad; CreateFMWnd(dwStyle, dwRxStyle, m_pFMWndLoad, NULL, IDF_MAIN_WND_LOAD); dwStyle = WS_CHILD|WS_CLIPSIBLINGS|WS_CLIPCHILDREN; m_pSpFrame3DF0_X1 = new RxSplitterX; m_pSpFrame3DF0_X1->Create(NULL, NULL, dwStyle, CRect(0,0,0,0), this, IDF_MAIN_SPB_3DF0_X1); m_pSpFrame3DF0_Y1 = new RxSplitterY; m_pSpFrame3DF0_Y1->Create(NULL, NULL, dwStyle, CRect(0,0,0,0), this, IDF_MAIN_SPB_3DF0_Y1); m_pSpFrame3DF0_Y2 = new RxSplitterY; m_pSpFrame3DF0_Y2->Create(NULL, NULL, dwStyle, CRect(0,0,0,0), this, IDF_MAIN_SPB_3DF0_Y2); m_pSpFrame3DF1_X1 = new RxSplitterX; m_pSpFrame3DF1_X1->Create(NULL, NULL, dwStyle, CRect(0,0,0,0), this, IDF_MAIN_SPB_3DF1_X1);/* dwStyle = WS_CHILD|WS_CLIPSIBLINGS|WS_CLIPCHILDREN; dwRxStyle = WS_RX_CAPTION; m_pFMWndVR[0] = new RxFMWndVR(RXSERIES_REF); CreateFMWnd(dwStyle, dwRxStyle, m_pFMWndVR[0], _T("Volume Rendering(R)"), IDF_MAIN_WND_VR_R); m_pFMWndVR[1] = new RxFMWndVR(RXSERIES_FLT); CreateFMWnd(dwStyle, dwRxStyle, m_pFMWndVR[1], _T("Volume Rendering(F)"), IDF_MAIN_WND_VR_F); m_pFMWndVR[2] = new RxFMWndVR(RXSERIES_COM); CreateFMWnd(dwStyle, dwRxStyle, m_pFMWndVR[2], _T("Volume Rendering(C)"), IDF_MAIN_WND_VR_C); m_pFMWnd3DMPR[0] = new RxFMWnd3DMPR(RXSERIES_REF); CreateFMWnd(dwStyle, dwRxStyle, m_pFMWnd3DMPR[0], _T("Volume Rendering(R) - MPR"), IDF_MAIN_WND_3DMPR_R); m_pFMWnd3DMPR[1] = new RxFMWnd3DMPR(RXSERIES_FLT); CreateFMWnd(dwStyle, dwRxStyle, m_pFMWnd3DMPR[1], _T("Volume Rendering(F) - MPR"), IDF_MAIN_WND_3DMPR_F); m_pFMWnd3DMPR[2] = new RxFMWnd3DMPR(RXSERIES_COM); CreateFMWnd(dwStyle, dwRxStyle, m_pFMWnd3DMPR[2], _T("Volume Rendering(C) - MPR"), IDF_MAIN_WND_3DMPR_C); dwRxStyle = WS_RX_CAPTION|WS_RX_LOCALIZER; m_pFMWnd3DLocalA[0] = new RxFMWndLocalizer(RXSERIES_REF); CreateFMWnd(dwStyle, dwRxStyle, m_pFMWnd3DLocalA[0], _T("Axial(R)"), IDF_MAIN_WND_3DLOCALA_R); m_pFMWnd3DLocalA[1] = new RxFMWndLocalizer(RXSERIES_FLT); CreateFMWnd(dwStyle, dwRxStyle, m_pFMWnd3DLocalA[1], _T("Axial(F)"), IDF_MAIN_WND_3DLOCALA_F); m_pFMWnd3DLocalA[2] = new RxFMWndLocalizer(RXSERIES_COM); CreateFMWnd(dwStyle, dwRxStyle, m_pFMWnd3DLocalA[2], _T("Axial(C)"), IDF_MAIN_WND_3DLOCALA_C); m_pFMWnd3DLocalC[0] = new RxFMWndLocalizer(RXSERIES_REF); CreateFMWnd(dwStyle, dwRxStyle, m_pFMWnd3DLocalC[0], _T("Coronal(R)"), IDF_MAIN_WND_3DLOCALC_R); m_pFMWnd3DLocalC[1] = new RxFMWndLocalizer(RXSERIES_FLT); CreateFMWnd(dwStyle, dwRxStyle, m_pFMWnd3DLocalC[1], _T("Coronal(F)"), IDF_MAIN_WND_3DLOCALC_F); m_pFMWnd3DLocalC[2] = new RxFMWndLocalizer(RXSERIES_COM); CreateFMWnd(dwStyle, dwRxStyle, m_pFMWnd3DLocalC[2], _T("Coronal(C)"), IDF_MAIN_WND_3DLOCALC_C); m_pFMWnd3DLocalS[0] = new RxFMWndLocalizer(RXSERIES_REF); CreateFMWnd(dwStyle, dwRxStyle, m_pFMWnd3DLocalS[0], _T("Sagittal(R)"), IDF_MAIN_WND_3DLOCALS_R); m_pFMWnd3DLocalS[1] = new RxFMWndLocalizer(RXSERIES_FLT); CreateFMWnd(dwStyle, dwRxStyle, m_pFMWnd3DLocalS[1], _T("Sagittal(F)"), IDF_MAIN_WND_3DLOCALS_F); m_pFMWnd3DLocalS[2] = new RxFMWndLocalizer(RXSERIES_COM); CreateFMWnd(dwStyle, dwRxStyle, m_pFMWnd3DLocalS[2], _T("Sagittal(C)"), IDF_MAIN_WND_3DLOCALS_C); // localizer manager狼 member牢 m_pMPRAgent客 3俺狼 view甫 积己棺 汲沥(困俊辑 积己茄 轰狼 器牢磐父 措涝)茄促. for(int i = 0; i < 3; i++){ m_pLocalizerManager[i] = new RxLocalizerManager(i); m_pLocalizerManager[i]->Attach3ViewsToManager(m_pFMWnd3DLocalA[i], m_pFMWnd3DLocalC[i], m_pFMWnd3DLocalS[i]); }*/ m_bEdgeDraw = false; m_bRefSegmented = false; m_bFloatSegmented = false; return 0;}void RxFrameMain::OnDestroy() { RxFrameWnd::OnDestroy(); if(m_pLocalizerManager[0]) delete m_pLocalizerManager[0]; if(m_pLocalizerManager[1]) delete m_pLocalizerManager[1]; if(m_pLocalizerManager[2]) delete m_pLocalizerManager[2];}void RxFrameMain::OnPaint() { CPaintDC dc(this); // device context for painting CRect rcClipBox; dc.GetClipBox(rcClipBox); CBrush brush, *pOldBrush; brush.CreateSolidBrush(RGB( 0, 0, 0)); pOldBrush = dc.SelectObject(&brush); dc.PatBlt(rcClipBox.left, rcClipBox.top, rcClipBox.Width(), rcClipBox.Height(), PATCOPY); dc.SelectObject(pOldBrush); brush.DeleteObject(); // Do not call RxFrameWnd::OnPaint() for painting messages}BOOL RxFrameMain::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) { // first pump through pane if (RxFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo)) return TRUE; RxFMWnd *pActiveWnd = RxGetActiveWnd(); // then pump through active Window. if(pActiveWnd != NULL && pActiveWnd->OnCmdMsg(nID, nCode, pExtra, pHandlerInfo)) return TRUE; return FALSE;}void RxFrameMain::OnSetFocus(CWnd* pOldWnd) { RxFMWnd *pActiveWnd = RxGetActiveWnd(); if (pActiveWnd != NULL) pActiveWnd->SetFocus(); else RxFrameWnd::OnSetFocus(pOldWnd);}/////////////////////////////////////////////////////////////////////////////void RxFrameMain::CreateFMWnd(DWORD dwStyle, DWORD dwRxStyle, RxFMWnd *pWnd, LPCTSTR lpszWindowName, UINT nID){ pWnd->CreateRx(dwStyle, dwRxStyle, CRect(0,0,0,0), this, nID); pWnd->SetWindowText(lpszWindowName);}void RxFrameMain::OnOpenDicom(){ int volX, volY, volZ; RxVolumeData *pVolumeData; for (int nSeries = 0; nSeries < 2; nSeries ++) { pVolumeData = RxGetVolumeData(nSeries); pVolumeData->GetBigVolumeDmsn(&volX, &volY, &volZ); } DWORD dwStyle = WS_CHILD|WS_CLIPSIBLINGS|WS_CLIPCHILDREN; DWORD dwRxStyle = WS_RX_CAPTION; if(m_pFMWndVR[0]) m_pFMWndVR[0]->DestroyWindow(); m_pFMWndVR[0] = new RxFMWndVR(RXSERIES_REF); CreateFMWnd(dwStyle, dwRxStyle, m_pFMWndVR[0], _T("Volume Rendering(R)"), IDF_MAIN_WND_VR_R); if(m_pFMWndVR[1]) m_pFMWndVR[1]->DestroyWindow(); m_pFMWndVR[1] = new RxFMWndVR(RXSERIES_FLT); CreateFMWnd(dwStyle, dwRxStyle, m_pFMWndVR[1], _T("Volume Rendering(F)"), IDF_MAIN_WND_VR_F); if(m_pFMWndVR[2]) m_pFMWndVR[2]->DestroyWindow(); m_pFMWndVR[2] = new RxFMWndVR(RXSERIES_COM); CreateFMWnd(dwStyle, dwRxStyle, m_pFMWndVR[2], _T("Volume Rendering(C)"), IDF_MAIN_WND_VR_C); if(m_pFMWnd3DMPR[0]) m_pFMWnd3DMPR[0]->DestroyWindow(); m_pFMWnd3DMPR[0] = new RxFMWnd3DMPR(RXSERIES_REF); CreateFMWnd(dwStyle, dwRxStyle, m_pFMWnd3DMPR[0], _T("Volume Rendering(R) - MPR"), IDF_MAIN_WND_3DMPR_R); if(m_pFMWnd3DMPR[1]) m_pFMWnd3DMPR[1]->DestroyWindow(); m_pFMWnd3DMPR[1] = new RxFMWnd3DMPR(RXSERIES_FLT); CreateFMWnd(dwStyle, dwRxStyle, m_pFMWnd3DMPR[1], _T("Volume Rendering(F) - MPR"), IDF_MAIN_WND_3DMPR_F); if(m_pFMWnd3DMPR[2]) m_pFMWnd3DMPR[2]->DestroyWindow(); m_pFMWnd3DMPR[2] = new RxFMWnd3DMPR(RXSERIES_COM); CreateFMWnd(dwStyle, dwRxStyle, m_pFMWnd3DMPR[2], _T("Volume Rendering(C) - MPR"), IDF_MAIN_WND_3DMPR_C); dwRxStyle = WS_RX_CAPTION|WS_RX_LOCALIZER; if(m_pFMWnd3DLocalA[0]) m_pFMWnd3DLocalA[0]->DestroyWindow(); m_pFMWnd3DLocalA[0] = new RxFMWndLocalizer(RXSERIES_REF); CreateFMWnd(dwStyle, dwRxStyle, m_pFMWnd3DLocalA[0], _T("Axial(R)"), IDF_MAIN_WND_3DLOCALA_R); if(m_pFMWnd3DLocalA[1]) m_pFMWnd3DLocalA[1]->DestroyWindow(); m_pFMWnd3DLocalA[1] = new RxFMWndLocalizer(RXSERIES_FLT); CreateFMWnd(dwStyle, dwRxStyle, m_pFMWnd3DLocalA[1], _T("Axial(F)"), IDF_MAIN_WND_3DLOCALA_F); if(m_pFMWnd3DLocalA[2]) m_pFMWnd3DLocalA[2]->DestroyWindow(); m_pFMWnd3DLocalA[2] = new RxFMWndLocalizer(RXSERIES_COM); CreateFMWnd(dwStyle, dwRxStyle, m_pFMWnd3DLocalA[2], _T("Axial(C)"), IDF_MAIN_WND_3DLOCALA_C); if(m_pFMWnd3DLocalC[0]) m_pFMWnd3DLocalC[0]->DestroyWindow(); m_pFMWnd3DLocalC[0] = new RxFMWndLocalizer(RXSERIES_REF); CreateFMWnd(dwStyle, dwRxStyle, m_pFMWnd3DLocalC[0], _T("Coronal(R)"), IDF_MAIN_WND_3DLOCALC_R); if(m_pFMWnd3DLocalC[1]) m_pFMWnd3DLocalC[1]->DestroyWindow(); m_pFMWnd3DLocalC[1] = new RxFMWndLocalizer(RXSERIES_FLT); CreateFMWnd(dwStyle, dwRxStyle, m_pFMWnd3DLocalC[1], _T("Coronal(F)"), IDF_MAIN_WND_3DLOCALC_F); if(m_pFMWnd3DLocalC[2]) m_pFMWnd3DLocalC[2]->DestroyWindow(); m_pFMWnd3DLocalC[2] = new RxFMWndLocalizer(RXSERIES_COM); CreateFMWnd(dwStyle, dwRxStyle, m_pFMWnd3DLocalC[2], _T("Coronal(C)"), IDF_MAIN_WND_3DLOCALC_C); if(m_pFMWnd3DLocalS[0]) m_pFMWnd3DLocalS[0]->DestroyWindow(); m_pFMWnd3DLocalS[0] = new RxFMWndLocalizer(RXSERIES_REF); CreateFMWnd(dwStyle, dwRxStyle, m_pFMWnd3DLocalS[0], _T("Sagittal(R)"), IDF_MAIN_WND_3DLOCALS_R); if(m_pFMWnd3DLocalS[1]) m_pFMWnd3DLocalS[1]->DestroyWindow(); m_pFMWnd3DLocalS[1] = new RxFMWndLocalizer(RXSERIES_FLT); CreateFMWnd(dwStyle, dwRxStyle, m_pFMWnd3DLocalS[1], _T("Sagittal(F)"), IDF_MAIN_WND_3DLOCALS_F); if(m_pFMWnd3DLocalS[2]) m_pFMWnd3DLocalS[2]->DestroyWindow(); m_pFMWnd3DLocalS[2] = new RxFMWndLocalizer(RXSERIES_COM); CreateFMWnd(dwStyle, dwRxStyle, m_pFMWnd3DLocalS[2], _T("Sagittal(C)"), IDF_MAIN_WND_3DLOCALS_C); // localizer manager狼 member牢 m_pMPRAgent客 3俺狼 view甫 积己棺 汲沥(困俊辑 积己茄 轰狼 器牢磐父 措涝)茄促. for(int i = 0; i < 3; i++){ if(m_pLocalizerManager[i]) delete m_pLocalizerManager[i]; m_pLocalizerManager[i] = new RxLocalizerManager(i); m_pLocalizerManager[i]->Attach3ViewsToManager(m_pFMWnd3DLocalA[i], m_pFMWnd3DLocalC[i], m_pFMWnd3DLocalS[i]); } Frame3DF_InitSplitter(); Frame3DF_InitVRWnd();}// 徘捞 函版瞪 版快void RxFrameMain::OnSwitchToMainMenu(BOOL bActive, int nOldMainMenuID, int nCurMainMenuID){ if(!bActive) // 徘捞 绝绢龙 版快 { if(nOldMainMenuID == IDF_TOP_LOAD) { m_pFMWndLoad->ShowWindow(SW_HIDE); } else if(nOldMainMenuID == IDF_TOP_3DFUSION) { if(m_n3DFSeries == RXSERIES_COM && m_pFMWndVR[RXSERIES_COM]->GetBtnMixing()) m_pFMWndVR[RXSERIES_COM]->ShowDlgMixing(FALSE); Frame3DF_FrameHide(); } } else // 徘捞 唱鸥朝 版快 { int nSeries = RxGetCurSeries(); if(nCurMainMenuID == IDF_TOP_LOAD) { RxSetActiveWnd(m_pFMWndLoad); m_pFMWndLoad->ShowWindow(SW_SHOW); } else if(nCurMainMenuID == IDF_TOP_3DFUSION) { Frame3DF_OnChangedMenu(); if(m_n3DFSeries == RXSERIES_COM && m_pFMWndVR[RXSERIES_COM]->GetBtnMixing()) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -