📄 mo20view.cpp
字号:
}
void CMO20View::OnSize(UINT nType, int cx, int cy)
{
CFormView::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
// if (m_map.m_hWnd)
// m_map.SetWindowPos(0, 0, 0, cx, cy, SWP_NOZORDER);
if(m_map.m_hWnd)
{//SetRedraw(false);
m_map.SetWindowPos(&wndBottom, 0, 0, cx, cy, SWP_SHOWWINDOW);
m_map1.SetWindowPos(&wndTop, 0, 0, cx, cy, SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE);
//SetRedraw(true);
//Invalidate();
}
}
/*Void CMO20View::OnMapSearch()
{
// Build a search expression from the text in IDC_SEARCHEDIT
CMainFrame* pMainFrame = (CMainFrame*)AfxGetMainWnd();
ASSERT_VALID(pMainFrame);
CString searchText = pMainFrame->GetSearchText();
//1.从应用程序的工具条中获得文本框中的文字
//2.接下来建立查询语句
CString expression;
expression.Format("(State_name Like '%%%s%%')", searchText);
CMoLayers layers(m_map.GetLayers());
CMoMapLayer states(layers.Item(COleVariant(TEXT("STATES"))));
CMoRecordset recs(states.SearchExpression(expression));
if (recs.GetEof())
::MessageBeep(MB_ICONQUESTION);
else
{
CMoFields fields(recs.GetFields());
CMoField shapeField(fields.Item(COleVariant(TEXT("Shape"))));
CMoPolygon shape(shapeField.GetValue().pdispVal);
CMoRectangle r(shape.GetExtent());
r.ScaleRectangle(2);
m_map.SetExtent(r); // zoom to the state
m_map.Refresh(); // force redraw
m_map.FlashShape(shape, 3);
}
}*/
void CMO20View::OnMapSearch()
{
// Build a search expression from the text in IDC_SEARCHEDIT
CMainFrame* pMainFrame = (CMainFrame*)AfxGetMainWnd();
ASSERT_VALID(pMainFrame);
CString searchText = pMainFrame->GetSearchText();
//1.从应用程序的工具条中获得文本框中的文字
//2.接下来建立查询语句
CString expression;
expression.Format("(CITY_NAME Like '%%%s%%')", searchText);
CMoLayers layers(m_map.GetLayers());
CMoMapLayer capitalLayer(layers.Item(COleVariant(TEXT("CAPITALS"))));
CMoRecordset cityRecs(capitalLayer.SearchExpression(expression));
if (cityRecs.GetEof())
::MessageBeep(MB_ICONQUESTION);
else
{
/*CMoFields fields(cityRecs.GetFields());
CMoField shapeField(fields.Item(COleVariant(TEXT("Shape"))));
CMoPolygon shape(shapeField.GetValue().pdispVal);
CMoRectangle r(shape.GetExtent());
r.ScaleRectangle(2);
m_map.SetExtent(r); // zoom to the state
m_map.Refresh(); // force redraw
m_map.FlashShape(shape, 3);*/
CMoFields fields(cityRecs.GetFields());
CMoField shapeField(fields.Item(COleVariant(TEXT("Shape"))));
CMoPoint shape(shapeField.GetValue().pdispVal);
CMoMapLayer statesLayer(layers.Item(COleVariant(TEXT("STATES"))));
CMoRecordset stateRecs(statesLayer.SearchShape(shape,moPointInPolygon,""));
if(!stateRecs.GetEof())
{
CMoFields stateFields(stateRecs.GetFields());
CMoField stateField(stateFields.Item(COleVariant(TEXT("Shape"))));
CMoPolygon shape1(stateField.GetValue().pdispVal);
CMoRectangle r(shape1.GetExtent());
r.ScaleRectangle(2);
m_map.SetExtent(r); // zoom to the state
m_map.Refresh(); // force redraw
m_map.FlashShape(shape1, 3);
}
}
// CMainFrame* pMainFrame = (CMainFrame*)AfxGetMainWnd();
//ASSERT_VALID(pMainFrame);
// Set up states renderer
}
void CMO20View::OnBeforeLayerDrawMap1(short index, long hDC)
{
// TODO: Add your control notification handler code here
CMoRectangle extent(m_map.GetExtent());
CMoRectangle fullExtent(m_map.GetFullExtent());
BOOL showDetail = (extent.GetWidth() < (fullExtent.GetWidth() / 4.0));
// Set layer visibility
CMoLayers layers(m_map.GetLayers());
CMoMapLayer layer(layers.Item(COleVariant(index)));
switch (index) {
case 1: layer.SetVisible(showDetail);
break; // counties
case 2: layer.SetVisible(!showDetail);
break; // states
}
}
void CMO20View::OnButton32776()
{
// TODO: Add your command handler code here
f1=0;
f2=0;
f3=0;
f4=0;
f5=1;
}
void CMO20View::OnAfterTrackingLayerDrawMap1(long hDC)
{
// TODO: Add your control notification handler code here
if (LPDISPATCH(m_selection) == 0)
return; // No selection to draw
CMoSymbol sym;
sym.CreateDispatch(TEXT("MapObjects2.Symbol"));
sym.SetColor(moCrossFill);
sym.SetSymbolType(moFillSymbol); sym.SetStyle(moLightGrayFill);//experiment with different fill styles
m_selection.MoveFirst();
CMoFields fields(m_selection.GetFields());
CMoField shapeField(fields.Item(COleVariant(TEXT("Shape"))));
CMoPolygon shape;
while (!m_selection.GetEof())
{
shape.AttachDispatch(shapeField.GetValue().pdispVal);
m_map.DrawShape(shape, sym);
m_selection.MoveNext();
}
}
void CMO20View::mapsearch()
{
/*CMainFrame* pMainFrame = (CMainFrame*)AfxGetMainWnd();
ASSERT_VALID(pMainFrame);
// Set up states renderer
//对sates添加注记
CMoLayers layers1(m_map.GetLayers());
CMoMapLayer states1(layers1.Item(COleVariant(TEXT("states"))));
CMoLabelRenderer labRenderer;
labRenderer.CreateDispatch(TEXT("MapObjects2.LabelRenderer"));
labRenderer.SetField(TEXT("state_NAME"));
//states1.SetRenderer(labRenderer);
//对capitals添加注记
CMoMapLayer capitals(layers1.Item(COleVariant(TEXT("capitals"))));
CMoLabelPlacer labelPlacer;
labelPlacer.CreateDispatch(TEXT("MapObjects2.labelPlacer"));
labelPlacer.SetField(TEXT("city_NAME"));
labelPlacer.SetPlaceOn(false);
labelPlacer.SetPlaceAbove(false);
labelPlacer.SetPlaceBelow(true);
labelPlacer.SetDrawBackground(true);//是否显示注记对象要素
//capitals.SetRenderer(labelPlacer);
if(pMainFrame->IsDataCollectionEnabled())
{states1.SetRenderer(labRenderer);
capitals.SetRenderer(labelPlacer);
}*/
}
void CMO20View::OnLabel()
{
CMainFrame* pMainFrame = (CMainFrame*)AfxGetMainWnd();
ASSERT_VALID(pMainFrame);
//对sates添加注记
CMoLayers layers1(m_map.GetLayers());
CMoMapLayer states1(layers1.Item(COleVariant(TEXT("states"))));
CMoLabelRenderer labRenderer;
labRenderer.CreateDispatch(TEXT("MapObjects2.LabelRenderer"));
labRenderer.SetField(TEXT("state_NAME"));
//if(!pMainFrame->IsDataCollectionEnabled())
//states1.SetRenderer(labRenderer);
//对capitals添加注记
CMoMapLayer capitals(layers1.Item(COleVariant(TEXT("capitals"))));
CMoLabelPlacer labelPlacer;
labelPlacer.CreateDispatch(TEXT("MapObjects2.labelPlacer"));
labelPlacer.SetField(TEXT("city_NAME"));
labelPlacer.SetPlaceOn(false);
labelPlacer.SetPlaceAbove(false);
labelPlacer.SetPlaceBelow(true);
labelPlacer.SetDrawBackground(true);//是否显示注记对象要素
//capitals.SetRenderer(labelPlacer);
if(pMainFrame->IsDataCollectionEnabled())
{
states1.SetRenderer(labRenderer);
capitals.SetRenderer(labelPlacer);
}
else
{ states1.SetRenderer(NULL);
capitals.SetRenderer(NULL);
}
m_map.Refresh();
}
void CMO20View::OnMouseDownMap2(short Button, short Shift, long X, long Y)
{
// TODO: Add your control notification handler code here
if (Button==1)
{
m_map.SetMousePointer(moZoomIn);
CMoRectangle rect(m_map1.TrackRectangle());
m_map.SetExtent(rect);
}
else
{
m_mouseIsDragging = true;
CRect rcMap;
m_map1.GetWindowRect(rcMap);
ScreenToClient(rcMap);
m_oldTopLeft = rcMap.TopLeft();
m_oldX = X;
m_oldY = Y;
}
}
void CMO20View::OnMouseMoveMap2(short Button, short Shift, long X, long Y)
{
// TODO: Add your control notification handler code here
// // TODO: Add your control notification handler code here
if (Button == 1)
m_map1.SetMousePointer(moArrow);
if (m_mouseIsDragging)
{
m_mouseIsDragging = false;
long deltaX = m_oldX - X;
long deltaY = m_oldY - Y;
m_map1.SetWindowPos(NULL, m_oldTopLeft.x-deltaX, m_oldTopLeft.y-deltaY, 0, 0,SWP_NOZORDER | SWP_NOSIZE);
}
}
void CMO20View::OnBnDown()
{
// TODO: Add your command handler code here
CRect rcMap;
m_map1.GetWindowRect(rcMap);
ScreenToClient(rcMap);
m_map1.SetWindowPos(NULL, rcMap.left, rcMap.top + 10 , 0, 0,SWP_NOZORDER | SWP_NOSIZE );
}
void CMO20View::OnBnLeft()
{
// TODO: Add your command handler code here
CRect rcMap;
m_map1.GetWindowRect(rcMap);
ScreenToClient(rcMap);
m_map1.SetWindowPos(NULL, rcMap.left - 10, rcMap.top, 0, 0,
SWP_NOZORDER | SWP_NOSIZE);
}
void CMO20View::OnBnRight()
{
// TODO: Add your command handler code here
CRect rcMap;
m_map1.GetWindowRect(rcMap);
ScreenToClient(rcMap);
m_map1.SetWindowPos(NULL, rcMap.left + 10, rcMap.top, 0, 0,
SWP_NOZORDER | SWP_NOSIZE);
}
void CMO20View::OnBnUp()
{
// TODO: Add your command handler code here
CRect rcMap;
m_map1.GetWindowRect(rcMap);
ScreenToClient(rcMap);
m_map1.SetWindowPos(NULL, rcMap.left, rcMap.top - 10 , 0, 0,
SWP_NOZORDER | SWP_NOSIZE );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -