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

📄 mainfrm.cpp

📁 这是书上的代码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// mainfrm.cpp : implementation of the CMainFrame class
//

#include "stdafx.h"
#include "const.h"
#include "paintobj.h"

#include "mainfrm.h"

#ifdef _DEBUG
#undef THIS_FILE
static char BASED_CODE THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMainFrame

IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
	ON_COMMAND_EX(CG_ID_VIEW_MYDIALOGBAR1, OnBarCheck)
	ON_UPDATE_COMMAND_UI(CG_ID_VIEW_MYDIALOGBAR1, OnUpdateControlBarMenu)
	ON_COMMAND_EX(CG_ID_VIEW_MYDIALOGBAR, OnBarCheck)
	ON_UPDATE_COMMAND_UI(CG_ID_VIEW_MYDIALOGBAR, OnUpdateControlBarMenu)
	//{{AFX_MSG_MAP(CMainFrame)
	ON_WM_CREATE()
	ON_COMMAND(ID_HELP_FINDER, OnHelpFinder)
	ON_COMMAND(ID_VIEW_TOOLBAR, OnViewToolbar)
	ON_UPDATE_COMMAND_UI(ID_VIEW_TOOLBAR, OnUpdateViewToolbar)
	ON_WM_CLOSE()
//	ON_COMMAND(ID_VIEW_DRAWTOOLBAR_ARC, OnViewDrawtoolbarArc)
//	ON_UPDATE_COMMAND_UI(ID_VIEW_DRAWTOOLBAR_ARC, OnUpdateViewDrawtoolbarArc)
//	ON_COMMAND(ID_VIEW_DRAWTOOLBAR_BEELINE, OnViewDrawtoolbarBeeline)
//	ON_UPDATE_COMMAND_UI(ID_VIEW_DRAWTOOLBAR_BEELINE, OnUpdateViewDrawtoolbarBeeline)
//	ON_COMMAND(ID_VIEW_DRAWTOOLBAR_CHORD, OnViewDrawtoolbarChord)
//	ON_UPDATE_COMMAND_UI(ID_VIEW_DRAWTOOLBAR_CHORD, OnUpdateViewDrawtoolbarChord)
//	ON_COMMAND(ID_VIEW_DRAWTOOLBAR_ELLIPSE, OnViewDrawtoolbarEllipse)
//	ON_UPDATE_COMMAND_UI(ID_VIEW_DRAWTOOLBAR_ELLIPSE, OnUpdateViewDrawtoolbarEllipse)
//	ON_COMMAND(ID_VIEW_DRAWTOOLBAR_LAZYS, OnViewDrawtoolbarLazys)
//	ON_UPDATE_COMMAND_UI(ID_VIEW_DRAWTOOLBAR_LAZYS, OnUpdateViewDrawtoolbarLazys)
//	ON_COMMAND(ID_VIEW_DRAWTOOLBAR_PIE, OnViewDrawtoolbarPie)
//	ON_UPDATE_COMMAND_UI(ID_VIEW_DRAWTOOLBAR_PIE, OnUpdateViewDrawtoolbarPie)
//	ON_COMMAND(ID_VIEW_DRAWTOOLBAR_POLYGON, OnViewDrawtoolbarPolygon)
//	ON_UPDATE_COMMAND_UI(ID_VIEW_DRAWTOOLBAR_POLYGON, OnUpdateViewDrawtoolbarPolygon)
//	ON_COMMAND(ID_VIEW_DRAWTOOLBAR_RECT, OnViewDrawtoolbarRect)
//	ON_UPDATE_COMMAND_UI(ID_VIEW_DRAWTOOLBAR_RECT, OnUpdateViewDrawtoolbarRect)
//	ON_COMMAND(ID_VIEW_DRAWTOOLBAR_ROUNDRECT, OnViewDrawtoolbarRoundrect)
//	ON_UPDATE_COMMAND_UI(ID_VIEW_DRAWTOOLBAR_ROUNDRECT, OnUpdateViewDrawtoolbarRoundrect)
//	ON_COMMAND(ID_VIEW_DRAWTOOLBAR_SCP, OnViewDrawtoolbarScp)
//	ON_UPDATE_COMMAND_UI(ID_VIEW_DRAWTOOLBAR_SCP, OnUpdateViewDrawtoolbarScp)
//	ON_COMMAND(ID_VIEW_DRAWTOOLBAR_SIDE, OnViewDrawtoolbarSide)
//	ON_UPDATE_COMMAND_UI(ID_VIEW_DRAWTOOLBAR_SIDE, OnUpdateViewDrawtoolbarSide)
//	ON_COMMAND(ID_VIEW_DRAWTOOLBAR_TOOL, OnViewDrawtoolbarTool)
//	ON_UPDATE_COMMAND_UI(ID_VIEW_DRAWTOOLBAR_TOOL, OnUpdateViewDrawtoolbarTool)
	ON_COMMAND(ID_VIEW_BUILDINGDRAWTOOLBAR_ARC, OnViewBuildingdrawtoolbarArc)
	ON_UPDATE_COMMAND_UI(ID_VIEW_BUILDINGDRAWTOOLBAR_ARC, OnUpdateViewBuildingdrawtoolbarArc)
	ON_COMMAND(ID_VIEW_BUILDINGDRAWTOOLBAR_BEELINE, OnViewBuildingdrawtoolbarBeeline)
	ON_UPDATE_COMMAND_UI(ID_VIEW_BUILDINGDRAWTOOLBAR_BEELINE, OnUpdateViewBuildingdrawtoolbarBeeline)
	ON_COMMAND(ID_VIEW_BUILDINGDRAWTOOLBAR_CHORD, OnViewBuildingdrawtoolbarChord)
	ON_UPDATE_COMMAND_UI(ID_VIEW_BUILDINGDRAWTOOLBAR_CHORD, OnUpdateViewBuildingdrawtoolbarChord)
	ON_COMMAND(ID_VIEW_BUILDINGDRAWTOOLBAR_ELLIPSE, OnViewBuildingdrawtoolbarEllipse)
	ON_UPDATE_COMMAND_UI(ID_VIEW_BUILDINGDRAWTOOLBAR_ELLIPSE, OnUpdateViewBuildingdrawtoolbarEllipse)
	ON_COMMAND(ID_VIEW_BUILDINGDRAWTOOLBAR_LAZYS, OnViewBuildingdrawtoolbarLazys)
	ON_UPDATE_COMMAND_UI(ID_VIEW_BUILDINGDRAWTOOLBAR_LAZYS, OnUpdateViewBuildingdrawtoolbarLazys)
	ON_COMMAND(ID_VIEW_BUILDINGDRAWTOOLBAR_PIE, OnViewBuildingdrawtoolbarPie)
	ON_UPDATE_COMMAND_UI(ID_VIEW_BUILDINGDRAWTOOLBAR_PIE, OnUpdateViewBuildingdrawtoolbarPie)
	ON_COMMAND(ID_VIEW_BUILDINGDRAWTOOLBAR_POLYGON, OnViewBuildingdrawtoolbarPolygon)
	ON_UPDATE_COMMAND_UI(ID_VIEW_BUILDINGDRAWTOOLBAR_POLYGON, OnUpdateViewBuildingdrawtoolbarPolygon)
	ON_COMMAND(ID_VIEW_BUILDINGDRAWTOOLBAR_RECT, OnViewBuildingdrawtoolbarRect)
	ON_UPDATE_COMMAND_UI(ID_VIEW_BUILDINGDRAWTOOLBAR_RECT, OnUpdateViewBuildingdrawtoolbarRect)
	ON_COMMAND(ID_VIEW_BUILDINGDRAWTOOLBAR_ROUNDRECT, OnViewBuildingdrawtoolbarRoundrect)
	ON_UPDATE_COMMAND_UI(ID_VIEW_BUILDINGDRAWTOOLBAR_ROUNDRECT, OnUpdateViewBuildingdrawtoolbarRoundrect)
	ON_COMMAND(ID_VIEW_DEVICEDRAWTOOLBAR_ARC, OnViewDevicedrawtoolbarArc)
	ON_UPDATE_COMMAND_UI(ID_VIEW_DEVICEDRAWTOOLBAR_ARC, OnUpdateViewDevicedrawtoolbarArc)
	ON_COMMAND(ID_VIEW_DEVICEDRAWTOOLBAR_BEELINE, OnViewDevicedrawtoolbarBeeline)
	ON_UPDATE_COMMAND_UI(ID_VIEW_DEVICEDRAWTOOLBAR_BEELINE, OnUpdateViewDevicedrawtoolbarBeeline)
	ON_COMMAND(ID_VIEW_DEVICEDRAWTOOLBAR_CHORD, OnViewDevicedrawtoolbarChord)
	ON_UPDATE_COMMAND_UI(ID_VIEW_DEVICEDRAWTOOLBAR_CHORD, OnUpdateViewDevicedrawtoolbarChord)
	ON_COMMAND(ID_VIEW_DEVICEDRAWTOOLBAR_ELLIPSE, OnViewDevicedrawtoolbarEllipse)
	ON_UPDATE_COMMAND_UI(ID_VIEW_DEVICEDRAWTOOLBAR_ELLIPSE, OnUpdateViewDevicedrawtoolbarEllipse)
	ON_COMMAND(ID_VIEW_DEVICEDRAWTOOLBAR_LAZYS, OnViewDevicedrawtoolbarLazys)
	ON_UPDATE_COMMAND_UI(ID_VIEW_DEVICEDRAWTOOLBAR_LAZYS, OnUpdateViewDevicedrawtoolbarLazys)
	ON_COMMAND(ID_VIEW_DEVICEDRAWTOOLBAR_PIE, OnViewDevicedrawtoolbarPie)
	ON_UPDATE_COMMAND_UI(ID_VIEW_DEVICEDRAWTOOLBAR_PIE, OnUpdateViewDevicedrawtoolbarPie)
	ON_COMMAND(ID_VIEW_DEVICEDRAWTOOLBAR_POLYGON, OnViewDevicedrawtoolbarPolygon)
	ON_UPDATE_COMMAND_UI(ID_VIEW_DEVICEDRAWTOOLBAR_POLYGON, OnUpdateViewDevicedrawtoolbarPolygon)
	ON_COMMAND(ID_VIEW_DEVICEDRAWTOOLBAR_RECT, OnViewDevicedrawtoolbarRect)
	ON_UPDATE_COMMAND_UI(ID_VIEW_DEVICEDRAWTOOLBAR_RECT, OnUpdateViewDevicedrawtoolbarRect)
	ON_COMMAND(ID_VIEW_DEVICEDRAWTOOLBAR_ROUNDRECT, OnViewDevicedrawtoolbarRoundrect)
	ON_UPDATE_COMMAND_UI(ID_VIEW_DEVICEDRAWTOOLBAR_ROUNDRECT, OnUpdateViewDevicedrawtoolbarRoundrect)
	ON_COMMAND(ID_VIEW_DRAWTOOL, OnViewDrawtool)
	ON_UPDATE_COMMAND_UI(ID_VIEW_DRAWTOOL, OnUpdateViewDrawtool)
	ON_COMMAND(ID_VIEW_PATHDRAWTOOLBAR_ARC, OnViewPathdrawtoolbarArc)
	ON_UPDATE_COMMAND_UI(ID_VIEW_PATHDRAWTOOLBAR_ARC, OnUpdateViewPathdrawtoolbarArc)
	ON_COMMAND(ID_VIEW_PATHDRAWTOOLBAR_BEELINE, OnViewPathdrawtoolbarBeeline)
	ON_UPDATE_COMMAND_UI(ID_VIEW_PATHDRAWTOOLBAR_BEELINE, OnUpdateViewPathdrawtoolbarBeeline)
	ON_COMMAND(ID_VIEW_PATHDRAWTOOLBAR_LAZYS, OnViewPathdrawtoolbarLazys)
	ON_UPDATE_COMMAND_UI(ID_VIEW_PATHDRAWTOOLBAR_LAZYS, OnUpdateViewPathdrawtoolbarLazys)
	ON_COMMAND(ID_VIEW_PATHDRAWTOOLBAR_SCP, OnViewPathdrawtoolbarScp)
	ON_UPDATE_COMMAND_UI(ID_VIEW_PATHDRAWTOOLBAR_SCP, OnUpdateViewPathdrawtoolbarScp)
	ON_COMMAND(ID_VIEW_PATHDRAWTOOLBAR_SIDE, OnViewPathdrawtoolbarSide)
	ON_UPDATE_COMMAND_UI(ID_VIEW_PATHDRAWTOOLBAR_SIDE, OnUpdateViewPathdrawtoolbarSide)
	//}}AFX_MSG_MAP
//	ON_COMMAND_EX(ID_VIEW_TOOLBAR, OnViewToolbar)
//	ON_COMMAND_EX(ID_VIEW_DRAWTOOLS, OnViewToolbar)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// arrays of IDs used to initialize control bars
	
static UINT BASED_CODE indicators[] =
{
	ID_SEPARATOR,           // status line indicator
	0,                      // mouse position indicator
	ID_INDICATOR_CAPS,
	ID_INDICATOR_NUM,
	ID_INDICATOR_SCRL,
};

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

CMainFrame::CMainFrame()
{
	// TODO: add member initialization code here
	m_hIcon = AfxGetApp()->LoadIcon(IDI_ICON2);
}

CMainFrame::~CMainFrame()
{
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;	

	//工具条初始化(老版本)
//	if (!m_wndToolBar.Create(this) ||
//		!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
//	{
//		TRACE0("Failed to create toolbar\n");
//		return -1;      // fail to create
//	}
	//工具条初始化(新版本动态按钮)	
	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
	}

	UINT		uID;
	UINT		uStyle;
	int 		nWidth;
	CDC			*pDC;
	CRect		rectArea;

	m_wndStatusBar.GetPaneInfo(1, uID, uStyle, nWidth);
	pDC = m_wndStatusBar.GetDC();
	pDC->SelectObject(m_wndStatusBar.GetFont());
	pDC->DrawText(_T("X=9999.9999, Y=9999.9999"), -1, rectArea, DT_SINGLELINE | DT_CALCRECT);
	m_wndStatusBar.ReleaseDC(pDC);
	m_wndStatusBar.SetPaneInfo(1, uID, uStyle, rectArea.Width());
//	m_wndStatusBar.SetPaneInfo(1,1,SBPS_NORMAL,170);

	
	if (!CreatePathArcToolBar())
		return -1;
	if (!CreatePathLineToolBar())
		return -1;
	if (!CreateDrawToolBar())//绘图工具条
		return -1;	
	if (!CreatePathLazysToolBar())
		return -1;
	if (!CreatePathSideToolBar())
		return -1;
	if (!CreatePathScpToolBar())
		return -1;		
	if (!CreateBuildingLineToolBar())
		return -1;
	if (!CreateBuildingArcToolBar())
		return -1;
	if (!CreateBuildingLazysToolBar())
		return -1;
	if (!CreateBuildingEllipseToolBar())
		return -1;
	if (!CreateBuildingRectToolBar())
		return -1;
	if (!CreateBuildingPolygonToolBar())
		return -1;
	if (!CreateBuildingRoundrectToolBar())
		return -1;
	if (!CreateBuildingChordToolBar())		
		return -1;
	if (!CreateBuildingPieToolBar())
		return -1;	
	if (!CreateDeviceLineToolBar())
		return -1;
	if (!CreateDeviceArcToolBar())
		return -1;
	if (!CreateDeviceLazysToolBar())
		return -1;
	if (!CreateDeviceEllipseToolBar())
		return -1;
	if (!CreateDeviceRectToolBar())
		return -1;
	if (!CreateDevicePolygonToolBar())
		return -1;
	if (!CreateDeviceRoundrectToolBar())
		return -1;
	if (!CreateDeviceChordToolBar())
		return -1;
	if (!CreateDevicePieToolBar())
		return -1;
	

	// 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);
	// TODO: Remove this if you don't want tool tips
	m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
		CBRS_TOOLTIPS | CBRS_FLYBY);	

	// TODO: Add a menu item that will toggle the visibility of the	// dialog bar named "My Dialog Bar":	//   1. In ResourceView, open the menu resource that is used by	//      the CMainFrame class	//   2. Select the View submenu	//   3. Double-click on the blank item at the bottom of the submenu	//   4. Assign the new item an ID: CG_ID_VIEW_MYDIALOGBAR	//   5. Assign the item a Caption: My Dialog Bar	// TODO: Change the value of CG_ID_VIEW_MYDIALOGBAR to an appropriate value:	//   1. Open the file resource.h	// CG: The following block was inserted by the 'Dialog Bar' component	{		// Initialize dialog bar m_wndMyDialogBar		if (!m_wndMyDialogBar.Create(this, CG_IDD_MYDIALOGBAR,			CBRS_BOTTOM | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_HIDE_INPLACE,			CG_ID_VIEW_MYDIALOGBAR))		{			TRACE0("Failed to create dialog bar m_wndMyDialogBar\n");			return -1;		// fail to create		}
		//ShowControlBar( &m_wndMyDialogBar, FALSE, FALSE );m_wndShapeBar
	}
	// TODO: Add a menu item that will toggle the visibility of the	// dialog bar named "My Dialog Bar1":	//   1. In ResourceView, open the menu resource that is used by	//      the CMainFrame class	//   2. Select the View submenu	//   3. Double-click on the blank item at the bottom of the submenu	//   4. Assign the new item an ID: CG_ID_VIEW_MYDIALOGBAR1	//   5. Assign the item a Caption: My Dialog Bar1	// TODO: Change the value of CG_ID_VIEW_MYDIALOGBAR1 to an appropriate value:	//   1. Open the file resource.h	// CG: The following block was inserted by the 'Dialog Bar' component	{		// Initialize dialog bar m_wndMyDialogBar1		if (!m_wndMyDialogBar1.Create(this, CG_IDD_MYDIALOGBAR1,			CBRS_TOP | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_HIDE_INPLACE,			CG_ID_VIEW_MYDIALOGBAR1))		{			TRACE0("Failed to create dialog bar m_wndMyDialogBar1\n");			return -1;		// fail to create		}		m_wndMyDialogBar1.EnableDocking(CBRS_ALIGN_TOP | CBRS_ALIGN_BOTTOM);		EnableDocking(CBRS_ALIGN_ANY);		DockControlBar(&m_wndMyDialogBar1);		ShowControlBar( &m_wndMyDialogBar1, FALSE, FALSE );
		int a=1;
		CString str;		
		str.Format("%d",a);
		m_wndMyDialogBar1.SetDlgItemText(IDC_LENGTH,str);
		m_wndMyDialogBar1.SetDlgItemText(IDC_ANGLE,str);	}	SetIcon(m_hIcon,TRUE);			// Set big icon
//	LoadBarState(_T("yyhh"));
	return 0;
}

void CMainFrame::ClearPositionText()
{
	m_wndStatusBar.SetPaneText(1, NULL);
}

void CMainFrame::SetPositionText(CPoint& point)
{
	CString strPosition;
	strPosition.Format(_T("X=%d, Y=%d"), point.x, point.y);
	m_wndStatusBar.SetPaneText(1, strPosition);
}

/////////////////////////////////////////////////////////////////////////////
// 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::OnViewToolbar(UINT nID)
{
	CControlBar* pBar = GetControlBar(nID);
	if (pBar != NULL)
	{
		ShowControlBar(pBar, (pBar->GetStyle() & WS_VISIBLE) == 0, FALSE);
		return TRUE;
	}
	return FALSE;
}


void CMainFrame::OnUpdateViewToolbar(CCmdUI* pCmdUI) 
{
	CControlBar* pBar = GetControlBar(pCmdUI->m_nID);
	if (pBar != NULL)
	{
		pCmdUI->SetCheck((pBar->GetStyle() & WS_VISIBLE) != 0);
        return;
	}
	pCmdUI->ContinueRouting();
}
*/

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) 
{
	// TODO: Add your specialized code here and/or call the base class
	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	cs.style = WS_OVERLAPPED | WS_CAPTION | FWS_ADDTOTITLE
		| WS_THICKFRAME | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_MAXIMIZE;

	return TRUE;	
}

void CMainFrame::OnHelpFinder() 
{
	// TODO: Add your command handler code here
	AfxGetApp()->WinHelp(0L, HELP_FINDER);
}

void CMainFrame::OnViewToolbar() 
{
	// TODO: Add your command handler code here
	ShowControlBar( &m_wndToolBar,(m_wndToolBar.GetStyle() & WS_VISIBLE) == 0, FALSE );
}

void CMainFrame::OnUpdateViewToolbar(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetCheck((m_wndToolBar.GetStyle() & WS_VISIBLE) != 0);
}

⌨️ 快捷键说明

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