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

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

?? stgxml.h

?? These listed libraries are written in WTL. But it s really hard to mix both MFC & WTL together. Obvi
?? H
字號:
// Copyright (c) 2006
// Sergey Klimov (kidd@ukr.net)

#ifndef __WTL_DW__STGXML_H__
#define __WTL_DW__STGXML_H__

#include <stg.h>
#include <cassert>

namespace sstate{


class CStgXML
	: public IStorge
{
public:
	CStgXML(void)
	{
	}

	virtual ~CStgXML(void)
	{
	}

	IXMLDOMElement* Root(void)
	{
		return m_key;
	}

	bool operator !(void) const
	{
		return !m_key;
	}

	long Create(LPCTSTR name=_T("config"),LPCOLESTR msxmlDocClassName=OLESTR("Msxml2.FreeThreadedDOMDocument"))
	{
		assert(!m_key);
		CComPtr<IXMLDOMDocument> doc;
		HRESULT res=doc.CoCreateInstance(msxmlDocClassName);
		if(SUCCEEDED(res))
		{
			res=doc->createElement(CComBSTR(name),&m_key);
			if(!m_key)
				res=E_UNEXPECTED;
		}
		return res;
	}
	
	virtual long Create(IStorge& parent,LPCTSTR name,Modes mode)
	{
		assert(!(!static_cast<CStgXML&>(parent)));
		assert(!m_key);
		HRESULT res=Open(parent,name,mode);
		if(res!=S_OK)
		{
			CComPtr<IXMLDOMDocument> doc;
			res=static_cast<CStgXML&>(parent).m_key->get_ownerDocument(&doc);
			if(SUCCEEDED(res))
			{
				if(!doc)
					res=E_UNEXPECTED;
				else
				{
					res=doc->createElement(CComBSTR(name),&m_key);
					if(SUCCEEDED(res))
					{
						if(!m_key)
							res=E_UNEXPECTED;
						else
						{
							CComPtr<IXMLDOMNode> nu;
							res=static_cast<CStgXML&>(parent).m_key->appendChild(m_key,&nu);
						}
					}
				}
			}
		}
		return res;
	}

	virtual long Open(IStorge& parent,LPCTSTR name,Modes /*mode*/)
	{
		assert(!(!static_cast<CStgXML&>(parent)));
		assert(!m_key);
		return Open(static_cast<IXMLDOMNode*>(static_cast<CStgXML&>(parent).m_key),name);
	}


	virtual long SetString(LPCTSTR name,LPCTSTR data)
	{
		assert(!(!m_key));
		return m_key->setAttribute(CComBSTR(name),CComVariant(data));

	}

	virtual long GetString(LPCTSTR name,LPTSTR data,size_t& size)
	{
		assert(!(!m_key));
		CComVariant val;
		long res=m_key->getAttribute(CComBSTR(name),&val);
		if(SUCCEEDED(res))
		{
			if(val.vt==VT_BSTR)
			{
				size_t len=size_t(::SysStringLen(val.bstrVal));
#ifdef  UNICODE 
				if(size>=(len+1))
				{
					std::char_traits<OLECHAR>::copy(data,val.bstrVal,len);
					data[len]=_T('\0');
				}
#else
				int slen=len;
				len=::WideCharToMultiByte(CP_OEMCP,0,val.bstrVal,slen,0,0,NULL,NULL)/sizeof(TCHAR);
				if(size>=len)
				{
					len=::WideCharToMultiByte(CP_OEMCP,0,val.bstrVal,slen,data,size*sizeof(TCHAR),NULL,NULL)/sizeof(TCHAR);
					if(len==0)
						res=::GetLastError();
					--len;
				}
#endif	//UNICODE
				else
					res=ERROR_MORE_DATA;
				size=len;
			}
			else
				res=(val.vt==VT_NULL)?ERROR_FILE_NOT_FOUND:ERROR_UNSUPPORTED_TYPE;
		}
		return res;
	}

	long Load(LPCTSTR filename,LPCTSTR name=_T("config"),LPCOLESTR msxmlDocClassName=OLESTR("Msxml2.FreeThreadedDOMDocument"))
	{
		assert(!m_key);
		CComPtr<IXMLDOMDocument> doc;
		long res=doc.CoCreateInstance(msxmlDocClassName);
		if(SUCCEEDED(res))
		{
			if(!doc)
				res=E_UNEXPECTED;
			else
			{
				res=doc->put_async(VARIANT_FALSE);
				if(SUCCEEDED(res))
				{
					VARIANT_BOOL loaded;
					res=doc->load(CComVariant(filename),&loaded);
					if(SUCCEEDED(res))
					{
						if(loaded==VARIANT_TRUE)
							res=Open(static_cast<IXMLDOMNode*>(doc),name);
						else
							res=E_FAIL;
					}

				}
			}
		}
		return res;
	}

	long Save(LPCTSTR filename)
	{
		assert(!(!m_key));
		CComPtr<IXMLDOMDocument> doc;
		long res=m_key->get_ownerDocument(&doc);
		if(SUCCEEDED(res))
		{
			if(!doc)
				res=E_UNEXPECTED;
			else
			{
				CComPtr<IXMLDOMNode> parent;
				res=m_key->get_parentNode(&parent);
				if(SUCCEEDED(res)
					&& !parent)
				{
					CComPtr<IXMLDOMProcessingInstruction> pi;
					if(SUCCEEDED(doc->createProcessingInstruction(CComBSTR(OLESTR("xml")),CComBSTR(OLESTR("version=\"1.0\"")),&pi)))
					{
						CComPtr<IXMLDOMNode> nu;
						doc->appendChild(pi,&nu);
					}

					CComPtr<IXMLDOMNode> nu;
					res=doc->appendChild(m_key,&nu);
					if(FAILED(res))
						return res;
				}
				res=doc->save(CComVariant(filename));
			}
		}
		return res;
	}
protected:
	long Open(IXMLDOMNode* parent,LPCTSTR name)
	{
		assert(parent!=0);
		assert(!m_key);
		CComPtr<IXMLDOMNode> node;
		HRESULT res=parent->selectSingleNode(CComBSTR(name),&node);
		if(SUCCEEDED(res))
		{
			if(!node)
				res=ERROR_FILE_NOT_FOUND;
			else
			{
				res=node.QueryInterface(&m_key);
				if(SUCCEEDED(res)
					&& (!m_key))
					res=E_UNEXPECTED;
			}
		}
		return res;
	}
private:
	CStgXML(const CStgXML&);
	CStgXML& operator=(const CStgXML&);
private:
	CComPtr<IXMLDOMElement> m_key;
};

}//namespace sstate

#endif // __WTL_DW__STGXML_H__

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91亚洲精品乱码久久久久久蜜桃| 欧美一区二区三区视频在线观看| 夜夜揉揉日日人人青青一国产精品 | 亚洲午夜激情网页| 国产精品电影一区二区三区| 欧美精品一区二区久久久| 91精品国产手机| 国产精品久99| 国产精品中文欧美| 国产精品资源在线观看| 欧美剧在线免费观看网站 | 国产suv精品一区二区三区| 国产精品自拍一区| 欧美电影影音先锋| 一区二区三区在线观看动漫| 成人app软件下载大全免费| 99久久精品国产麻豆演员表| 在线免费亚洲电影| 欧美群妇大交群中文字幕| 日韩一区二区麻豆国产| 久久日韩粉嫩一区二区三区| 欧美三级在线看| 精品少妇一区二区三区在线视频| 国产日韩欧美一区二区三区乱码 | 精品国产乱子伦一区| 亚洲国产成人高清精品| 色综合激情久久| 欧美日韩成人激情| 亚洲一区二区欧美日韩| 国产永久精品大片wwwapp | 九色综合国产一区二区三区| 成人三级在线视频| 欧美美女黄视频| 亚洲一区二区三区美女| 欧美视频一区二区三区四区| 国产亚洲成aⅴ人片在线观看| 亚洲午夜成aⅴ人片| 欧美日韩一区二区三区四区五区| 亚洲成人三级小说| 成人午夜伦理影院| 日韩毛片精品高清免费| 美女看a上一区| 96av麻豆蜜桃一区二区| 亚洲私人黄色宅男| 在线观看免费一区| 亚洲一区免费观看| 91精品国产色综合久久久蜜香臀| 美脚の诱脚舐め脚责91| 精品黑人一区二区三区久久| 国产一区二区三区不卡在线观看| 久久久久久9999| 97精品超碰一区二区三区| 一区二区三区不卡视频在线观看| 欧美日本国产一区| 精品一区二区三区欧美| 国产精品嫩草影院av蜜臀| 狂野欧美性猛交blacked| 欧洲精品在线观看| 日韩av一二三| 欧美成人一区二区三区片免费| 久久国产成人午夜av影院| 国产欧美视频一区二区三区| 色一情一乱一乱一91av| 午夜av一区二区| 欧美日韩一级二级| 国产一区二区视频在线| 亚洲欧美日韩在线| 97久久精品人人爽人人爽蜜臀| 日韩毛片在线免费观看| 欧美日产国产精品| 成人午夜看片网址| 日韩在线一区二区三区| 欧美视频在线一区二区三区| 久久精品噜噜噜成人av农村| 一区在线观看免费| 99久久久免费精品国产一区二区 | 日本中文字幕不卡| 国产精品日韩成人| 欧美一区二区成人| 99久久免费精品| 久久福利资源站| 亚洲成人动漫在线免费观看| 国产欧美日韩在线视频| 6080yy午夜一二三区久久| 亚洲影视在线播放| 国产人久久人人人人爽| 欧美精品1区2区| 91浏览器在线视频| 国产精品一区二区男女羞羞无遮挡 | av在线综合网| 亚洲六月丁香色婷婷综合久久 | 日韩免费视频一区| 全部av―极品视觉盛宴亚洲| 日韩一级视频免费观看在线| 色综合久久久久综合体桃花网| 蜜桃久久精品一区二区| 精品写真视频在线观看| 一区二区欧美视频| |精品福利一区二区三区| 国产午夜精品一区二区三区嫩草| 日韩一区和二区| 欧美精品 国产精品| 91国产免费观看| 免费在线观看成人| 丝袜诱惑制服诱惑色一区在线观看| 亚洲日本丝袜连裤袜办公室| 久久久久久麻豆| 精品sm捆绑视频| 欧美xxxx老人做受| 欧美mv日韩mv亚洲| 欧美成人一区二区三区在线观看| 欧美一级理论性理论a| 欧美高清激情brazzers| 欧美精品九九99久久| 欧美日本国产视频| 欧美一区二区人人喊爽| 91精品麻豆日日躁夜夜躁| 91精品一区二区三区久久久久久| 欧美日韩成人综合天天影院| 欧美电影一区二区| 日韩欧美一区中文| 久久日韩粉嫩一区二区三区| 久久精品视频一区| 国产精品免费丝袜| 亚洲三级视频在线观看| 亚洲一区在线观看免费观看电影高清| 亚洲综合一区二区精品导航| 五月婷婷激情综合网| 午夜精品123| 精品在线播放免费| 国产传媒日韩欧美成人| 日韩一区精品视频| 黄色精品一二区| 日韩和欧美一区二区三区| 毛片一区二区三区| 国产精品亚洲人在线观看| 成人午夜av电影| 欧美又粗又大又爽| 欧美一卡2卡3卡4卡| 久久综合九色综合久久久精品综合| 久久久国产一区二区三区四区小说| 欧美高清在线精品一区| 日韩三级av在线播放| 久久久久久久久久看片| 亚洲特级片在线| 免费观看成人鲁鲁鲁鲁鲁视频| 国产一区二区三区在线观看免费| www.色精品| 欧美美女网站色| 国产精品国产a级| 丝袜亚洲精品中文字幕一区| 国产成人免费视频精品含羞草妖精| 91麻豆视频网站| 精品久久久影院| 亚洲综合无码一区二区| 精品一区二区三区在线视频| av在线播放成人| 日韩一级完整毛片| 亚洲精品亚洲人成人网| 一本在线高清不卡dvd| 欧美一级片在线| 亚洲精品美国一| 国产一区 二区| 欧美日韩精品一区二区三区| 国产女同性恋一区二区| 青青草91视频| 91福利国产成人精品照片| 国产日韩精品一区二区三区| 婷婷久久综合九色国产成人| 99精品国产99久久久久久白柏| 制服丝袜av成人在线看| 亚洲精品乱码久久久久久日本蜜臀| 国产综合色在线视频区| 欧美情侣在线播放| 亚洲视频在线观看一区| 国产精品456| 日韩视频一区二区三区| 亚洲资源中文字幕| 成人av一区二区三区| 亚洲精品在线网站| 日韩av中文字幕一区二区| 欧美性高清videossexo| 日韩一区欧美一区| 国产91精品一区二区麻豆网站| 欧美va亚洲va在线观看蝴蝶网| 亚洲成a人v欧美综合天堂下载 | 国产乱码精品一区二区三区五月婷 | 色天天综合色天天久久| 亚洲国产精品高清| 狠狠色丁香久久婷婷综| 欧美一区二区视频网站| 五月婷婷欧美视频| 欧美日韩国产一级片| 亚洲一区二区三区中文字幕 | 91精品国产福利| 午夜精品福利在线| 91精品蜜臀在线一区尤物| 爽好多水快深点欧美视频| 欧美精品免费视频| 日韩激情中文字幕|