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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? serialsampledoc.cpp

?? vc+mapx 源代碼
?? 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;

	retCode = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\MapInfo\\MapX\\4.0", 0, KEY_READ, &key);
	if(retCode != ERROR_SUCCESS) {
		retCode = RegOpenKeyEx(HKEY_CURRENT_USER, "SOFTWARE\\MapInfo\\MapX\\4.0", 0, KEY_READ, &key);
		if(retCode != ERROR_SUCCESS)
			throw CString("Could not find MapX registry key \"SOFTWARE\\MapInfo\\MapX\\4.0\" in either HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER");
	}

	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;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91久久精品日日躁夜夜躁欧美| 国产亚洲精品福利| 日韩视频中午一区| 精品国产三级电影在线观看| 中文字幕免费一区| 亚洲资源中文字幕| 狠狠色综合播放一区二区| 国产成人亚洲精品青草天美| 色一情一乱一乱一91av| 欧美群妇大交群的观看方式| 久久久久国产精品厨房| 亚洲国产婷婷综合在线精品| 国产乱一区二区| 日本精品一级二级| 久久综合九色综合97_久久久| 亚洲天堂2016| 久久国产精品第一页| 91小视频免费观看| 日韩亚洲欧美在线观看| 亚洲视频一区在线| 久久99久久99| 91福利视频在线| 久久一夜天堂av一区二区三区| 亚洲欧美另类久久久精品2019| 麻豆成人久久精品二区三区红 | 欧美一区二区三区公司| 国产午夜精品福利| 水野朝阳av一区二区三区| 成人av电影免费在线播放| 欧美一级欧美一级在线播放| 中文字幕在线观看不卡| 美腿丝袜亚洲色图| 欧美亚洲综合另类| 久久精品视频免费| 视频一区欧美日韩| 91同城在线观看| 久久先锋资源网| 日韩黄色免费网站| 色94色欧美sute亚洲线路二| 欧美韩日一区二区三区四区| 美腿丝袜一区二区三区| 欧美亚洲动漫精品| 亚洲男同1069视频| 丁香亚洲综合激情啪啪综合| 日韩一区二区免费在线电影| 亚洲一区二区三区中文字幕| 成人亚洲一区二区一| 久久久久国产精品麻豆| 麻豆高清免费国产一区| 欧美老女人在线| 亚洲自拍欧美精品| 色94色欧美sute亚洲线路一久| 国产精品麻豆视频| 国产乱码一区二区三区| 欧美v日韩v国产v| 秋霞影院一区二区| 欧美久久一二三四区| 一区二区三区中文字幕精品精品 | 国产精品美女一区二区三区 | 国产精品免费视频观看| 国内久久婷婷综合| 欧美精品一区二区高清在线观看 | 欧美精品久久天天躁| 亚洲精品一二三区| 91蝌蚪porny成人天涯| 中文字幕一区二区三区av| 大胆亚洲人体视频| 国产精品免费av| av电影在线观看一区| 欧美韩国日本一区| bt7086福利一区国产| 国产精品视频免费| 成人av电影免费观看| 中文字幕一区在线观看| 波波电影院一区二区三区| 国产精品每日更新在线播放网址| 国产精品99久久不卡二区| 久久久亚洲午夜电影| 国产91高潮流白浆在线麻豆| 日本一区二区三区四区在线视频| 国产福利一区二区三区视频| 欧美国产精品v| www.日本不卡| 一区二区三区四区不卡在线| 欧美中文字幕一二三区视频| 亚洲成人综合网站| 制服视频三区第一页精品| 免费成人你懂的| 久久色成人在线| aaa欧美大片| 亚洲午夜三级在线| 91精品国产色综合久久ai换脸| 美女视频一区在线观看| 久久影院视频免费| eeuss鲁片一区二区三区在线观看| 亚洲欧美激情小说另类| 欧美三级视频在线观看| 免费在线视频一区| 久久精品亚洲一区二区三区浴池| 丁香啪啪综合成人亚洲小说| 一区二区三区在线视频播放| 欧美一区二区三区四区在线观看 | 精品国产91洋老外米糕| 国产精品亚洲专一区二区三区| 国产精品国产自产拍高清av| 欧美亚洲尤物久久| 精品亚洲免费视频| 国产精品丝袜黑色高跟| 欧美日韩精品一二三区| 国产精品夜夜嗨| 一区二区三区精品| 日韩一区中文字幕| 日本不卡一区二区三区高清视频| 精品国产91乱码一区二区三区| 成人免费视频视频| 亚洲国产成人高清精品| 欧美精品一区二区三区视频| 色欲综合视频天天天| 蜜臀av性久久久久蜜臀av麻豆| 国产偷国产偷精品高清尤物| 欧美视频完全免费看| 国产原创一区二区| 亚洲黄色尤物视频| 精品国产乱子伦一区| 91丨九色丨蝌蚪富婆spa| 免费观看久久久4p| 中文字幕在线观看一区| 日韩三级在线免费观看| 91色婷婷久久久久合中文| 老司机精品视频导航| 国产精品卡一卡二| 日韩欧美一区电影| 91日韩在线专区| 国产一区二区三区久久悠悠色av| 亚洲美女一区二区三区| 久久精品水蜜桃av综合天堂| 欧美日韩国产在线播放网站| 成人污视频在线观看| 另类小说色综合网站| 亚洲精品免费在线| 久久影院电视剧免费观看| 欧美久久久影院| 99国产精品久久| 国产传媒日韩欧美成人| 日日夜夜一区二区| 亚洲久草在线视频| 国产日韩欧美综合在线| 精品免费视频.| 欧美视频一区二区在线观看| 91污在线观看| 国产成人av电影在线| 日韩不卡在线观看日韩不卡视频| 亚洲欧美日韩在线| 欧美激情在线看| 久久久久综合网| 日韩免费视频线观看| 欧美日韩不卡一区| 欧美午夜精品久久久| 91丝袜美女网| av日韩在线网站| 成人听书哪个软件好| 国产综合色产在线精品| 欧美96一区二区免费视频| 午夜视频久久久久久| 一区二区三区四区国产精品| 成人免费在线观看入口| 欧美激情在线一区二区| 国产三级一区二区| 亚洲精品一区二区三区影院| 欧美一区二区三区系列电影| 777久久久精品| 欧美欧美欧美欧美首页| 欧美军同video69gay| 欧美少妇一区二区| 欧美视频一区二区在线观看| 91久久精品一区二区| 在线观看亚洲成人| 欧美综合色免费| 欧美日韩在线一区二区| 欧美日韩在线电影| 欧美日韩视频在线一区二区| 欧美日韩亚洲不卡| 欧美高清激情brazzers| 欧美日韩国产123区| 欧美福利电影网| 欧美丰满嫩嫩电影| 欧美一区二区三区电影| 欧美一级高清大全免费观看| 日韩一区二区影院| 精品少妇一区二区| 2023国产精品视频| 久久精品亚洲乱码伦伦中文| 日本一区二区三区国色天香 | 狠狠色狠狠色综合日日91app| 久久99久国产精品黄毛片色诱| 经典三级在线一区| 国产精品1024久久| 成人网在线播放| 91福利国产精品| 欧美另类videos死尸|