⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainfrm.cpp

📁 51单片机学习的源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// 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 + -