From d912c0e116080cf2583fc276fde2c530b9f8f956 Mon Sep 17 00:00:00 2001
From: xj qian <qianxj15@sina.com>
Date: 星期三, 11 十二月 2024 16:33:18 +0800
Subject: [PATCH] update

---
 jrj/xframe/devloper/XDevEditDbmap.cpp   |   16 
 jrj/xframe/kobject/kreport.hpp          |    7 
 jrj/xframe/devloper/XDevEditXDV.cpp     |   13 
 jrj/xframe/devloper/XDevEditXAction.cpp |    9 
 jrj/xframe/devloper/XDevEditXApp.cpp    |   73 +++---
 jrj/ext-jrj/ext-jrj.vcxproj             |   56 ++--
 jrj/xframe/devloper/XDevEditXFile.cpp   |   12 
 jrj/xframe/devloper/XDevEditXRuler.cpp  |    2 
 jrj/xframe/devloper/XDevEditXMSSQL.cpp  |   42 ++-
 jrj/xframe/kobject/kxml.hpp             |  386 +++++++++++++++++++++++++++++++++++
 jrj/xframe/devloper/XDevEditXML.cpp     |   11 
 11 files changed, 518 insertions(+), 109 deletions(-)

diff --git a/jrj/ext-jrj/ext-jrj.vcxproj b/jrj/ext-jrj/ext-jrj.vcxproj
index 49ace90..1c5947d 100644
--- a/jrj/ext-jrj/ext-jrj.vcxproj
+++ b/jrj/ext-jrj/ext-jrj.vcxproj
@@ -1176,60 +1176,60 @@
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
     </ClCompile>
     <ClCompile Include="..\xframe\devloper\XDevEditDbmap.cpp">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
     </ClCompile>
     <ClCompile Include="..\xframe\devloper\XDevEditXAction.cpp">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
     </ClCompile>
     <ClCompile Include="..\xframe\devloper\XDevEditXApp.cpp">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
     </ClCompile>
     <ClCompile Include="..\xframe\devloper\XDevEditXDV.cpp">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
     </ClCompile>
     <ClCompile Include="..\xframe\devloper\XDevEditXFile.cpp">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
     </ClCompile>
     <ClCompile Include="..\xframe\devloper\XDevEditFlow.cpp">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
     </ClCompile>
     <ClCompile Include="..\xframe\devloper\XDevEditHtml.cpp">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
     </ClCompile>
     <ClCompile Include="..\xframe\devloper\XDevEditXLayer.cpp">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
     </ClCompile>
     <ClCompile Include="..\xframe\devloper\XDevEditXML.cpp">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
     </ClCompile>
     <ClCompile Include="..\xframe\devloper\XDevEditXMSSQL.cpp">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
     </ClCompile>
     <ClCompile Include="..\xframe\devloper\XDevEditXOffice.cpp">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
     </ClCompile>
     <ClCompile Include="..\xframe\devloper\XDevEditXPage.cpp">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
     </ClCompile>
     <ClCompile Include="..\xframe\devloper\XDevEditXQuery.cpp">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
     </ClCompile>
     <ClCompile Include="..\xframe\devloper\XDevEditXRuler.cpp">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
     </ClCompile>
     <ClCompile Include="..\xframe\devloper\XDevEditXWKDlg.cpp">
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
diff --git a/jrj/xframe/devloper/XDevEditDbmap.cpp b/jrj/xframe/devloper/XDevEditDbmap.cpp
index 3b3cd2d..284b62f 100644
--- a/jrj/xframe/devloper/XDevEditDbmap.cpp
+++ b/jrj/xframe/devloper/XDevEditDbmap.cpp
@@ -5,13 +5,14 @@
 #include <xcontrol/xtreeview.hpp>
 #include <xcontrol/xlayersheet.hpp>
 #include <xcontrol/xsedit.hpp>
+#include "XDevEditPage.hpp"
 
 
 using xml = KXMLDOMDocument;
-class export XDevEditDbmap : public xwin
+class export XDevEditDbmap : public XDevEditPage
 {
 	public:
-	XDevEditDbmap(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {}
+	XDevEditDbmap(void* implPtr, HWND hWnd) :XDevEditPage(implPtr, hWnd) {}
 public:
 	static XDevEditDbmap* CreateInstance(void* implPtr, void* hWnd)
 	{
@@ -172,7 +173,7 @@
 			xml x;
 			if (!x.loadXML(content))
 			{
-				KXMLDOMParseError pError = x.parseError;
+				KXMLDOMParseError pError = x.parseError();
 				if (pError)
 				{
 					xstring str = pError.srcText();
@@ -197,8 +198,8 @@
 			xstring sType = OnGetType();
 			if (sType ==L"xml.xsd")
 			{
-				xstring sError;
-				x.ValidSchema(content, &sError);
+				BSTR sError;
+				x.ValidSchema(content.c_str(), sError);
 				trace(sError);
 			}
 		}
@@ -237,7 +238,7 @@
 		if (content ==L"") return -1;
 		xwin w = GetFrameWindow();
 		xtreeview tv_folder = w.GetControl(L"DevExplorer");
-		HTREEITEM hItem = GetWinParam();
+		HTREEITEM hItem = (HTREEITEM)GetWinParam();
 		KXMLDOMElement e = tv_folder.GetItemData(hItem);
 		//trace(e.xml);
 		xstring str = e.getAttribute(L"type");
@@ -261,7 +262,7 @@
 		xstring aurl =L"";
 		if (n)
 		{
-			xstring tmp =L"" + n.text();
+			xstring tmp =n.text();
 			aurl =L"/sale/" + xtype +L"/" + tmp +L"/" + content;
 		}
 		else
@@ -296,6 +297,7 @@
 		//获取焦点事件,用于重置工具条
 		AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditDbmap::OnSetFocus);
 		//AttachEvent(L"content",L"WM_LBUTTONDOWN", (FEvent)&XDeveloper::OnLButtonDown);
+		return 1;
 	}
 
 	int OnInitial()
diff --git a/jrj/xframe/devloper/XDevEditXAction.cpp b/jrj/xframe/devloper/XDevEditXAction.cpp
index 2d29c07..4a4b0d1 100644
--- a/jrj/xframe/devloper/XDevEditXAction.cpp
+++ b/jrj/xframe/devloper/XDevEditXAction.cpp
@@ -7,12 +7,13 @@
 #include <xcontrol/xdwgrid.hpp>
 #include <xcontrol/xsedit.hpp>
 #include <xcontrol/xcombobox.hpp>
+#include "XDevEditPage.hpp"
 
 using xml = KXMLDOMDocument;
-class export XDevEditAction : public xwin
+class export XDevEditAction : public XDevEditPage
 {
 	public:
-	XDevEditAction(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {}
+	XDevEditAction(void* implPtr, HWND hWnd) :XDevEditPage(implPtr, hWnd) {}
 public:
 	static XDevEditAction* CreateInstance(void* implPtr, void* hWnd)
 	{
@@ -68,7 +69,7 @@
 			xstring v = e1.getAttribute(L"source");
 			xc.SetText(L"" + v);
 			xc = GetControl(L"linkname");
-			xstring v = e1.getAttribute(L"link");
+			v = e1.getAttribute(L"link");
 			xc.SetText(L"" + v);
 
 			KXMLDOMElement e2 = e.selectSingleNode(L"paras");
@@ -176,6 +177,8 @@
 		AttachEvent(L"WM_XCOMMAND", (FEvent) & XDevEditAction::OnXCommand);
 		//获取焦点事件,用于重置工具条
 		AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditAction::OnSetFocus);
+
+		return 1;
 	}
 
 	int OnInitial()
diff --git a/jrj/xframe/devloper/XDevEditXApp.cpp b/jrj/xframe/devloper/XDevEditXApp.cpp
index d7f0152..c47e298 100644
--- a/jrj/xframe/devloper/XDevEditXApp.cpp
+++ b/jrj/xframe/devloper/XDevEditXApp.cpp
@@ -74,6 +74,8 @@
 			xstring p = L"<box name='image_view' width='22'><xtoolbutton caption='' image='" + xstring(j) + L"'/></box>";
 			SetAgentNode(anode,p);
 		}
+
+		return 1;
 	}
 
 	int onClare()
@@ -125,13 +127,15 @@
 		SendMessage(xc.GetHWND(), 0x014E, 0, 0);
 
 		OnCombSelChanged();
+
+		return 1;
 	}
 
 	xstring getTVData(HTREEITEM hitem)
 	{
 		xstring result = L"";
 		HTREEITEM citem = tv_folder.GetChildItem(hitem);
-		while (citem > 0)
+		while (citem)
 		{
 			xstring str = (wchar_t*)tv_folder.GetItemData(citem);
 			xstring name = str.mid(1,str.find(L" ",0));
@@ -170,7 +174,7 @@
 		{
 			int index = s.toInt();
 			HTREEITEM h = tv_folder.GetChildItem(hitem);
-			while (h > 0)
+			while (h)
 			{
 				xstring p = (wchar_t*)tv_folder.GetItemData(h);
 				xml x ;
@@ -205,6 +209,7 @@
 			copyNode(citem,h);
 			citem = tv_folder.GetNextItem(citem);
 		}
+		return 1;
 	}
 
 	//命令发布函数
@@ -420,44 +425,46 @@
 			}
 		}
 		xc = GetControl(L"image");
-		xstring str = e.getAttribute(L"image");
+		str = e.getAttribute(L"image");
 		//xc.SetText(L""+str);
 		SendMessage(xc.GetHWND(), 0x014E, str.toInt(), 0);
 
 		xc = GetControl(L"index");
-		xstring str = e.getAttribute(L"index");
+		str = e.getAttribute(L"index");
 		xc.SetText(L"" + str);
 
 		xc = GetControl(L"code");
-		xstring str = e.getAttribute(L"code");
+		str = e.getAttribute(L"code");
 		xc.SetText(L"" + str);
 
 		xc = GetControl(L"name");
-		xstring str = e.getAttribute(L"name");
+		str = e.getAttribute(L"name");
 		xc.SetText(L"" + str);
 
 		xc = GetControl(L"status");
-		xstring str = e.getAttribute(L"status");
+		str = e.getAttribute(L"status");
 		xc.SetText(L"" + str);
 
 		OnCombSelChanged();
+
+		return 1;
 	}
 
-	int OnTreeSelChanged(ref TNotifyEvent evt,int param)
+	int OnTreeSelChanged(TEvent* evt,LPARAM param)
 	{
-		ref NMTREEVIEW nmtv = evt.pnmh;
-		int hitem = nmtv.itemNew.hItem;
+		NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh;
+		HTREEITEM hitem = nmtv.itemNew.hItem;
 
 		onClare();
 		m_mode = L"new";
 		if (hitem == tv_folder.GetRootItem()) return 0;
 		//IXMLDOMElement e = tv_folder.GetItemData(hitem);
 		//trace(e.xml);
-		param p = tv_folder.GetItemData(hitem);
+		xstring p = (wchar_t*)tv_folder.GetItemData(hitem);
 		xml x ;
-		x.loadXML(L"" + xstring(p));
-		IXMLDOMElement e = x.documentElement;
-		m_type = e.tagName;
+		x.loadXML(p);
+		KXMLDOMElement e = x.documentElement();
+		m_type = e.tagName();
 		if (m_type == L"file")
 			OnCmdDispatch(L"NewFile");
 		else
@@ -469,12 +476,14 @@
 	int OnAttachEvent()
 	{
 		//绑定工具条点击事件
-		AttachEvent(L"WM_XCOMMAND",OnXCommand);
+		AttachEvent(L"WM_XCOMMAND", (FEvent)&XDevEditXApp::OnXCommand);
 		//获取焦点事件,用于重置工具条
-		AttachEvent(L"WM_SETFOCUS",OnSetFocus);
-		AttachEvent(L"image", L"CBN_SELCHANGE",OnCombSelChanged);
-		AttachEvent(L"tv_folder", L"TVN_ENDDRAG",OnTreeDrag);
-		AttachEvent(L"tv_folder", L"TVN_SELCHANGED",OnTreeSelChanged);
+		AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditXApp::OnSetFocus);
+		AttachEvent(L"image", L"CBN_SELCHANGE", (FEvent)&XDevEditXApp::OnCombSelChanged);
+		AttachEvent(L"tv_folder", L"TVN_ENDDRAG", (FEvent)&XDevEditXApp::OnTreeDrag);
+		AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&XDevEditXApp::OnTreeSelChanged);
+
+		return 1;
 	}
 
 	int OnInitial()
@@ -487,7 +496,7 @@
 		int i;
 		for (i = 0; i < 35; i++)
 		{
-			SendMessage(xc.GetHWND(), 0x0143, 0, i.toString());
+			SendMessage(xc.GetHWND(), 0x0143, 0, (LPARAM)xstring(i).c_str());
 			//param p=i.toString();
 			//SendMessage(xc.GetHWND(), 0x0151, i, p);
 		}
@@ -496,21 +505,19 @@
 		return 1;
 	}
 
-	int OnTreeAdd(int hitem, IXMLDOMElement e)
+	int OnTreeAdd(HTREEITEM hitem, KXMLDOMElement e)
 	{
 		auto list = e.selectNodes(L"*");
 		int i;
-		int s = list.length;
+		int s = list.length();
 		for (i = 0; i < s; i++)
 		{
-			IXMLDOMElement ele = list.item(i);
+			KXMLDOMElement ele = list.item(i);
 			xstring name = ele.getAttribute(L"caption");
 			xstring image = ele.getAttribute(L"image");
-			image = L"" + image;
-			xstring data = ele.xml;
+			xstring data = ele.xml();
 			data = data.mid(0,data.find(L">",1)) + L"/>";
-			param p = data;
-			int j = tv_folder.InsertChildItem(hitem,name,p,image.toInt());
+			HTREEITEM j = tv_folder.InsertChildItem(hitem,name.c_str(), (LPARAM)data.c_str(true), image.toInt());
 			OnTreeAdd(j,ele);
 		}
 		return 1;
@@ -529,13 +536,13 @@
 		OnCmdDispatch(L"NewFolder");
 		m_mode = L"new";
 
-		if (!GetParam()) return 1;
+		if (!GetWinParam()) return 1;
 		xwin w = GetFrameWindow();
-		xtree tv = w.GetControl(L"DevExplorer");
-		int hItem = GetParam();
-		IXMLDOMElement e = tv.GetItemData(hItem);
+		xtreeview tv = w.GetControl(L"DevExplorer");
+		HTREEITEM hItem = (HTREEITEM)GetWinParam();
+		KXMLDOMElement e = tv.GetItemData(hItem);
 		xstring name = e.getAttribute(L"caption");
-		int root = tv_folder.InsertItem(L"" + name,e,17);
+		HTREEITEM root = tv_folder.InsertItem(name.c_str(), e, 17);
 		xstring content = GetData();
 		if (content != L"")
 		{
@@ -543,7 +550,7 @@
 			xml x ;
 			if (x.loadXML(content))
 			{
-				OnTreeAdd(root,x.documentElement);
+				OnTreeAdd(root,x.documentElement());
 				tv_folder.ExpandItemEx(root);
 			}
 		}
diff --git a/jrj/xframe/devloper/XDevEditXDV.cpp b/jrj/xframe/devloper/XDevEditXDV.cpp
index 621b492..73adc40 100644
--- a/jrj/xframe/devloper/XDevEditXDV.cpp
+++ b/jrj/xframe/devloper/XDevEditXDV.cpp
@@ -7,12 +7,13 @@
 #include <xcontrol/xdwgrid.hpp>
 #include <xcontrol/xsedit.hpp>
 #include <xcontrol/xcombobox.hpp>
+#include "XDevEditPage.hpp"
 
 using xml = KXMLDOMDocument;
-class export XDevEditXDV : public xwin
+class export XDevEditXDV : public XDevEditPage
 {
 	public:
-	XDevEditXDV(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {}
+	XDevEditXDV(void* implPtr, HWND hWnd) :XDevEditPage(implPtr, hWnd) {}
 public:
 	static XDevEditXDV* CreateInstance(void* implPtr, void* hWnd)
 	{
@@ -86,7 +87,7 @@
 			xml x;
 			if (!x.loadXML(content))
 			{
-				KXMLDOMParseError pError = x.parseError;
+				KXMLDOMParseError pError = x.parseError();
 				if (pError)
 				{
 					xstring str = pError.srcText();
@@ -111,8 +112,8 @@
 			xstring sType = OnGetType();
 			if (sType == L"xml.xsd")
 			{
-				xstring sError;
-				x.ValidSchema(content, &sError);
+				BSTR sError;
+				x.ValidSchema((const wchar_t*)content.c_str(), sError);
 				trace(sError);
 			}
 			xutil::RestoreCursor(hCursor);
@@ -142,6 +143,8 @@
 		AttachEvent(L"WM_XCOMMAND",(FEvent)&XDevEditXDV::OnXCommand);
 		//获取焦点事件,用于重置工具条
 		AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditXDV::OnSetFocus);
+
+		return 1;
 	}
 
 	/*
diff --git a/jrj/xframe/devloper/XDevEditXFile.cpp b/jrj/xframe/devloper/XDevEditXFile.cpp
index 8ec2265..a5e7e9d 100644
--- a/jrj/xframe/devloper/XDevEditXFile.cpp
+++ b/jrj/xframe/devloper/XDevEditXFile.cpp
@@ -181,8 +181,8 @@
 			xstring sType = OnGetType();
 			if (sType == L"xml.xsd")
 			{
-				xstring sError;
-				x.ValidSchema(content, &sError);
+				BSTR sError= nullptr;
+				x.ValidSchema((const wchar_t* )content.c_str(), sError);
 				trace(sError);
 			}
 		}
@@ -211,7 +211,7 @@
 										else if (sType == L"xml.xsd")
 										{
 											xml doc;
-											x.GetSchemaXml(content,doc);
+											x.GetSchemaXml((LPTSTR)content.c_str(), doc);
 											//trace(doc.xml());
 											auto e = doc.selectSingleNode(L"root/schema");
 											if (e) {
@@ -244,7 +244,7 @@
 		{
 			HTREEITEM hP2Item = 0;
 			HTREEITEM hDomainItem = 0;
-			if (tv_folder.GetParentItem(hItem) <= 0)
+			if (!tv_folder.GetParentItem(hItem))
 			{
 				hDomainItem = hItem;
 			}
@@ -302,7 +302,7 @@
 	{
 		xstring xsd = GetXSD(L"" + filename);
 		xml x;
-		x.GetSchemaXml(xsd,x);
+		x.GetSchemaXml((LPTSTR)xsd.c_str(), x);
 		trace(x.xml());
 
 		/*			xml x = new xml;
@@ -337,6 +337,8 @@
 		//获取焦点事件,用于重置工具条
 		AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditXFile::OnSetFocus);
 		AttachEvent(L"xreport",L"DWV_DOUBLECLICKED", (FEvent)&XDevEditXFile::OnDoubleClicked);
+
+		return 1;
 	}
 
 	int LoadData()
diff --git a/jrj/xframe/devloper/XDevEditXML.cpp b/jrj/xframe/devloper/XDevEditXML.cpp
index 1467847..4c0bdae 100644
--- a/jrj/xframe/devloper/XDevEditXML.cpp
+++ b/jrj/xframe/devloper/XDevEditXML.cpp
@@ -7,12 +7,13 @@
 #include <xcontrol/xdwgrid.hpp>
 #include <xcontrol/xsedit.hpp>
 #include <xcontrol/xcombobox.hpp>
+#include "XDevEditPage.hpp"
 
 using xml = KXMLDOMDocument;
-class export XDevEditXML : public xwin
+class export XDevEditXML : public XDevEditPage
 {
 	public:
-	XDevEditXML(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {}
+	XDevEditXML(void* implPtr, HWND hWnd) :XDevEditPage(implPtr, hWnd) {}
 public:
 	static XDevEditXML* CreateInstance(void* implPtr, void* hWnd)
 	{
@@ -129,8 +130,8 @@
 		xstring sType = OnGetType();
 		if (sType == L"xml.xsd")
 		{
-			xstring sError;
-			x.ValidSchema(content, &sError);
+			BSTR sError;
+			x.ValidSchema(content.c_str(), sError);
 			trace(sError);
 		}
 	}
@@ -227,6 +228,8 @@
 	//获取焦点事件,用于重置工具条
 	AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditXML::OnSetFocus);
 	//AttachEvent(L"content",L"WM_LBUTTONDOWN", ,(FEvent)&XDevEditXML::OnLButtonDown);
+
+	return 1;
 }
 
 int OnInitial()
diff --git a/jrj/xframe/devloper/XDevEditXMSSQL.cpp b/jrj/xframe/devloper/XDevEditXMSSQL.cpp
index d17d8bc..74bfb29 100644
--- a/jrj/xframe/devloper/XDevEditXMSSQL.cpp
+++ b/jrj/xframe/devloper/XDevEditXMSSQL.cpp
@@ -53,7 +53,7 @@
 	xstring getLink(HTREEITEM item)
 	{
 		HTREEITEM p = tv_db.GetParentItem(item);
-		while (tv_db.GetParentItem(p) > 0)
+		while (tv_db.GetParentItem(p))
 		{
 			item = tv_db.GetParentItem(item);
 			p = tv_db.GetParentItem(item);
@@ -139,7 +139,7 @@
 
 	int onShow()
 	{
-		while (tv_db.GetRootItem() > 0)
+		while (tv_db.GetRootItem())
 			tv_db.DeleteItem(tv_db.GetRootItem());
 		xsedit xs = GetControl(L"xcontent");
 		xstring content;
@@ -158,13 +158,13 @@
 			xstring name = ele.getAttribute(L"name");
 			xstring link = ele.getAttribute(L"link");
 			HTREEITEM k = tv_db.InsertChildItem(root,L"" + name,L"" + link,15);
-			HTREEITEM j = tv_db.InsertChildItem(k,L"表",L"table",22);
+			HTREEITEM j = tv_db.InsertChildItem(k,L"表",(LPARAM)L"table",22);
 			tv_db.SetItemChild1(j,1);
-			j = tv_db.InsertChildItem(k,L"视图",L"view",23);
+			j = tv_db.InsertChildItem(k,L"视图", (LPARAM)L"view",23);
 			tv_db.SetItemChild1(j,1);
-			j = tv_db.InsertChildItem(k,L"存储过程",L"procedure",24);
+			j = tv_db.InsertChildItem(k,L"存储过程", (LPARAM)L"procedure",24);
 			tv_db.SetItemChild1(j,1);
-			j = tv_db.InsertChildItem(k,L"自定义函数",L"function",25);
+			j = tv_db.InsertChildItem(k,L"自定义函数", (LPARAM)L"function",25);
 			tv_db.SetItemChild1(j,1);
 		}
 		tv_db.ExpandItem(root);
@@ -227,7 +227,7 @@
 		}
 		else if (comdid == L"xmQuery")
 		{
-			xstring guid = win32::GetGuid();
+			xstring guid = publiccode::GetGuid();
 			xstring caption = L"Query_" + guid.mid(1,8);
 			if (OnOpen(caption,L"query") == 0) return 0;
 			xsedit xs = GetControl(L"sql_" + caption);
@@ -302,7 +302,7 @@
 	{
 		NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh;
 		HTREEITEM item = nmtv.itemNew.hItem;
-		if (tv_db.GetChildItem(item) > 0) return 0;
+		if (tv_db.GetChildItem(item)) return 0;
 		OnTreeExpand(item);
 		return 1;
 	}
@@ -331,13 +331,13 @@
 	{
 		tv_db.ExpandItemEx(item);
 		HTREEITEM gitem = tv_db.GetChildItem(item);
-		while (gitem > 0)
+		while (gitem)
 		{
 			xstring data = L"" + tv_db.GetItemData(gitem);
 			if (data.left(6) != L"group@") break;
 			gitem = tv_db.GetNextItem(gitem);
 		}
-		xstring guid = win32::GetGuid();
+		xstring guid = publiccode::GetGuid();
 		if (OnGroupAction(guid,L"",L"group.update") != 1) return 0;
 		HTREEITEM j = tv_db.InsertItem(item,gitem,L"",L"group@" + guid,25);
 		tv_db.ItemEdit(j);
@@ -370,7 +370,7 @@
 
 	int OnRefresh(HTREEITEM item)
 	{
-		while (tv_db.GetChildItem(item) > 0)
+		while (tv_db.GetChildItem(item))
 			tv_db.DeleteItem(tv_db.GetChildItem(item));
 		OnTreeExpand(item);
 		return 1;
@@ -498,7 +498,7 @@
 			OnDesign(caption);
 		else if (popup == L"新建表")
 		{
-			xstring guid = win32::GetGuid();
+			xstring guid = publiccode::GetGuid();
 			xstring text = L"Table_" + guid.mid(1,8);
 			OnDesign(text);
 		}
@@ -558,17 +558,19 @@
 	int OnAttachEvent()
 	{
 		//绑定工具条点击事件
-		AttachEvent(L"WM_XCOMMAND",(FEvent)XDevEditXMSSQL::OnXCommand);
+		AttachEvent(L"WM_XCOMMAND",(FEvent)&XDevEditXMSSQL::OnXCommand);
 		//获取焦点事件,用于重置工具条
-		AttachEvent(L"WM_SETFOCUS", (FEvent)XDevEditXMSSQL::OnSetFocus);
+		AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditXMSSQL::OnSetFocus);
 		//获得树的展开事件
-		AttachEvent(L"tv_db", L"TVN_ITEMEXPANDING", (FEvent)XDevEditXMSSQL::OnTreeExpanding);
+		AttachEvent(L"tv_db", L"TVN_ITEMEXPANDING", (FEvent)&XDevEditXMSSQL::OnTreeExpanding);
 		//获得树的选择事件
-		//AttachEvent(L"tv_db", L"TVN_SELCHANGED",(FEvent)XDevEditXMSSQL::OnTreeSelChanged);		
-		AttachEvent(L"tv_db", L"TVN_RCLICK", (FEvent)XDevEditXMSSQL::OnTreeRClick);
-		AttachEvent(L"tv_db", L"TVN_BEGINDRAG", (FEvent)XDevEditXMSSQL::OnTreeBeginDrag);
-		AttachEvent(L"tv_db", L"TVN_ENDDRAG", (FEvent)XDevEditXMSSQL::OnTreeEndDrag);
-		AttachEvent(L"tv_db", L"TVN_ENDLABELEDIT", (FEvent)XDevEditXMSSQL::OnTreeEndEdit);
+		//AttachEvent(L"tv_db", L"TVN_SELCHANGED",(FEvent)&XDevEditXMSSQL::OnTreeSelChanged);		
+		AttachEvent(L"tv_db", L"TVN_RCLICK", (FEvent)&XDevEditXMSSQL::OnTreeRClick);
+		AttachEvent(L"tv_db", L"TVN_BEGINDRAG", (FEvent)&XDevEditXMSSQL::OnTreeBeginDrag);
+		AttachEvent(L"tv_db", L"TVN_ENDDRAG", (FEvent)&XDevEditXMSSQL::OnTreeEndDrag);
+		AttachEvent(L"tv_db", L"TVN_ENDLABELEDIT", (FEvent)&XDevEditXMSSQL::OnTreeEndEdit);
+
+		return 1;
 	}
 
 	int LoadData()
diff --git a/jrj/xframe/devloper/XDevEditXRuler.cpp b/jrj/xframe/devloper/XDevEditXRuler.cpp
index a62cce0..1187c36 100644
--- a/jrj/xframe/devloper/XDevEditXRuler.cpp
+++ b/jrj/xframe/devloper/XDevEditXRuler.cpp
@@ -141,6 +141,8 @@
 		AttachEvent(L"WM_XCOMMAND", (FEvent)&XDevEditXRuler::OnXCommand);
 		//获取焦点事件,用于重置工具条
 		AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditXRuler::OnSetFocus);
+
+		return 1;
 	}
 
 	int OnInitial()
diff --git a/jrj/xframe/kobject/kreport.hpp b/jrj/xframe/kobject/kreport.hpp
index b8ccd85..716af38 100644
--- a/jrj/xframe/kobject/kreport.hpp
+++ b/jrj/xframe/kobject/kreport.hpp
@@ -1,13 +1,14 @@
 #pragma once
 #include "kcontrol.hpp"
+#include "kdwview.hpp"
 
 namespace Hxsoft{ namespace XFrame{ namespace XOffice {namespace XReport
 {
-	class IXReport : public IXFControl
+	class IXReport : public IDwView //public IXFControl
 	{
 	public:
-		enum RowStatus{rs_new=0,rs_newmodified,rs_datamodified,rs_datanotmodified};
-		enum DWBuffer{dbuf_normal=0,dbuf_filter,dbuf_delete};
+		//enum RowStatus{rs_new=0,rs_newmodified,rs_datamodified,rs_datanotmodified};
+		//enum DWBuffer{dbuf_normal=0,dbuf_filter,dbuf_delete};
 
 	public:
 		int GetRow_();
diff --git a/jrj/xframe/kobject/kxml.hpp b/jrj/xframe/kobject/kxml.hpp
index 8606072..a41b9fc 100644
--- a/jrj/xframe/kobject/kxml.hpp
+++ b/jrj/xframe/kobject/kxml.hpp
@@ -1,6 +1,8 @@
 #pragma once
 
 typedef wchar_t* BSTR ;
+
+#if 1
 namespace Hxsoft {	namespace XFrame
 {
 	class KXMLDOMNode;
@@ -14,6 +16,8 @@
 	class KXMLDOMProcessingInstruction;
 	class KXMLDOMNodeList;
 	class KXMLDOMParseError;
+	class KXMLDOMParseError;
+	class KXMLDOMSchemaCollection;
 
 	enum  KDOMNodeType
 	{
@@ -212,6 +216,13 @@
 
 		wchar_t* transformNode(KXMLDOMNode);
 		KXMLDOMNode transformNodeToObject(KXMLDOMNode);
+	public:
+		KXMLDOMParseError parseError();
+
+	public:
+		KXMLDOMSchemaCollection namespaces();
+		KXMLDOMSchemaCollection schemas();
+		bool setSchemas(KXMLDOMSchemaCollection collection);
 		KXMLDOMParseError validate();
 		//bool validateNode();
 	public:
@@ -226,6 +237,12 @@
 		{
 			if (documentElement())removeChild(documentElement());
 		}
+	public:
+		static bool ValidSchema(const wchar_t* pSchema, BSTR& errText);
+		static bool ValidSchema(KXMLDOMDocument xml, KXMLDOMDocument schema, BSTR& errText);
+	public:
+		static int GetSchemaXml(LPTSTR pSchema, KXMLDOMDocument& x);
+
 	};
 
 	class KXMLDOMAttribute : public KXMLDOMNode
@@ -275,6 +292,38 @@
 		KXMLDOMDocumentFragment(void* impl) :KXMLDOMNode(impl) {}
 	};
 
+	class  KXMLDOMParseError : public KXMLDOMNode
+	{
+	public:
+		KXMLDOMParseError(KXMLDOMNode& v);
+		KXMLDOMParseError(void* impl) :KXMLDOMNode(impl) {}
+	public:
+		int errorCode();
+		int filepos();
+		int line();
+		int linepos();
+		BSTR reason();
+		BSTR srcText();
+		BSTR url();
+	};
+
+	class  KXMLDOMSchemaCollection
+	{
+	public:
+	protected:
+		void* impl;
+	public:
+		KXMLDOMSchemaCollection(void* impl);
+		KXMLDOMSchemaCollection();
+		KXMLDOMSchemaCollection(LPARAM p);
+		~KXMLDOMSchemaCollection();
+	public:
+		KXMLDOMSchemaCollection(const KXMLDOMSchemaCollection& rhs);
+		const KXMLDOMSchemaCollection& operator =(const KXMLDOMSchemaCollection& rhs);
+	public:
+		void* getImpl();
+	};
+
 }}
 
 
@@ -283,7 +332,10 @@
 using KXMLDOMNode=Hxsoft::XFrame::KXMLDOMNode;
 using KXMLDOMElement=Hxsoft::XFrame::KXMLDOMElement;
 using KXMLDOMNodeList = Hxsoft::XFrame::KXMLDOMNodeList;
+using KXMLDOMParseError = Hxsoft::XFrame::KXMLDOMParseError;
+using KXMLDOMSchemaCollection = Hxsoft::XFrame::KXMLDOMSchemaCollection;
 
+/*
 class KXMLDOMParseError : public KXMLDOMNode
 {
 public:
@@ -298,7 +350,7 @@
 	BSTR srcText();
 	BSTR url();
 };
-
+*/
 class KXMLDOMElementPtr
 {
 private:
@@ -315,3 +367,335 @@
 	KXMLDOMElement* operator -> () { return m_pElement; }
 };
 
+#endif
+
+#if 0
+namespace Hxsoft {
+	namespace XFrame
+	{
+		class KXMLDOMNode;
+		class KXMLDOMAttribute;
+		class KXMLDOMElement;
+		class KXMLDOMCDATASection;
+		class KXMLDOMDocumentFragment;
+		class KXMLDOMComment;
+		class KXMLDOMEntityReference;
+		class KXMLDOMTextNode;
+		class KXMLDOMProcessingInstruction;
+		class KXMLDOMNodeList;
+		class KXMLDOMParseError;
+		class KXMLDOMSchemaCollection;
+
+		enum  KDOMNodeType
+		{
+			KNODE_INVALID = 0,
+			KNODE_ELEMENT = (KNODE_INVALID + 1),
+			KNODE_ATTRIBUTE = (KNODE_ELEMENT + 1),
+			KNODE_TEXT = (KNODE_ATTRIBUTE + 1),
+			KNODE_CDATA_SECTION = (KNODE_TEXT + 1),
+			KNODE_ENTITY_REFERENCE = (KNODE_CDATA_SECTION + 1),
+			KNODE_ENTITY = (KNODE_ENTITY_REFERENCE + 1),
+			KNODE_PROCESSING_INSTRUCTION = (KNODE_ENTITY + 1),
+			KNODE_COMMENT = (KNODE_PROCESSING_INSTRUCTION + 1),
+			KNODE_DOCUMENT = (KNODE_COMMENT + 1),
+			KNODE_DOCUMENT_TYPE = (KNODE_DOCUMENT + 1),
+			KNODE_DOCUMENT_FRAGMENT = (KNODE_DOCUMENT_TYPE + 1),
+			KNODE_NOTATION = (KNODE_DOCUMENT_FRAGMENT + 1)
+		};
+
+		class  KXMLDOMNodeList
+		{
+		public:
+			long length();
+			bool length(long&);
+			bool length(long*);
+			bool get_length(long* v) { return length(v); }
+			KXMLDOMNode item(int index);
+			bool item(int index, KXMLDOMNode& node);
+			bool item(int index, KXMLDOMNode* node);
+			bool get_item(int index, KXMLDOMNode* node) { return item(index, node); }
+		private:
+			void* impl;
+		public:
+			void* getImpl();
+		public:
+			KXMLDOMNodeList(void* impl);
+			KXMLDOMNodeList() :impl(nullptr) {}
+			~KXMLDOMNodeList();
+		public:
+			operator bool() { return impl ? true : false; }
+		public:
+			KXMLDOMNodeList(const KXMLDOMNodeList& rhs);
+			const KXMLDOMNodeList& operator =(const KXMLDOMNodeList& rhs);
+		};
+
+		class KXMLDOMElement;
+		class KXMLDOMAttribute;
+		class KXMLDOMDocument;
+		class  KXMLDOMNode {
+		public:
+			//	attributes
+			//		baseName
+			KXMLDOMNodeList childNodes();
+			//	dataType
+			//	definition
+			KXMLDOMNode	firstChild();
+			KXMLDOMNode	lastChild();
+			//	namespaceURI
+			//	namespaceURI
+			KXMLDOMNode	nextSibling();
+			const wchar_t* nodeName();
+			KDOMNodeType	nodeType();
+			KDOMNodeType	get_nodeType() { return nodeType(); }
+			//	nodeTypedValue
+			//	nodeTypeString
+			//	nodeValue
+			KXMLDOMDocument	ownerDocument();
+			KXMLDOMNode	parentNode();
+			//	parsed
+			//	prefix
+			KXMLDOMNode	previousSibling();
+			//	specified
+			const wchar_t* tagName();
+			const wchar_t* text();
+			const wchar_t* xml();
+
+			bool get_tagName(BSTR& str);
+			bool get_text(BSTR& str);
+			bool get_xml(BSTR& str);
+			bool get_tagName(BSTR* str) { return get_tagName(*str); }
+			bool get_text(BSTR* str) { return get_text(*str); }
+			bool get_xml(BSTR* str) { return get_xml(*str); }
+			bool settext(const wchar_t* txt);
+			bool put_text(const wchar_t* txt) { return settext(txt); }
+
+
+			bool	appendChild(KXMLDOMNode);
+			KXMLDOMNode	cloneNode(bool);
+			wchar_t* getAttribute(const wchar_t* name);
+			void getAttribute(const wchar_t* name, void* vt);
+			KXMLDOMAttribute	getAttributeNode(const wchar_t* name);
+			KXMLDOMNodeList	getElementsByTagName(const wchar_t* name);
+			bool	hasChildNodes();
+			bool	insertBefore(KXMLDOMNode newnode, KXMLDOMNode at);
+			void	normalize();
+			bool	removeAttribute(const wchar_t* name);
+			bool	removeAttributeNode(KXMLDOMNode attr);
+			bool	removeChild(KXMLDOMNode val);
+			bool	replaceChild(KXMLDOMNode newChild, KXMLDOMNode oldChild);
+			KXMLDOMNodeList	selectNodes(const wchar_t*);
+			KXMLDOMNode	selectSingleNode(const wchar_t*);
+			bool selectNodes(const wchar_t*, KXMLDOMNodeList& pNodeList);
+			bool selectSingleNode(const wchar_t*, KXMLDOMNode& pNode);
+			bool selectNodes(const wchar_t*, KXMLDOMNodeList* pNodeList);
+			bool selectSingleNode(const wchar_t*, KXMLDOMNode* pNode);
+			void	setAttribute(const wchar_t* name, const wchar_t* value);
+			void	setAttribute(const wchar_t* name, long val);
+			void	setAttribute(const wchar_t* name, int val);
+			void	setAttribute(const wchar_t* name, double val);
+			wchar_t* transformNode(KXMLDOMNode stylesheet);
+			KXMLDOMNode	transformNodeToObject(KXMLDOMNode);
+		protected:
+			void* impl;
+		public:
+			KXMLDOMNode(void* impl);
+			KXMLDOMNode() :KXMLDOMNode(nullptr) {}
+			~KXMLDOMNode();
+			KXMLDOMNode(LPARAM p) :KXMLDOMNode((void*)p) {
+				AddRef();
+			}
+		public:
+			KXMLDOMNode(const KXMLDOMNode& rhs);
+			const KXMLDOMNode& operator =(const KXMLDOMNode& rhs);
+		public:
+			operator bool() { return impl ? true : false; }
+		public:
+			void* getImpl();
+		public:
+			unsigned long AddRef();
+			unsigned long Release();
+		public:
+			bool operator !=(KXMLDOMNode& rhs) { return rhs.getImpl() != getImpl(); }
+			bool operator ==(KXMLDOMNode& rhs) { return rhs.getImpl() == getImpl(); }
+		};
+
+		class  KXMLDOMElement : public KXMLDOMNode
+		{
+		public:
+			KXMLDOMElement(KXMLDOMNode v);
+			KXMLDOMElement(void* impl) :KXMLDOMNode(impl) {}
+			KXMLDOMElement() :KXMLDOMNode() {}
+		public:
+			KXMLDOMElement(LPARAM p) :KXMLDOMNode(p) {}
+
+		};
+		class  KXMLDOMAttribute : public KXMLDOMNode
+		{
+		public:
+			KXMLDOMAttribute(KXMLDOMNode& v);
+			KXMLDOMAttribute(void* impl) :KXMLDOMNode(impl) {}
+		};
+		class  KXMLDOMCDATASection : public KXMLDOMNode
+		{
+		public:
+			KXMLDOMCDATASection(KXMLDOMNode& v);
+			KXMLDOMCDATASection(void* impl) :KXMLDOMNode(impl) {}
+		};
+
+
+		class  KXMLDOMDocument : public KXMLDOMNode
+		{
+		public:
+			bool operator !()
+			{
+				return !impl || !documentElement();
+			}
+		public:
+			const wchar_t* text();
+			const wchar_t* url();
+			const wchar_t* xml();
+			KXMLDOMElement documentElement();
+			bool documentElement(KXMLDOMElement* pDoc);
+			bool get_documentElement(KXMLDOMElement* pDoc) { return documentElement(pDoc); }
+		public:
+			KXMLDOMParseError parseError();
+		public:
+			bool appendChild(KXMLDOMNode);
+			KXMLDOMAttribute createAttribute(const wchar_t*);
+			KXMLDOMCDATASection createCDATASection(const wchar_t*);
+			KXMLDOMComment createComment(const wchar_t*);
+			KXMLDOMDocumentFragment createDocumentFragment();
+			KXMLDOMElement createElement(const wchar_t*);
+			bool createElement(const wchar_t*, KXMLDOMElement* ele);
+			KXMLDOMEntityReference createEntityReference(const wchar_t*);
+			KXMLDOMNode createNode(KDOMNodeType ty, const wchar_t* name, const wchar_t* ns);
+			KXMLDOMProcessingInstruction createProcessingInstruction(const wchar_t* target, const wchar_t* data);
+			KXMLDOMTextNode createTextNode(const wchar_t*);
+
+			KXMLDOMNodeList getElementsByTagName(const wchar_t*);
+			wchar_t* getProperty(const wchar_t*);
+			bool setProperty(const wchar_t* prop, const wchar_t* val);
+			bool setProperty(const wchar_t* prop, bool val);
+			bool hasChildNodes();
+			bool importNode(KXMLDOMNode);
+			bool insertBefore(KXMLDOMNode newnode, KXMLDOMNode at);
+			bool load(const wchar_t*);
+			bool loadXML(const wchar_t*);
+			KXMLDOMNode nodeFromID(const wchar_t*);
+			bool removeChild(KXMLDOMNode);
+			bool replaceChild(KXMLDOMNode newChild, KXMLDOMNode oldChild);
+			bool save(const wchar_t*);
+			KXMLDOMNodeList selectNodes(const wchar_t*);
+			KXMLDOMNode selectSingleNode(const wchar_t*);
+			bool selectNodes(const wchar_t*, KXMLDOMNodeList& pNodeList);
+			bool selectSingleNode(const wchar_t*, KXMLDOMNode& pNode);
+			bool selectNodes(const wchar_t*, KXMLDOMNodeList* pNodeList);
+			bool selectSingleNode(const wchar_t*, KXMLDOMNode* pNode);
+
+			wchar_t* transformNode(KXMLDOMNode);
+			KXMLDOMNode transformNodeToObject(KXMLDOMNode);
+
+		public:
+			KXMLDOMSchemaCollection namespaces();
+			KXMLDOMSchemaCollection schemas();
+			bool setSchemas(KXMLDOMSchemaCollection collection);
+			KXMLDOMParseError validate();
+			//bool validateNode();
+		public:
+			KXMLDOMDocument(void* impl);
+			KXMLDOMDocument();
+			~KXMLDOMDocument();
+		public:
+			const KXMLDOMDocument& operator =(const KXMLDOMDocument& rhs);
+			KXMLDOMDocument(const KXMLDOMDocument& rhs);
+		public:
+			void Reset()
+			{
+				if (documentElement())removeChild(documentElement());
+			}
+		public:
+			static bool ValidSchema(const wchar_t* pSchema, BSTR& errText);
+			static bool ValidSchema(KXMLDOMDocument xml, KXMLDOMDocument schema, BSTR& errText);
+		public:
+			static int GetSchemaXml(LPTSTR pSchema, KXMLDOMDocument& x);
+		};
+
+
+		class  KXMLDOMComment : public KXMLDOMNode
+		{
+		public:
+			KXMLDOMComment(KXMLDOMNode& v);
+			KXMLDOMComment(void* impl) :KXMLDOMNode(impl) {}
+		};
+
+		class  KXMLDOMEntityReference : public KXMLDOMNode
+		{
+		public:
+			KXMLDOMEntityReference(KXMLDOMNode& v);
+			KXMLDOMEntityReference(void* impl) :KXMLDOMNode(impl) {}
+		};
+
+		class  KXMLDOMTextNode : public KXMLDOMNode
+		{
+		public:
+			KXMLDOMTextNode(KXMLDOMNode& v);
+			KXMLDOMTextNode(void* impl) :KXMLDOMNode(impl) {}
+		};
+
+		class  KXMLDOMProcessingInstruction : public KXMLDOMNode
+		{
+		public:
+			KXMLDOMProcessingInstruction(KXMLDOMNode& v);
+			KXMLDOMProcessingInstruction(void* impl) :KXMLDOMNode(impl) {}
+		};
+		class  KXMLDOMDocumentFragment : public KXMLDOMNode
+		{
+		public:
+			KXMLDOMDocumentFragment(KXMLDOMNode& v);
+			KXMLDOMDocumentFragment(void* impl) :KXMLDOMNode(impl) {}
+		};
+
+		class  KXMLDOMParseError : public KXMLDOMNode
+		{
+		public:
+			KXMLDOMParseError(KXMLDOMNode& v);
+			KXMLDOMParseError(void* impl) :KXMLDOMNode(impl) {}
+		public:
+			int errorCode();
+			int filepos();
+			int line();
+			int linepos();
+			BSTR reason();
+			BSTR srcText();
+			BSTR url();
+		};
+
+		class  KXMLDOMSchemaCollection
+		{
+		public:
+		protected:
+			void* impl;
+		public:
+			KXMLDOMSchemaCollection(void* impl);
+			KXMLDOMSchemaCollection();
+			KXMLDOMSchemaCollection(LPARAM p);
+			~KXMLDOMSchemaCollection();
+		public:
+			KXMLDOMSchemaCollection(const KXMLDOMSchemaCollection& rhs);
+			const KXMLDOMSchemaCollection& operator =(const KXMLDOMSchemaCollection& rhs);
+		public:
+			void* getImpl();
+		};
+
+	}
+}
+
+using KXMLDOMDocument = Hxsoft::XFrame::KXMLDOMDocument;
+using KXMLDOMNode = Hxsoft::XFrame::KXMLDOMNode;
+using KXMLDOMElement = Hxsoft::XFrame::KXMLDOMElement;
+using KXMLDOMNodeList = Hxsoft::XFrame::KXMLDOMNodeList;
+using KXMLDOMParseError = Hxsoft::XFrame::KXMLDOMParseError;
+using KXMLDOMSchemaCollection = Hxsoft::XFrame::KXMLDOMSchemaCollection;
+
+#endif
+

--
Gitblit v1.9.3