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

📄 mainfrm.cpp

📁 电缆故障监控系统
💻 CPP
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//

#include "stdafx.h"
#include "remotemonitor.h"
#include "remotemonitordoc.h"
#include "remotemonitorView.h"

#include "MainFrm.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMainFrame
extern int   m_nScale;
extern BOOL bRight[];	// 操作权限
static _TCHAR* g_szListLabel[] =
{ 
	_T("分机号"),
	_T("分机名"),
	_T("电缆号"),
	_T("节点名"),
	_T("故障类别"),
	_T("距  离"),
	_T("报警时间"),
	_T("维护人员1"),
	_T("电 话 1"),
	_T("维护人员2"),
	_T("电 话 2"),
	_T("维护人员3"),
	_T("电 话 3"),
	_T("维护人员4"),
	_T("电 话 4"),
	_T("维护人员5"),
	_T("电 话 5"),
	_T("维护人员6"),
	_T("电 话 6"),
};

IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
	//{{AFX_MSG_MAP(CMainFrame)
	ON_WM_CREATE()
	ON_COMMAND(ID_DRAW, OnDraw)
	ON_UPDATE_COMMAND_UI(ID_DRAW, OnUpdateDraw)
	ON_COMMAND(ID_VIEW_LISTBAR, OnViewListbar)
	ON_UPDATE_COMMAND_UI(ID_VIEW_LISTBAR, OnUpdateViewListbar)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

static UINT indicators[] =
{
	ID_SEPARATOR,           // status line indicator
	ID_LINKSTATE,
	ID_CURRENTTIME,
//	ID_INDICATOR_CAPS,
///	ID_INDICATOR_NUM,
//	ID_INDICATOR_SCRL,
};

/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction

CMainFrame::CMainFrame()
{
	// TODO: add member initialization code here
	m_bFlag=0;
}

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
	}
	OnViewShort();
/*//在工具栏上加静态文本框
	CRect rect;
    m_wndToolBar.SetButtonInfo(4,ID_SCALESTATIC,TBBS_SEPARATOR,160);
	m_wndToolBar.GetItemRect(4,&rect);
//	rect.bottom+=50;
	if(!m_scalestatic.Create("缩放比例:100%",WS_VISIBLE|WS_TABSTOP|WS_BORDER|SS_CENTER,rect,&m_wndToolBar,IDC_MYSTATIC))
		return -1;
    m_scalestatic.ModifyStyleEx(0,WS_EX_STATICEDGE);
*/
	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
	}
	//给新的窗格设置宽度、风格等
    m_wndStatusBar.SetPaneInfo(m_wndStatusBar.CommandToIndex(ID_LINKSTATE),ID_LINKSTATE,SBPS_NORMAL,100);
    m_wndStatusBar.SetPaneInfo(m_wndStatusBar.CommandToIndex(ID_CURRENTTIME),ID_CURRENTTIME,SBPS_NORMAL,120);
	// 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);


    if (!m_wndMyBar.Create(_T("监控数据"),  this,CSize(200,90),TRUE,124))
	{
		TRACE0("Failed to create mybar\n");
		return -1;
	}
	m_wndMyBar.SetBarStyle(m_wndMyBar.GetBarStyle() |
			CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
	m_wndMyBar.EnableDocking(CBRS_ALIGN_ANY);
	DockControlBar(&m_wndMyBar, AFX_IDW_DOCKBAR_BOTTOM);
	ShowControlBar(&m_wndMyBar, FALSE, FALSE);

	//InitListBar
	m_wndList.Create(WS_CHILD|WS_VISIBLE|LVS_REPORT|LVS_ALIGNTOP|
			LVS_SINGLESEL|LVS_SHOWSELALWAYS,CRect(0,0,0,0),&m_wndMyBar,IDC_LISTCAR);
	m_wndList.ModifyStyleEx(0, WS_EX_CLIENTEDGE);
	m_wndList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES/*|LVS_EX_TRACKSELECT*/);
	CString str;
//	str = g_szListLabel[0];
//	m_wndList.InsertColumn( 0, str, LVCFMT_CENTER,
//	m_wndList.GetStringWidth( str )*3, 0 );

	for(int i=0;i<19;i++)
	{
		str = g_szListLabel[i];
		m_wndList.InsertColumn( i, str, LVCFMT_CENTER,
		m_wndList.GetStringWidth( str )*3/2, i );
	}

	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&=~FWS_PREFIXTITLE;
	cs.style&=~FWS_ADDTOTITLE;   
	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
void CMainFrame::OnViewShort()
{
	// Set the toolbar to show only partial commmand list
	m_wndToolBar.SetButtons(NULL, 13);
	m_wndToolBar.SetButtonInfo(0, ID_FILE_NEW,TBBS_BUTTON, 0);
	m_wndToolBar.SetButtonInfo(1, ID_FILE_OPEN,TBBS_BUTTON, 1);
	m_wndToolBar.SetButtonInfo(2, ID_FILE_SAVE,TBBS_BUTTON, 2);
	m_wndToolBar.SetButtonInfo(3, ID_SEPARATOR,TBBS_SEPARATOR, 6);

	m_wndToolBar.SetButtonInfo(4, ID_ARROW,TBBS_BUTTON, 3);
	m_wndToolBar.SetButtonInfo(5, ID_MAPCHANGE,TBBS_BUTTON, 4);
	m_wndToolBar.SetButtonInfo(6, ID_ZOOMIN,TBBS_BUTTON, 5);
	m_wndToolBar.SetButtonInfo(7, ID_ZOOMOUT,TBBS_BUTTON, 6);
	m_wndToolBar.SetButtonInfo(8, ID_PAN,TBBS_BUTTON, 7);
	m_wndToolBar.SetButtonInfo(9, ID_SEPARATOR,TBBS_SEPARATOR, 6);
	m_wndToolBar.SetButtonInfo(10, ID_SCALESTATIC,TBBS_SEPARATOR, 160);
	m_wndToolBar.SetButtonInfo(11, ID_SEPARATOR,TBBS_SEPARATOR, 6);

	m_wndToolBar.SetButtonInfo(12, ID_APP_ABOUT,TBBS_BUTTON, 12);

	// invalidate the call update handlers before painting
//在工具栏上加静态文本框
	CRect rect;
//    m_wndToolBar.SetButtonInfo(4,ID_SCALESTATIC,TBBS_SEPARATOR,160);
	m_wndToolBar.GetItemRect(10,&rect);
//	rect.bottom+=50;
	CString str;
	str.Format("缩放比例:%d",m_nScale);
	str+="%";
	m_scalestatic.DestroyWindow();

	if(!m_scalestatic.Create(str,WS_VISIBLE|WS_TABSTOP|WS_BORDER|SS_CENTER,rect,&m_wndToolBar,IDC_MYSTATIC))
		return;
    m_scalestatic.ModifyStyleEx(0,WS_EX_STATICEDGE);
		OnBarCheck(FALSE);

	RecalcLayout();

//	m_wndToolBar.Invalidate();
//	AfxGetApp()->OnIdle(-1);
}



void CMainFrame::OnViewLong()
{
	// Set the toolbar to show all commmands
	m_wndToolBar.SetButtons(NULL, 18);
	m_wndToolBar.SetButtonInfo(0, ID_FILE_NEW,TBBS_BUTTON, 0);
	m_wndToolBar.SetButtonInfo(1, ID_FILE_OPEN,TBBS_BUTTON, 1);
	m_wndToolBar.SetButtonInfo(2, ID_FILE_SAVE,TBBS_BUTTON, 2);
	m_wndToolBar.SetButtonInfo(3, ID_SEPARATOR,TBBS_SEPARATOR, 6);

	m_wndToolBar.SetButtonInfo(4, ID_ARROW,TBBS_BUTTON, 3);
	m_wndToolBar.SetButtonInfo(5, ID_MAPCHANGE,TBBS_BUTTON, 4);
	m_wndToolBar.SetButtonInfo(6, ID_ZOOMIN,TBBS_BUTTON, 5);
	m_wndToolBar.SetButtonInfo(7, ID_ZOOMOUT,TBBS_BUTTON, 6);
	m_wndToolBar.SetButtonInfo(8, ID_PAN,TBBS_BUTTON, 7);
	m_wndToolBar.SetButtonInfo(9, ID_SEPARATOR,TBBS_SEPARATOR, 6);
	m_wndToolBar.SetButtonInfo(10, ID_SCALESTATIC,TBBS_SEPARATOR, 160);
	m_wndToolBar.SetButtonInfo(11, ID_SEPARATOR,TBBS_SEPARATOR, 6);

	m_wndToolBar.SetButtonInfo(12, ID_SELECT,TBBS_BUTTON, 8);
	m_wndToolBar.SetButtonInfo(13, ID_DELETE,TBBS_BUTTON, 9);
	m_wndToolBar.SetButtonInfo(14, ID_DRAWLINE,TBBS_BUTTON, 10);
	m_wndToolBar.SetButtonInfo(15, ID_DRAWCIRCLE,TBBS_BUTTON, 11);
	m_wndToolBar.SetButtonInfo(16, ID_SEPARATOR,TBBS_SEPARATOR, 6);
	m_wndToolBar.SetButtonInfo(17, ID_APP_ABOUT,TBBS_BUTTON, 12);

	// invalidate then call update handlers before painting
//在工具栏上加静态文本框
	CRect rect;
//    m_wndToolBar.SetButtonInfo(4,ID_SCALESTATIC,TBBS_SEPARATOR,160);
	m_wndToolBar.GetItemRect(10,&rect);
//	rect.bottom+=50;
	CString str;
	str.Format("缩放比例:%d",m_nScale);
	str+="%";
	m_scalestatic.DestroyWindow();
	if(!m_scalestatic.Create(str,WS_VISIBLE|WS_TABSTOP|WS_BORDER|SS_CENTER,rect,&m_wndToolBar,IDC_MYSTATIC))
		return;
    m_scalestatic.ModifyStyleEx(0,WS_EX_STATICEDGE);
		OnBarCheck(TRUE);

	RecalcLayout();
}

void CMainFrame::OnDraw() 
{
	// TODO: Add your command handler code here

     CRemotemonitorView *pView = (CRemotemonitorView *)GetActiveView();


	if(!m_bFlag)
	{
		OnViewLong();
        pView->Viewpenproperties(TRUE);
	//	OnBarCheck(TRUE);
        m_bFlag=TRUE;
	}
	else
	{
		OnViewShort();
		pView->Viewpenproperties(FALSE);
		pView->ChangetoArrow();
	//	OnBarCheck(FALSE);

        m_bFlag=FALSE;
	}
}

void CMainFrame::OnUpdateDraw(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
		pCmdUI->Enable(bRight[2]);
		pCmdUI->SetCheck(m_bFlag);

}

void CMainFrame::OnViewListbar() 
{
	// TODO: Add your command handler code here
	ShowControlBar(&m_wndMyBar, !m_wndMyBar.IsVisible(), FALSE);
}

void CMainFrame::OnUpdateViewListbar(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetCheck(m_wndMyBar.IsVisible());		
}
void CMainFrame::ViewListbar() 
{
	// TODO: Add your command handler code here
	if(!m_wndMyBar.IsVisible())
	ShowControlBar(&m_wndMyBar, TRUE, FALSE);
}
void CMainFrame::ChangeTime() 
{
	// TODO: Add your message handler code here and/or call default
	COleDateTime dt;
	dt=COleDateTime::GetCurrentTime();
	CString str=dt.Format("%Y-%m-%d %H:%M:%S");
	m_wndStatusBar.SetPaneText(m_wndStatusBar.CommandToIndex(ID_CURRENTTIME),str);
}
void CMainFrame::ChangeLinkState(int state)
{
	if(state==0)
	  m_wndStatusBar.SetPaneText(m_wndStatusBar.CommandToIndex(ID_LINKSTATE),"通信链路尚未建立");
	else
	  m_wndStatusBar.SetPaneText(m_wndStatusBar.CommandToIndex(ID_LINKSTATE),"通信链路已经建立");
}
void CMainFrame::ShowWindowMax()
{
	ShowWindow(SW_SHOWMAXIMIZED);
	UpdateWindow();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -