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

📄 testview.cpp

📁 利用MFC在Visual C++中实现Mapinfo数字电子地图的应用。作者:李金生。运行环境:VC6.0;MapInfo4.0。
💻 CPP
字号:
// TestView.cpp : implementation of the CTestView class
//

#include "stdafx.h"
#include "Test.h"

#include "TestDoc.h"
#include "TestView.h"
#include "mapinfow.h"     // ADDED FOR INTEGRATED MAPPING SUPPORT

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

/////////////////////////////////////////////////////////////////////////////
// CTestView

IMPLEMENT_DYNCREATE(CTestView, CView)

BEGIN_MESSAGE_MAP(CTestView, CView)
	//{{AFX_MSG_MAP(CTestView)
	ON_WM_CREATE()
	ON_WM_DESTROY()
	ON_WM_SIZE()
	ON_COMMAND(ID_MAP_LAYERCONTROL, OnMapLayercontrol)
	ON_UPDATE_COMMAND_UI(ID_MAP_LAYERCONTROL, OnUpdateMapLayercontrol)
	ON_COMMAND(ID_TOOLS_SELECTOR, OnToolsSelector)
	ON_UPDATE_COMMAND_UI(ID_TOOLS_SELECTOR, OnUpdateToolsSelector)
	ON_COMMAND(ID_TOOLS_GRABBER, OnToolsGrabber)
	ON_UPDATE_COMMAND_UI(ID_TOOLS_GRABBER, OnUpdateToolsGrabber)
	ON_COMMAND(ID_TOOLS_ZOOMIN, OnToolsZoomin)
	ON_UPDATE_COMMAND_UI(ID_TOOLS_ZOOMIN, OnUpdateToolsZoomin)
	ON_COMMAND(ID_TOOLS_ZOOMOUT, OnToolsZoomout)
	ON_UPDATE_COMMAND_UI(ID_TOOLS_ZOOMOUT, OnUpdateToolsZoomout)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTestView construction/destruction

CTestView::CTestView()
{
	// TODO: add construction code here
// ADDED FOR INTEGRATED MAPPING SUPPORT
        m_windowid = 0;
        m_windowhwnd = 0;
		m_eMouseMode=M_TOOLS_RECENTER;
// END OF ADDED FOR INTEGRATED MAPPING SUPPORT
}

CTestView::~CTestView()
{
}

BOOL CTestView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CTestView drawing

void CTestView::OnDraw(CDC* pDC)
{
	CTestDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

	// TODO: add draw code for native data here
}

/////////////////////////////////////////////////////////////////////////////
// CTestView diagnostics

#ifdef _DEBUG
void CTestView::AssertValid() const
{
	CView::AssertValid();
}

void CTestView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CTestDoc* CTestView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CTestDoc)));
	return (CTestDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CTestView message handlers

int CTestView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here
// ADDED FOR INTEGRATED MAPPING SUPPORT
		//must have ClipChildren style for integratable maps to work
    SetWindowLong(m_hWnd, GWL_STYLE, GetWindowLong(m_hWnd, GWL_STYLE)
                                 |WS_CLIPCHILDREN);
    char str[256];
    mapinfo.Do("Open Table \"CHINA\" Interactive");// China为应用的数字地图
    sprintf(str, "Set Next Document Parent %lu Style 1 Map From CHINA",  
              (long)(UINT)m_hWnd);
    mapinfo.Do(str);
    mapinfo.Do("Set Map Layer CHINA label auto");
    m_windowid = atol(mapinfo.Eval("WindowID(0)"));
    sprintf(str, "WindowInfo(0, %u)", WIN_INFO_WND);
    m_windowhwnd = (HWND)atol(mapinfo.Eval(str));
// END OF ADDED FOR INTEGRATED MAPPING SUPPORT
	return 0;
}

void CTestView::OnDestroy() 
{
	CView::OnDestroy();
	
	// TODO: Add your message handler code here
// ADDED FOR INTEGRATED MAPPING SUPPORT
	if (m_windowhwnd) {
   ::DestroyWindow(m_windowhwnd); 
   m_windowhwnd = NULL;
   m_windowid = 0L;
// END OF ADDED FOR INTEGRATED MAPPING SUPPORT
}

}

void CTestView::OnSize(UINT nType, int cx, int cy) 
{
	CView::OnSize(nType, cx, cy);
	
	// TODO: Add your message handler code here
// ADDED FOR INTEGRATED MAPPING SUPPORT
	if (m_windowhwnd && cx > 0 && cy > 0) {
   ::MoveWindow(m_windowhwnd, 0, 0, cx, cy, TRUE);
// END OF ADDED FOR INTEGRATED MAPPING SUPPORT

}
}

void CTestView::OnMapLayercontrol() 
{
	// TODO: Add your command handler code here
	   mapinfo.RunMenuCommand(M_MAP_LAYER_CONTROL);
}

void CTestView::OnUpdateMapLayercontrol(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	   pCmdUI->Enable(m_windowid);
}

void CTestView::OnToolsSelector() 
{
	// TODO: Add your command handler code here
		m_eMouseMode = M_TOOLS_SELECTOR;
     	mapinfo.RunMenuCommand(M_TOOLS_SELECTOR);

}

void CTestView::OnUpdateToolsSelector(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetRadio(m_eMouseMode == M_TOOLS_SELECTOR);
	pCmdUI->Enable(m_windowid);

}

void CTestView::OnToolsGrabber() 
{
	// TODO: Add your command handler code here
	m_eMouseMode = M_TOOLS_RECENTER;
	mapinfo.RunMenuCommand(M_TOOLS_RECENTER);

}

void CTestView::OnUpdateToolsGrabber(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetRadio(m_eMouseMode == M_TOOLS_RECENTER);
	pCmdUI->Enable(m_windowid);

}

void CTestView::OnToolsZoomin() 
{
	// TODO: Add your command handler code here
	m_eMouseMode = M_TOOLS_EXPAND;
	mapinfo.RunMenuCommand(M_TOOLS_EXPAND);

}

void CTestView::OnUpdateToolsZoomin(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetRadio(m_eMouseMode == M_TOOLS_EXPAND);
	pCmdUI->Enable(m_windowid);

}

void CTestView::OnToolsZoomout() 
{
	// TODO: Add your command handler code here
	m_eMouseMode = M_TOOLS_SHRINK;
	mapinfo.RunMenuCommand(M_TOOLS_SHRINK);

}

void CTestView::OnUpdateToolsZoomout(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetRadio(m_eMouseMode == M_TOOLS_SHRINK);
	pCmdUI->Enable(m_windowid);

}

⌨️ 快捷键说明

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