📄 framebottom.cpp
字号:
// FrameBottom.cpp : implementation file//#include "stdafx.h"#include "fusion.h"#include "FrameBottom.h"#include "FusionGlobal.h"#include "Regfunc.h"#include "PresetWindowing.h"#include "BitmapStatic.h"#include "Buttons.h"#include "DlgOptions.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// RxFrameBottomRxFrameBottom::RxFrameBottom(){ m_pStcLogo = NULL; m_pStcWindowing = NULL; m_pStcZoom = NULL; m_pStcSeries = NULL; m_pEdWindowingWidth = NULL; m_pEdWindowingLevel = NULL; m_pEdZoom = NULL; m_pSBCWindowingWidth = NULL; m_pSBCWindowingLevel = NULL; m_pCBPresetWindowing = NULL; m_pPresetWindowing = NULL; m_nRadioSeries = -1; m_pBtnReference = NULL; m_pBtnFloat = NULL; m_pBtnCombine = NULL; m_pBtnFineTuning = NULL; m_pBtnOptions = NULL; m_pBtnHelp = NULL;}RxFrameBottom::~RxFrameBottom(){}BEGIN_MESSAGE_MAP(RxFrameBottom, RxFrameWnd) //{{AFX_MSG_MAP(RxFrameBottom) ON_WM_CREATE() ON_WM_DESTROY() ON_WM_PAINT() //}}AFX_MSG_MAP ON_MESSAGE_VOID(UM_INITIALUPDATE, OnInitialUpdate) ON_NOTIFY(UDN_DELTAPOS, IDF_BOTTOM_SBC_WIDTH, OnDeltaposSpinOpacity) ON_NOTIFY(UDN_DELTAPOS, IDF_BOTTOM_SBC_LEVEL, OnDeltaposSpinOpacity) ON_NOTIFY(EN_CHANGED_INT, IDF_BOTTOM_ED_WIDTH, OnEditChanged) ON_NOTIFY(EN_CHANGED_INT, IDF_BOTTOM_ED_LEVEL, OnEditChanged) ON_COMMAND_RANGE(ID_WINDOWING_PRESET_F1, ID_WINDOWING_PRESET_F12, OnPresetWindowingHotChanged) ON_CBN_DROPDOWN(IDF_BOTTOM_CB_PRESET_WINDOWING, OnPresetWindowingCBDropDown) ON_CBN_SELCHANGE(IDF_BOTTOM_CB_PRESET_WINDOWING, OnPresetWindowingCBChanged) ON_COMMAND_RANGE(IDF_BOTTOM_BTN_REFERENCE, IDF_BOTTOM_BTN_COMBINE, OnRadioSeries) ON_COMMAND(IDF_BOTTOM_BTN_FTUNING, OnBtnTuning) ON_COMMAND(IDF_BOTTOM_BTN_OPTIONS, OnBtnOptions) ON_COMMAND(IDF_BOTTOM_BTN_HELP, OnBtnHelp)END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// RxFrameBottom message handlersvoid RxFrameBottom::OnInitialUpdate(){ CClientDC dc(this); int nHeight = -((dc.GetDeviceCaps(LOGPIXELSY) * 9) / 74); m_Font.CreateFont(nHeight, 0, 0, 0, FW_NORMAL, 0, 0, 0, DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH|FF_DONTCARE, _T("Tahoma")); m_pStcLogo->LoadBitmap (IDB_FBOTTOM_STC_LOGO); m_pStcWindowing->LoadBitmap (IDB_FBOTTOM_STC_WINDOW); m_pStcZoom->LoadBitmap (IDB_FBOTTOM_STC_ZOOM); m_pStcSeries->LoadBitmap (IDB_FBOTTOM_STC_SERIES); m_pBtnReference->LoadBitmaps (IDB_FBOTTOM_BTN_REFERENCE, CSize(17,17), BM_ALL&~BM_FOCUS); m_pBtnFloat->LoadBitmaps (IDB_FBOTTOM_BTN_FLOAT, CSize(17,17), BM_ALL&~BM_FOCUS); m_pBtnCombine->LoadBitmaps (IDB_FBOTTOM_BTN_COMBINE, CSize(17,17), BM_ALL&~BM_FOCUS); m_pBtnFineTuning->LoadBitmaps (IDB_FBOTTOM_BTN_FTUNING, CSize(83,24), BM_NORMAL|BM_SELECT); m_pBtnOptions->LoadBitmaps (IDB_FBOTTOM_BTN_OPTIONS, CSize(83,24), BM_NORMAL|BM_SELECT); m_pBtnHelp->LoadBitmaps (IDB_FBOTTOM_BTN_HELP, CSize(83,24), BM_NORMAL|BM_SELECT); m_pEdWindowingWidth->SetFont(&m_Font, FALSE); m_pEdWindowingWidth->SetRange(2, 4095); m_pEdWindowingLevel->SetFont(&m_Font, FALSE); m_pEdWindowingLevel->SetRange(-1024, 3071); m_pEdZoom->SetFont(&m_Font, FALSE); m_pEdZoom->SetRange(0, 500); m_pCBPresetWindowing->SetFont(&m_Font, FALSE); RecalcLayout();}int RxFrameBottom::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (RxFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; UINT nStyle = WS_CHILD|WS_VISIBLE; m_pStcLogo = new RxBitmapStatic; m_pStcLogo->Create (NULL, NULL, nStyle, CRect(0,0,0,0), this, IDC_STATIC); nStyle = WS_CHILD; m_pStcWindowing = new RxBitmapStatic; m_pStcWindowing->Create (NULL, NULL, nStyle, CRect(0,0,0,0), this, IDC_STATIC); m_pStcZoom = new RxBitmapStatic; m_pStcZoom->Create (NULL, NULL, nStyle, CRect(0,0,0,0), this, IDC_STATIC); m_pStcSeries = new RxBitmapStatic; m_pStcSeries->Create (NULL, NULL, nStyle, CRect(0,0,0,0), this, IDC_STATIC); nStyle = WS_CHILD|WS_VISIBLE|WS_BORDER|ES_CENTER; m_pEdWindowingWidth = new RxEditInt; m_pEdWindowingWidth->Create (nStyle, CRect( 45, 4, 85, 24), m_pStcWindowing, IDF_BOTTOM_ED_WIDTH); m_pEdWindowingLevel = new RxEditInt; m_pEdWindowingLevel->Create (nStyle, CRect(140, 4,180, 24), m_pStcWindowing, IDF_BOTTOM_ED_LEVEL); m_pEdZoom = new RxEditInt; m_pEdZoom->Create (nStyle, CRect( 44, 4, 84, 24), m_pStcZoom, IDF_BOTTOM_ED_ZOOM); nStyle = WS_CHILD|WS_VISIBLE; m_pSBCWindowingWidth = new CSpinButtonCtrl; m_pSBCWindowingWidth->Create(nStyle, CRect( 85, 4,100, 24), m_pStcWindowing, IDF_BOTTOM_SBC_WIDTH); m_pSBCWindowingLevel = new CSpinButtonCtrl; m_pSBCWindowingLevel->Create(nStyle, CRect(180, 4,195, 24), m_pStcWindowing, IDF_BOTTOM_SBC_LEVEL); nStyle = WS_CHILD|WS_VISIBLE|WS_VSCROLL|CBS_DROPDOWNLIST; m_pCBPresetWindowing = new CComboBox; m_pCBPresetWindowing->Create(nStyle, CRect(245, 3,342,200), m_pStcWindowing, IDF_BOTTOM_CB_PRESET_WINDOWING); m_pPresetWindowing = new RxPresetWindowing; nStyle = WS_CHILD|WS_VISIBLE|BS_USERBUTTON; m_pBtnReference = new RxBitmapButton; m_pBtnReference->Create (NULL, nStyle, CRect( 7, 6, 24, 23), m_pStcSeries, IDF_BOTTOM_BTN_REFERENCE); m_pBtnFloat = new RxBitmapButton; m_pBtnFloat->Create (NULL, nStyle, CRect( 27, 6, 44, 23), m_pStcSeries, IDF_BOTTOM_BTN_FLOAT); m_pBtnCombine = new RxBitmapButton; m_pBtnCombine->Create (NULL, nStyle, CRect( 47, 6, 64, 23), m_pStcSeries, IDF_BOTTOM_BTN_COMBINE); nStyle = WS_CHILD|BS_CHECKBOX; m_pBtnFineTuning = new RxBitmapButton; m_pBtnFineTuning->Create (_T("Fine Tuning"), nStyle, CRect(0,0,0,0), this, IDF_BOTTOM_BTN_FTUNING); nStyle = WS_CHILD|BS_PUSHBUTTON; m_pBtnOptions = new RxBitmapButton; m_pBtnOptions->Create (_T("Options"), nStyle, CRect(0,0,0,0), this, IDF_BOTTOM_BTN_OPTIONS); nStyle = WS_CHILD|BS_CHECKBOX; m_pBtnHelp = new RxBitmapButton; m_pBtnHelp->Create (_T("Help"), nStyle, CRect(0,0,0,0), this, IDF_BOTTOM_BTN_HELP); return 0;}void RxFrameBottom::OnDestroy() { RxFrameWnd::OnDestroy(); if(m_pEdWindowingWidth) delete m_pEdWindowingWidth; if(m_pEdWindowingLevel) delete m_pEdWindowingLevel; if(m_pEdZoom) delete m_pEdZoom; if(m_pSBCWindowingWidth) delete m_pSBCWindowingWidth; if(m_pSBCWindowingLevel) delete m_pSBCWindowingLevel; if(m_pCBPresetWindowing) delete m_pCBPresetWindowing; if(m_pPresetWindowing) delete m_pPresetWindowing; if(m_pBtnReference) delete m_pBtnReference; if(m_pBtnFloat) delete m_pBtnFloat; if(m_pBtnCombine) delete m_pBtnCombine; if(m_pBtnFineTuning) delete m_pBtnFineTuning; if(m_pBtnOptions) delete m_pBtnOptions; if(m_pBtnHelp) delete m_pBtnHelp;}void RxFrameBottom::OnPaint() { CPaintDC dc(this); // device context for painting CRect rcClipBox; dc.GetClipBox(rcClipBox); CBrush brush, *pOldBrush; brush.CreateSolidBrush(RXCOLOR_10); pOldBrush = dc.SelectObject(&brush); dc.PatBlt(rcClipBox.left, rcClipBox.top, rcClipBox.Width(), rcClipBox.Height(), PATCOPY); dc.SelectObject(pOldBrush); brush.DeleteObject(); CPen pen, *pOldPen; pen.CreatePen(PS_SOLID, 1, RGB(255,255,255)); pOldPen = dc.SelectObject(&pen); dc.MoveTo(rcClipBox.left, 0); dc.LineTo(rcClipBox.right, 0); dc.SelectObject(pOldPen); pen.DeleteObject();}void RxFrameBottom::RecalcLayout(){ CRect rcFClient, rect; RxGetMainFrame()->GetFrameRectBottom(rcFClient); rect.SetRect( 7, 4, 63, 31); m_pStcLogo->MoveWindow(rect); rect.SetRect( 80, 4,430, 34); m_pStcWindowing->MoveWindow(rect); rect.SetRect(440, 4,530, 34); m_pStcZoom->MoveWindow(rect); rect.SetRect(540, 4,611, 34); m_pStcSeries->MoveWindow(rect); rect.SetRect(rcFClient.right-90, 6, rcFClient.right- 7, 30);// m_pBtnHelp->MoveWindow(rect); m_pBtnOptions->MoveWindow(rect);// rect.OffsetRect(-85, 0); m_pBtnFineTuning->MoveWindow(rect); rect.OffsetRect(-85, 0);}void RxFrameBottom::OnSwitchToMainMenu(BOOL bActive, int nOldMainMenuID, int nCurMainMenuID){ if(bActive) { if(nCurMainMenuID == IDF_TOP_LOAD) { m_pStcWindowing->ShowWindow(SW_HIDE); m_pStcZoom->ShowWindow(SW_HIDE); m_pStcSeries->ShowWindow(SW_HIDE); m_pBtnFineTuning->ShowWindow(SW_HIDE); m_pBtnOptions->ShowWindow(SW_HIDE); m_pBtnHelp->ShowWindow(SW_HIDE); } else if(nCurMainMenuID == IDF_TOP_3DFUSION) { m_pStcWindowing->ShowWindow(SW_SHOW); m_pStcZoom->ShowWindow(SW_SHOW); m_pStcSeries->ShowWindow(SW_SHOW); if(m_nRadioSeries != 2) m_pBtnFineTuning->ShowWindow(SW_SHOW); if(m_nRadioSeries == 2) m_pBtnOptions->ShowWindow(SW_SHOW); m_pBtnHelp->ShowWindow(SW_HIDE); } else if(nCurMainMenuID == IDF_TOP_REPORT) { m_pStcWindowing->ShowWindow(SW_HIDE); m_pStcZoom->ShowWindow(SW_HIDE); m_pStcSeries->ShowWindow(SW_HIDE); m_pBtnFineTuning->ShowWindow(SW_HIDE); m_pBtnOptions->ShowWindow(SW_HIDE); m_pBtnHelp->ShowWindow(SW_HIDE); } }}/////////////////////////////////////////////////////////////////////////////BOOL RxFrameBottom::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) { if(wParam == IDF_BOTTOM_ED_ZOOM) RxGetActiveWnd()->SendMessage(WM_NOTIFY, wParam, lParam); return RxFrameWnd::OnNotify(wParam, lParam, pResult);}void RxFrameBottom::OnDeltaposSpinOpacity(NMHDR* pNMHDR, LRESULT* pResult){ NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR; // 胶巧 滚瓢狼 困 肚绰 酒贰甫 喘范绰瘤 牢侥茄促. if(pNMUpDown->iDelta < 0 ) { if(pNMUpDown->hdr.idFrom == IDF_BOTTOM_SBC_WIDTH) m_pEdWindowingWidth->IncreaseEdit(); else if(pNMUpDown->hdr.idFrom == IDF_BOTTOM_SBC_LEVEL) m_pEdWindowingLevel->IncreaseEdit(); } else { if(pNMUpDown->hdr.idFrom == IDF_BOTTOM_SBC_WIDTH) m_pEdWindowingWidth->DecreaseEdit(); else if(pNMUpDown->hdr.idFrom == IDF_BOTTOM_SBC_LEVEL) m_pEdWindowingLevel->DecreaseEdit(); } *pResult = 0;}void RxFrameBottom::OnEditChanged(NMHDR* pNMHDR, LRESULT* pResult){ NMED_INT *pNMED = (NMED_INT *)pNMHDR; switch(pNMED->hdr.idFrom) { case IDF_BOTTOM_ED_WIDTH : UpdateWindowing(FALSE); break; case IDF_BOTTOM_ED_LEVEL : UpdateWindowing(FALSE); break; } *pResult = 0;}void RxFrameBottom::OnPresetWindowingHotChanged(UINT nID){ int iIndex = (int)(nID - ID_WINDOWING_PRESET_F1); int iNewIndex; switch (RxGetCurMainMenu()) { case IDF_TOP_3DFUSION : if(m_nRadioSeries == RXSERIES_REF || m_nRadioSeries == RXSERIES_FLT) { if(iIndex >= 0 && iIndex < 12) { iNewIndex = m_pPresetWindowing->GetPresetWindowingByHotKey(iIndex);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -