亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? serialsampledoc.cpp

?? MapX+VC++的SerialSample,地圖示例
?? CPP
字號:
// SerialSampleDoc.cpp : implementation of the CSerialSampleDoc class
//
/* This sample application and corresponding sample code is provided 
 * for example purposes only.  It has not undergone rigorous testing 
 * and as such should not be shipped as part of a final application 
 * without extensive testing on the part of the organization releasing 
 * the end-user product.
 */

#include "stdafx.h"
#include "SerialSample.h"

#include "SerialSampleDoc.h"
#include "IHelper.h"

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

CDaoDatabase CSerialSampleDoc::s_db;

/////////////////////////////////////////////////////////////////////////////
// CSerialSampleDoc

IMPLEMENT_DYNCREATE(CSerialSampleDoc, CDocument)

BEGIN_MESSAGE_MAP(CSerialSampleDoc, CDocument)
	//{{AFX_MSG_MAP(CSerialSampleDoc)
		// NOTE - the ClassWizard will add and remove mapping macros here.
		//    DO NOT EDIT what you see in these blocks of generated code!
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSerialSampleDoc construction/destruction

CSerialSampleDoc::CSerialSampleDoc()
{
	// TODO: add one-time construction code here
}

CSerialSampleDoc::~CSerialSampleDoc()
{
	if(s_db.IsOpen())
		s_db.Close();
}

/////////////////////////////////////////////////////////////////////////////
// CSerialSampleDoc serialization

void CSerialSampleDoc::Serialize(CArchive& ar)
{
	if (ar.IsStoring())
	{
		// TODO: add storing code here
	}
	else
	{
		// TODO: add loading code here
	}
}

/////////////////////////////////////////////////////////////////////////////
// CSerialSampleDoc diagnostics

#ifdef _DEBUG
void CSerialSampleDoc::AssertValid() const
{
	CDocument::AssertValid();
}

void CSerialSampleDoc::Dump(CDumpContext& dc) const
{
	CDocument::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CSerialSampleDoc commands

/*
 * Public Accessor for the Map control (for CSerialSampleView). Returns NULL
 * if it isn't valid yet.
 */
CMapX* CSerialSampleDoc::GetMap() {
	if(m_ctrlMapX.m_hWnd == NULL)
		return NULL;
	else
		return &m_ctrlMapX;
}

CSerialSampleView* CSerialSampleDoc::GetMainView() {
	POSITION pos = GetFirstViewPosition();
	CView* view = GetNextView(pos);
	if(view != NULL && view->IsKindOf(RUNTIME_CLASS(CSerialSampleView)))
		return static_cast<CSerialSampleView*>(view);
	else
		return NULL;
}

BOOL CSerialSampleDoc::OnNewDocument()
{
	if (!CDocument::OnNewDocument())
		return FALSE;

	CSerialSampleView* view = GetMainView();
	if(view == NULL)
		return FALSE;
	
	RECT windRect;
	
	view->GetClientRect(&windRect);
	if(!m_ctrlMapX.Create(NULL, WS_VISIBLE, windRect, view, IDC_MAP))
		return FALSE;
	
	return TRUE;
}

BOOL CSerialSampleDoc::OnOpenDocument(LPCTSTR lpszPathName) 
{
	if (!CDocument::OnOpenDocument(lpszPathName))
		return FALSE;

	CSerialSampleView* view = GetMainView();
	if(view == NULL)
		return FALSE;
	

	CFileException except;
	CFile* file = GetFile(lpszPathName, CFile::modeReadWrite | CFile::modeNoTruncate, &except);

	if(file == NULL)
		return FALSE;
	
	RECT windRect;
	view->GetClientRect(&windRect);
	
	if(!m_ctrlMapX.Create(NULL, WS_VISIBLE, windRect, view, IDC_MAP, file, TRUE)) {
		file->Close();
		return FALSE;
	}

	file->Close();
	
	IStorage* stg, *dsstg;
	try {
		stg = OpenStorage(lpszPathName);
		dsstg = OpenSubstorage(stg,"DATASETS");

		CStringList datasets;
		EnumElementNames(&datasets, dsstg);
		CDaoDatabase* curDB = GetDB();

		for(POSITION i = datasets.GetHeadPosition(); i != NULL; ) {
			COleVariant rsVt;
			const CString stgName = datasets.GetNext(i);
			CString dsName;
			dsName = ReadStream(dsstg, stgName);
			CDaoRecordset rs(curDB);
			rs.Open(dbOpenTable, dsName);

			rsVt.vt = VT_DISPATCH;
			rsVt.pdispVal = rs.m_pDAORecordset;
			rsVt.pdispVal->AddRef();

			m_ctrlMapX.GetDatasets().Restore(dsName,rsVt);
			rs.Close();
		}
	} catch(COleDispatchException* e) {
		e->ReportError();
		e->Delete();
	} catch(COleException* e) {
		e->ReportError();
		e->Delete();
	} catch(CFileException* e) {
		e->Delete();
	}

	// Executed even when an error is thrown
	CloseStorage(dsstg);
	CloseStorage(stg);

	return TRUE;
}

BOOL CSerialSampleDoc::OnSaveDocument(LPCTSTR lpszPathName) 
{
	IPersistStorage* persStg = NULL;
	IUnknown* control;
	IStorage *stg, *dsstg;
	HRESULT result;
	try {
		stg = CreateStorage(lpszPathName);
	} catch(CFileException* e) {
		e->Delete();
		return FALSE;
	}

	dsstg = CreateSubstorage(stg, "DATASETS");

	CString stgName;
	for(int i = 1; i <= m_ctrlMapX.GetDatasets().GetCount(); i++) {
		stgName.Format("%d", i);
		CreateStream(dsstg, stgName, m_ctrlMapX.GetDatasets().Item(i).GetName());
	}

	SaveStorage(dsstg);

	control = m_ctrlMapX.GetControlUnknown();
	if(control == NULL)
		return FALSE;

	control->QueryInterface(IID_IPersistStorage,(void**)&persStg);
	if(persStg == NULL) {
		CloseStorage(stg);
		return FALSE;
	}
	
	result = OleSave(persStg, stg, FALSE);

	persStg->Release();
	CloseStorage(stg);

	if(result != S_OK)
		return FALSE;
	else
		return TRUE;
}

CDaoDatabase* CSerialSampleDoc::GetDB() {
	if(!s_db.IsOpen()) {
		try {
			const CString dbPath = GetDBPath();
			s_db.Open(dbPath);
		} catch(CString s) { // couldn't find path to demographic database
			return NULL;
		}
	}
	if(s_db.IsOpen())
		return &s_db;
	else
		return NULL;
}

void CSerialSampleDoc::AddDataset(const CString tableName) {
	CDaoRecordset rs(GetDB());
	COptionalVariant optVt;
	COleVariant titleVt(tableName);
	COleVariant rsVt;
	COleVariant bindLayerVt;
	COleVariant geofieldVt;

	rs.Open(dbOpenTable, tableName);
	rsVt.vt = VT_DISPATCH;
	rsVt.pdispVal = rs.m_pDAORecordset;
	rsVt.pdispVal->AddRef();

	if(tableName == "USA") {
		bindLayerVt = "USA";
		geofieldVt = "GEOABBR";
	} else if(tableName == "US_cust") {
		bindLayerVt = "USA";
		geofieldVt = "STATE";
	} else if(tableName.Find("County") == 0) {
		bindLayerVt = "US County Boundaries";
		geofieldVt = "Cnty_fips";
	} else {
		bindLayerVt.vt = VT_ERROR;
		bindLayerVt.scode = DISP_E_PARAMNOTFOUND;
		geofieldVt.vt = VT_ERROR;
		geofieldVt.scode = DISP_E_PARAMNOTFOUND;
	}

	try {
		theApp.DoWaitCursor(1);
		if(GetMap() != NULL)
			GetMap()->GetDatasets().Add(miDataSetDAO, rsVt, titleVt, geofieldVt, optVt, bindLayerVt, optVt, optVt);
		theApp.DoWaitCursor(0);
	} catch(COleDispatchException* e) {
		e->ReportError();
		e->Delete();
	} catch(COleException* e) {
		e->ReportError();
		e->Delete();
	}
}

/*
 * Try to locate the MapStats.mdb demographic database. If it succeeds, it will return 
 * the path to the database. If it fails, it will return the empty string.
 */
const CString CSerialSampleDoc::GetDBPath() /*throw(CString)*/{
	// find the MapX path from the registry, then, search for <MapX path>\Data\MapStats.mdb
	DWORD retCode;
	HKEY key;

	CString strKey("SOFTWARE\\MapInfo\\MapX\\");
	CString strVer = m_ctrlMapX.GetVersion();
	int v1, v2, v3;
	sscanf(strVer.GetBuffer(0), "%d.%d.%d", &v1, &v2, &v3);
	strVer.Format("%d.0", v1);
	strKey = strKey + strVer;
	retCode = RegOpenKeyEx(HKEY_LOCAL_MACHINE, strKey, 0, KEY_READ, &key);
	if(retCode != ERROR_SUCCESS) {
		retCode = RegOpenKeyEx(HKEY_CURRENT_USER, strKey, 0, KEY_READ, &key);
		if(retCode != ERROR_SUCCESS) {
			CString strMsg("Could not find MapX registry key \"");
			strMsg = strMsg + strKey + "\" in either HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER";
			throw strMsg;
		}
	}

	ULONG valueLength = MAX_PATH;
	CString path;
	DWORD type;
	retCode = RegQueryValueEx(key, "ProgramDir", NULL, &type, (LPBYTE)path.GetBuffer(valueLength), &valueLength);
	path.ReleaseBuffer();

	RegCloseKey(key);

	if(retCode != ERROR_SUCCESS)
		throw CString("Found MapX in registry, but could not open subkey \"ProgramDir\"");

	if(type != REG_SZ)
		throw CString("Found MapX ProgramDir key in registry, but it is of non-string type");

	path += "\\Data\\MapStats.mdb";

	if(!FileExists(path)) {
		CString msg;
		msg.Format("Could not find demographic database \"%s\"", path);
		throw msg;
	}
	return path;
}

bool CSerialSampleDoc::FileExists(const CString path) {
	CFileStatus fileStat;

	return CFile::GetStatus(path, fileStat) != 0;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91亚洲国产成人精品一区二区三| 亚洲美女视频在线观看| 精品亚洲免费视频| 日韩欧美资源站| 久久99久久99小草精品免视看| 日韩女优制服丝袜电影| 九九视频精品免费| 国产视频一区二区三区在线观看| 国产成人精品影视| 亚洲欧美色综合| 欧美日韩国产一级| 韩国成人福利片在线播放| 欧美国产一区在线| 在线亚洲高清视频| 日韩va欧美va亚洲va久久| 精品国内二区三区| av电影天堂一区二区在线| 一区二区视频在线| 日韩一本二本av| 懂色av一区二区三区蜜臀| 亚洲永久精品国产| 日韩视频在线你懂得| 成人性色生活片| 亚洲一线二线三线视频| 欧美一级欧美三级| 成人免费视频视频在线观看免费| 亚洲精品videosex极品| 日韩精品一区二区三区视频播放 | 99久久婷婷国产综合精品| 亚洲小说春色综合另类电影| 精品乱人伦小说| av中文字幕不卡| 国产电影一区在线| 亚洲一区二区三区中文字幕在线| 日韩欧美国产电影| 色婷婷亚洲精品| 激情av综合网| 婷婷久久综合九色国产成人| 久久精品一区四区| 欧美久久一二区| 成年人网站91| 蜜桃av噜噜一区| 一区二区三区.www| 中文字幕成人网| 日韩精品一区在线| 欧美三级视频在线观看| 国产99久久久精品| 人禽交欧美网站| 亚洲精品ww久久久久久p站| 2014亚洲片线观看视频免费| 欧美日韩另类一区| 一本色道**综合亚洲精品蜜桃冫| 国产一区二区精品久久91| 偷拍亚洲欧洲综合| 中文字幕制服丝袜一区二区三区| 日韩精品一区二区三区在线| 欧美亚洲自拍偷拍| 91在线观看免费视频| 国产成人综合网站| 久久精品久久99精品久久| 亚洲地区一二三色| 一区二区三区自拍| 亚洲国产精品ⅴa在线观看| 精品理论电影在线观看| 欧美一区二区三区四区视频| 欧美亚洲高清一区二区三区不卡| 丁香婷婷综合五月| 国模一区二区三区白浆| 久久er99热精品一区二区| 亚洲3atv精品一区二区三区| 亚洲图片欧美激情| 中文字幕乱码久久午夜不卡| 久久一区二区视频| 精品久久久久久无| 日韩欧美电影一二三| 日韩美女一区二区三区| 国产精品免费av| 国产亚洲综合色| 久久久久国色av免费看影院| 337p粉嫩大胆色噜噜噜噜亚洲| 欧美一级生活片| 精品动漫一区二区三区在线观看| 日韩免费电影一区| 日韩欧美一区中文| 欧美不卡视频一区| 精品99999| 久久精品一区二区三区不卡| 国产欧美视频一区二区| 久久久天堂av| 中文欧美字幕免费| 国产精品天干天干在观线| 中文字幕制服丝袜成人av| 日韩一区中文字幕| 亚洲黄色尤物视频| 日韩精彩视频在线观看| 看电视剧不卡顿的网站| 另类中文字幕网| 国产精品亚洲一区二区三区在线| 国产jizzjizz一区二区| 日本精品一级二级| 欧美精品三级在线观看| 久久理论电影网| 国产精品电影院| 五月婷婷另类国产| 国产乱码精品一区二区三| www.亚洲免费av| 91福利视频网站| 欧美电影精品一区二区| 国产精品三级视频| 亚洲午夜电影在线| 精品一区二区三区免费观看| 丁香六月综合激情| 欧美日韩成人一区| 久久久久久久久免费| 国产精品免费看片| 人妖欧美一区二区| 成人av免费在线播放| 欧美日韩在线播放三区四区| 欧美zozo另类异族| 日韩理论电影院| 国内偷窥港台综合视频在线播放| 97超碰欧美中文字幕| 日韩欧美一级二级三级久久久| ...xxx性欧美| 精品亚洲porn| 欧美亚洲国产一卡| 国产精品嫩草99a| 欧洲一区二区三区免费视频| 日韩视频中午一区| 亚洲综合色网站| 国产精品亚洲第一| 欧美理论在线播放| 亚洲欧洲在线观看av| 精品一区二区三区在线播放视频 | 在线观看视频一区二区| 久久久久高清精品| 婷婷成人综合网| 91一区一区三区| 久久精品人人爽人人爽| 免费的国产精品| 欧美美女一区二区在线观看| 国产精品久久久99| 狠狠色丁香婷综合久久| 欧美日本在线播放| 亚洲欧美另类久久久精品2019| 国产一区在线观看麻豆| 这里只有精品视频在线观看| 国产精品国产三级国产aⅴ中文| 精品一区二区在线视频| 欧美日韩中文精品| 亚洲视频一二三| 国产mv日韩mv欧美| 久久久久久一级片| 老司机精品视频在线| 欧美日韩卡一卡二| 亚洲综合免费观看高清完整版在线 | 欧美日韩免费一区二区三区 | 久久精品在线免费观看| 蜜臀久久久久久久| 欧美日韩高清一区二区| 亚洲在线一区二区三区| 在线观看亚洲精品| 一区二区视频免费在线观看| 色伊人久久综合中文字幕| 中文字幕不卡三区| 成人av资源下载| 中文字幕国产一区二区| 国产成人在线视频网址| 久久婷婷色综合| 国产一区二区在线视频| 欧美videossexotv100| 精品一区二区三区免费视频| 日韩欧美亚洲另类制服综合在线| 日本美女一区二区| 日韩精品综合一本久道在线视频| 美女视频一区二区三区| 精品国产乱子伦一区| 久久99国产精品免费| 久久日一线二线三线suv| 国产剧情一区二区三区| 国产欧美日韩在线看| 成人午夜看片网址| 国产精品久久国产精麻豆99网站 | 欧美电视剧在线观看完整版| 国产综合成人久久大片91| 国产日韩欧美综合在线| 成人免费视频一区| 亚洲一区二区影院| 欧美精品vⅰdeose4hd| 蜜臀av一区二区| 久久久噜噜噜久久中文字幕色伊伊| 国产成人亚洲综合a∨婷婷图片 | 久久综合九色综合欧美亚洲| 国产一区二区在线影院| 国产精品萝li| 欧美日韩在线精品一区二区三区激情| 亚洲成人综合在线| 精品久久久久久最新网址| 成人v精品蜜桃久久一区| 亚洲精品久久久久久国产精华液|