📄 mainfrm.cpp
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//
#include "stdafx.h"
#include "mcds.h"
#include "LeftTreeDisp.h"
#include "RightFrm.h"
#include "GlobalVar.h"
#include "MainFrm.h"
#include "IOThread.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMainFrame
IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_CBN_SELENDOK(ID_TOOL_ZOOM, OnSelectZoomed)
ON_COMMAND(ID_MENU_RANGE16K, OnMenuRange16k)
ON_UPDATE_COMMAND_UI(ID_MENU_RANGE16K, OnUpdateMenuRange16k)
ON_COMMAND(ID_MENU_RANGE1K, OnMenuRange1k)
ON_UPDATE_COMMAND_UI(ID_MENU_RANGE1K, OnUpdateMenuRange1k)
ON_COMMAND(ID_MENU_RANGE256, OnMenuRange256)
ON_UPDATE_COMMAND_UI(ID_MENU_RANGE256, OnUpdateMenuRange256)
ON_COMMAND(ID_MENU_RANGE2K, OnMenuRange2k)
ON_UPDATE_COMMAND_UI(ID_MENU_RANGE2K, OnUpdateMenuRange2k)
ON_COMMAND(ID_MENU_RANGE32K, OnMenuRange32k)
ON_UPDATE_COMMAND_UI(ID_MENU_RANGE32K, OnUpdateMenuRange32k)
ON_COMMAND(ID_MENU_RANGE4K, OnMenuRange4k)
ON_UPDATE_COMMAND_UI(ID_MENU_RANGE4K, OnUpdateMenuRange4k)
ON_COMMAND(ID_MENU_RANGE512, OnMenuRange512)
ON_UPDATE_COMMAND_UI(ID_MENU_RANGE512, OnUpdateMenuRange512)
ON_COMMAND(ID_MENU_RANGE64K, OnMenuRange64k)
ON_UPDATE_COMMAND_UI(ID_MENU_RANGE64K, OnUpdateMenuRange64k)
ON_COMMAND(ID_MENU_RANGE8K, OnMenuRange8k)
ON_UPDATE_COMMAND_UI(ID_MENU_RANGE8K, OnUpdateMenuRange8k)
ON_COMMAND(ID_MENU_SETRANGEAUTO, OnMenuSetrangeauto)
ON_UPDATE_COMMAND_UI(ID_MENU_SETRANGEAUTO, OnUpdateMenuSetrangeauto)
ON_COMMAND(ID_BUTTON_WHETHERAUTO, OnButtonWhetherauto)
ON_UPDATE_COMMAND_UI(ID_BUTTON_WHETHERAUTO, OnUpdateButtonWhetherauto)
ON_COMMAND(ID_MENU_SETROILEFT, OnMenuSetroileft)
ON_COMMAND(ID_MENU_CLEARROI, OnMenuClearroi)
ON_UPDATE_COMMAND_UI(ID_MENU_CLEARROI, OnUpdateMenuClearroi)
ON_COMMAND(ID_BUTTON_ROISET, OnButtonRoiset)
ON_UPDATE_COMMAND_UI(ID_BUTTON_ROISET, OnUpdateButtonRoiset)
ON_COMMAND(ID_MENU_CURSORLEFT, OnMenuCursorleft)
ON_COMMAND(ID_MENU_CURSORRIGHT, OnMenuCursorright)
ON_COMMAND(ID_MENU_STARTCOLLECT, OnMenuStartcollect)
ON_COMMAND(ID_MENU_STOPCOLLECT, OnMenuStopcollect)
ON_WM_TIMER()
ON_UPDATE_COMMAND_UI(ID_MENU_STARTCOLLECT, OnUpdateMenuStartcollect)
ON_UPDATE_COMMAND_UI(ID_MENU_STOPCOLLECT, OnUpdateMenuStopcollect)
ON_COMMAND(ID_BUTTON_RANGEDOWN, OnButtonRangedown)
ON_UPDATE_COMMAND_UI(ID_BUTTON_RANGEDOWN, OnUpdateButtonRangedown)
ON_COMMAND(ID_BUTTON_RANGEUP, OnButtonRangeup)
ON_UPDATE_COMMAND_UI(ID_BUTTON_RANGEUP, OnUpdateButtonRangeup)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction
CMainFrame::CMainFrame()
{
// TODO: add member initialization code here
}
CMainFrame::~CMainFrame()
{
}
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}
// TODO: Delete these three lines if you don't want the toolbar to
// be dockable
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
int index = 0;
RECT rect;
//找到指定的工具项
while(m_wndToolBar.GetItemID(index)!=ID_TOOL_ZOOM)
index++;
//设置指定工具项的宽度并获取新的区域 80是宽度
m_wndToolBar.SetButtonInfo(index, ID_TOOL_ZOOM, TBBS_SEPARATOR, 80);
m_wndToolBar.GetItemRect(index, &rect);
//设置位置
rect.top+=2;
rect.bottom += 200;
// 创建并显示
if (!m_wndToolBar.m_wndZoom.Create(WS_CHILD|WS_VISIBLE | CBS_AUTOHSCROLL |
CBS_DROPDOWNLIST | CBS_HASSTRINGS ,
rect, &m_wndToolBar, ID_TOOL_ZOOM))
{
TRACE0("Failed to create combo-box\n");
return FALSE;
}
m_wndToolBar.m_wndZoom.ShowWindow(SW_SHOW);
//填充内容
m_wndToolBar.m_wndZoom.AddString("256");
m_wndToolBar.m_wndZoom.AddString("512");
m_wndToolBar.m_wndZoom.AddString("1K");
m_wndToolBar.m_wndZoom.AddString("2K");
m_wndToolBar.m_wndZoom.AddString("4K");
m_wndToolBar.m_wndZoom.AddString("8K");
m_wndToolBar.m_wndZoom.AddString("16K");
m_wndToolBar.m_wndZoom.AddString("32K");
m_wndToolBar.m_wndZoom.AddString("64K");
m_wndToolBar.m_wndZoom.SetCurSel(0);
return 0;
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
cs.style=cs.style^WS_MAXIMIZEBOX^WS_THICKFRAME^FWS_ADDTOTITLE;
cs.cx=800;
cs.cy=600;
cs.x=0;
cs.y=0;
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics
#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CFrameWnd::AssertValid();
}
void CMainFrame::Dump(CDumpContext& dc) const
{
CFrameWnd::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class
if (!m_wndSplitter.CreateStatic(this, 1, 2,WS_CHILD|WS_VISIBLE,
AFX_IDW_PANE_FIRST)) //主窗口被分为两列
{
TRACE0("Failed to Splitter window\n");
return FALSE;
}
if (!m_wndSplitter.CreateView(0, 0,
RUNTIME_CLASS(CLeftTreeDisp), CSize(150, 0), pContext))
return FALSE;
if (!m_wndSplitter.CreateView(0, 1,
RUNTIME_CLASS(CRightFrm), CSize(0, 0), pContext))
return FALSE;
// 激活第一行第一列
m_wndSplitter.SetActivePane(0,0);
return TRUE;
}
void CMainFrame::OnSelectZoomed()
{
CString strContent;
m_wndToolBar.m_wndZoom.GetWindowText(strContent);
nNumInfo[15]=strContent;
lsUpdate[15]=true;
//下面这段代码通过曲线调用文档实现对整个显示的刷新
((CMainFrame *)AfxGetApp()->m_pMainWnd)->GetActiveDocument()->UpdateAllViews(NULL);
}
void CMainFrame::OnMenuRange16k()
{
// TODO: Add your command handler code here
nNumInfo[16]="手动";
nNumInfo[15]="16K";
lsUpdate[15]=true;
m_wndToolBar.m_wndZoom.SetCurSel(6);
//下面这段代码通过曲线调用文档实现对整个显示的刷新
((CMainFrame *)AfxGetApp()->m_pMainWnd)->GetActiveDocument()->UpdateAllViews(NULL);
}
void CMainFrame::OnUpdateMenuRange16k(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->SetCheck(nNumInfo[15]=="16K");
}
void CMainFrame::OnMenuRange1k()
{
// TODO: Add your command handler code here
nNumInfo[16]="手动";
nNumInfo[15]="1K";
lsUpdate[15]=true;
m_wndToolBar.m_wndZoom.SetCurSel(2);
//下面这段代码通过曲线调用文档实现对整个显示的刷新
((CMainFrame *)AfxGetApp()->m_pMainWnd)->GetActiveDocument()->UpdateAllViews(NULL);
}
void CMainFrame::OnUpdateMenuRange1k(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->SetCheck(nNumInfo[15]=="1K");
}
void CMainFrame::OnMenuRange256()
{
// TODO: Add your command handler code here
nNumInfo[16]="手动";
nNumInfo[15]="256";
lsUpdate[15]=true;
m_wndToolBar.m_wndZoom.SetCurSel(0);
//下面这段代码通过曲线调用文档实现对整个显示的刷新
((CMainFrame *)AfxGetApp()->m_pMainWnd)->GetActiveDocument()->UpdateAllViews(NULL);
}
void CMainFrame::OnUpdateMenuRange256(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->SetCheck(nNumInfo[15]=="256");
}
void CMainFrame::OnMenuRange2k()
{
// TODO: Add your command handler code here
nNumInfo[16]="手动";
nNumInfo[15]="2K";
lsUpdate[15]=true;
m_wndToolBar.m_wndZoom.SetCurSel(3);
//下面这段代码通过曲线调用文档实现对整个显示的刷新
((CMainFrame *)AfxGetApp()->m_pMainWnd)->GetActiveDocument()->UpdateAllViews(NULL);
}
void CMainFrame::OnUpdateMenuRange2k(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->SetCheck(nNumInfo[15]=="2K");
}
void CMainFrame::OnMenuRange32k()
{
// TODO: Add your command handler code here
nNumInfo[16]="手动";
nNumInfo[15]="32K";
lsUpdate[15]=true;
m_wndToolBar.m_wndZoom.SetCurSel(7);
//下面这段代码通过曲线调用文档实现对整个显示的刷新
((CMainFrame *)AfxGetApp()->m_pMainWnd)->GetActiveDocument()->UpdateAllViews(NULL);
}
void CMainFrame::OnUpdateMenuRange32k(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->SetCheck(nNumInfo[15]=="32K");
}
void CMainFrame::OnMenuRange4k()
{
// TODO: Add your command handler code here
nNumInfo[16]="手动";
nNumInfo[15]="4K";
lsUpdate[15]=true;
m_wndToolBar.m_wndZoom.SetCurSel(4);
//下面这段代码通过曲线调用文档实现对整个显示的刷新
((CMainFrame *)AfxGetApp()->m_pMainWnd)->GetActiveDocument()->UpdateAllViews(NULL);
}
void CMainFrame::OnUpdateMenuRange4k(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->SetCheck(nNumInfo[15]=="4K");
}
void CMainFrame::OnMenuRange512()
{
// TODO: Add your command handler code here
nNumInfo[16]="手动";
nNumInfo[15]="512";
lsUpdate[15]=true;
m_wndToolBar.m_wndZoom.SetCurSel(1);
//下面这段代码通过曲线调用文档实现对整个显示的刷新
((CMainFrame *)AfxGetApp()->m_pMainWnd)->GetActiveDocument()->UpdateAllViews(NULL);
}
void CMainFrame::OnUpdateMenuRange512(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->SetCheck(nNumInfo[15]=="512");
}
void CMainFrame::OnMenuRange64k()
{
// TODO: Add your command handler code here
nNumInfo[16]="手动";
nNumInfo[15]="64K";
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -