From 24979676af0d645c28fc05157ed61fc3fafbee3b Mon Sep 17 00:00:00 2001
From: xj qian <qianxj15@sina.com>
Date: 星期五, 28 六月 2024 09:35:59 +0800
Subject: [PATCH] update message proc and edit proc

---
 jrj/project/business/SO/Product.Select.SO.cpp              |    5 
 jrj/project/business/HR/ManpowerFileWindow.cpp             |  127 ++++---
 jrj/project/business/HR/AdministrativeDepartmentFolder.cpp |  164 +++++----
 jrj/project/business/SO/maint.Document.SO3.v3.cpp          |    4 
 jrj/project/business/HR/BlankExcelTemplate.cpp             |   94 +++--
 jrj/project/business/HR/AdministrativeDepartment.cpp       |  294 +++++++++--------
 jrj/project/business/SO/delivery.base.maint.so.cpp         |    2 
 jrj/project/business/quote.enquiry.cpp                     |    2 
 jrj/project/business/HR/ManpowerFile.cpp                   |  242 +++++++-------
 jrj/project/business/SO/paymentterm.base.maint.so.cpp      |    2 
 10 files changed, 496 insertions(+), 440 deletions(-)

diff --git a/jrj/project/business/HR/AdministrativeDepartment.cpp b/jrj/project/business/HR/AdministrativeDepartment.cpp
index 0d6b5d7..07fe927 100644
--- a/jrj/project/business/HR/AdministrativeDepartment.cpp
+++ b/jrj/project/business/HR/AdministrativeDepartment.cpp
@@ -1,102 +1,115 @@
-use "xcontrol.vframe.vbusiness.vd"//hxsoft.com -> Developer -> wlib -> vframe
-use "xbase.vframe.vbusiness.vd"//hxsoft.com -> Developer -> wlib -> vframe
-use "saleorder.view.vd"
-unit trade
-[
-	class ViewAdministrativeDepartmentList : public listwin
+#include <wobject/xstring.hpp>
+#include <xcontrol/xtreeview.hpp>
+#include <xcontrol/xdwgrid.hpp>
+#include <xcontrol/xcell.hpp>
+
+
+#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
+#include "viewobject/view.base.hpp"
+
+using xml = KXMLDOMDocument;
+	class  __declspec(dllexport) ViewAdministrativeDepartmentList : public listwin
 	{
+	public:
 		xdwgrid		dw_list;
 		xtreeview	tv_folder;//hxsoft.com -> Developer -> wface -> vcontrol
-		string rows;
-		string urlTree;
-		string myDataUrl;
+		xstring rows;
+		xstring urlTree;
+		xstring myDataUrl;
 		int changeddlb;
 
 		xnode	m_agentNode;	//Agent Condition
-
+	public:
+		ViewAdministrativeDepartmentList(void* implPtr, HWND hWnd) :listwin(implPtr, hWnd) {}
+	public:
+		static ViewAdministrativeDepartmentList* CreateInstance(void* implPtr, void* hWnd)
+		{
+			ViewAdministrativeDepartmentList* pWin = new ViewAdministrativeDepartmentList(implPtr, (HWND)hWnd);
+			return pWin;
+		}
 		int SetAgent()
 		{
-			string xfNodeAgentArea = "agentarea";
+			xstring xfNodeAgentArea = L"agentarea";
 			xnode anode = GetAgentNode(xfNodeAgentArea);
 			if (m_agentNode)
 			{
-				SetAgentNodeContent(anode, m_agentNode);
+				SetAgentNode(anode, m_agentNode);
 			}
 			else
 			{
-				msxml::IXMLDOMElement xframeElement = GetElement();
-				msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/" + xfNodeAgentArea + "[1]/*");
+				KXMLDOMElement xframeElement = GetElement();
+				KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/" + xfNodeAgentArea + L"[1]/*");
 				if (agent)
 				{
-					string s = agent.xml;
-					m_agentNode = SetAgentNodeContent(anode, s);
+					xstring s = agent.xml();
+					m_agentNode = SetAgentNode(anode, s);
 				}
 			}
 			return 1;
 		}
 
 		//展开放进树里面
-		int ExpandCatChildFolder(int hItem, msxml::IXMLDOMElement ele, int image)
+		int ExpandCatChildFolder(HTREEITEM hItem, KXMLDOMElement ele, int image)
 		{
 			/*在具体应用时可以用DOMDocument的Load方法来装载XML文档
 			用IXMLDOMNode 的selectNodes(查询的结果有多个,得到存放搜索结果的链表)
 			或selectSingleNode(查询的结果有一个,在有多个的情况下返回找到的第一个节点)方法进行查询,
 			用createNode和appendChild方法来创建节点和追加节点,
 			用IXMLDOMElement的setAttribute和getAttribute方法来设置和获得节点的属性。*/
-			msxml::IXMLDOMNodeList nlist = ele.SelectNodes("item");
-			int len = nlist.length;
+			KXMLDOMNodeList nlist = ele.selectNodes(L"item");
+			int len = nlist.length();
 			if (len > 0)
 				tv_folder.SetItemChild(hItem, 1);
 			for (int i = 0; i < len; i++)
 			{
-				msxml::IXMLDOMElement e = nlist.item(i);
-				string name = e.getAttribute("name");
-				int h = tv_folder.InsertChildItem(hItem, name, trust(e as int), image);//trust(e as int)将e放入树结构里面的data属性中
+				KXMLDOMElement& e = *new KXMLDOMElement(nlist.item(i));
+				xstring name = e.getAttribute(L"name");
+				HTREEITEM h = tv_folder.InsertChildItem(hItem, name, (LPARAM)&e, image);//trust(e as int)将e放入树结构里面的data属性中
 				ExpandCatChildFolder(h, e, 35);
 			}
 			return 1;
 		}
 
 		//展开文件夹明细
-		int ExpandFolderItem(int hItem, string parentid)
+		int ExpandFolderItem(HTREEITEM hItem, xstring parentid)
 		{
-			xml x = ViewObject::RetrieveData(urlTree, "status", "有效", "parentid", parentid);//获取后台数据
+			xml x = ViewObject::RetrieveData(urlTree, L"status", L"有效", L"parentid", parentid);//获取后台数据
 			if (!x) {
 				return 0;
 			}
-			msxml::IXMLDOMNodeList nlist = x.GetXmlDoc().SelectNodes("data/Item");
-			int len = nlist.length;
+			KXMLDOMNodeList nlist = x.selectNodes(L"data/Item");
+			int len = nlist.length();
 			for (int i = 0; i < len; i++)
 			{
-				msxml::IXMLDOMElement e = nlist.item(i);
-				string name = e.selectSingleNode("name").text;
-				int h = tv_folder.InsertChildItem(hItem, name, trust(e as int), 35);
+				KXMLDOMElement& e = *new KXMLDOMElement(nlist.item(i));
+				xstring name = e.selectSingleNode(L"name").text();
+				HTREEITEM h = tv_folder.InsertChildItem(hItem, name, (LPARAM)&e, 35);
 				ExpandCatChildFolder(h, e, 35);
 			}
 			return 1;
 		}
 
 		//查找当前树项的顶级目录
-		int LookupTopFolder(int hItem)
+		HTREEITEM LookupTopFolder(HTREEITEM hItem)
 		{
-			int hRoot = tv_folder.GetRootItem();
+			HTREEITEM hRoot = tv_folder.GetRootItem();
 			while (tv_folder.GetParentItem(hItem)) hItem = tv_folder.GetParentItem(hItem);
 			return hItem;
 		}
 
 		//树展开
-		int OnTreeExpanding(ref TNotifyEvent evt, int p)
+		int OnTreeExpanding(TEvent* evt, int p)
 		{
-			ref NMTREEVIEW nmtv = evt.pnmh;
-			int hItem = nmtv.itemNew.hItem;
-			int hTopItem = LookupTopFolder(hItem);
-			string name = tv_folder.GetItemLabel(hTopItem);
-			int child = tv_folder.GetChildItem(hItem);
+			NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh;
+			HTREEITEM hItem = nmtv.itemNew.hItem;
+			HTREEITEM hTopItem = LookupTopFolder(hItem);
+			xstring name = tv_folder.GetItemLabel(hTopItem);
+			HTREEITEM child = tv_folder.GetChildItem(hItem);
 
-			msxml::IXMLDOMElement e = tv_folder.GetItemData(hItem);
-			string parentid = "";
-			if (name != "部门结构")
-				parentid = e.selectSingleNode("adid").text;
+			KXMLDOMElement e = tv_folder.GetItemData(hItem);
+			xstring parentid = L"";
+			if (name != L"部门结构")
+				parentid = e.selectSingleNode(L"adid").text();
 			trace(parentid);
 			if (!child) {
 				ExpandFolderItem(hItem, parentid);
@@ -107,26 +120,26 @@
 		//查询节点的列表数据
 		int OnPreRetrieve()
 		{
-			int hItem = tv_folder.GetSelectedItem();
+			HTREEITEM hItem = tv_folder.GetSelectedItem();
 			if (hItem <= 0) return 1;
 
 			//int 	hCursor = xutil::SetCursorWait();
-			msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
-			string name = e.getAttribute("name");
+			KXMLDOMElement& e = *(KXMLDOMElement*)tv_folder.GetItemData(hItem);
+			xstring name = e.getAttribute(L"name");
 			xml x = 0;
-			string parentid = "";
-			if (name != "部门结构")
-				parentid = e.selectSingleNode("adid").text;
+			xstring parentid = L"";
+			if (name != L"部门结构")
+				parentid = e.selectSingleNode(L"adid").text();
 			trace(parentid);
-			x = ViewObject::RetrieveData(myDataUrl, "parentid", parentid);
+			x = ViewObject::RetrieveData(myDataUrl, L"parentid", parentid);
 			if (x)
 			{
-				//trace(x.GetXml());
+				//trace(x.xml());
 				dw_list.Retrieve(x);
 				dw_list.Redraw();
 			}
 			else {
-				dw_list.ResetEx();
+				dw_list.Reset();
 				dw_list.Redraw();
 			}
 			dw_list.SetReadOnly(true);
@@ -134,20 +147,20 @@
 			return 1;
 		}
 
-		int OnTreeSelChanged(ref TNotifyEvent evt, int p)
+		int OnTreeSelChanged(TEvent* evt, int p)
 		{
 			if (changeddlb)
 				return 1;
-			int hItem = tv_folder.GetSelectedItem();
+			HTREEITEM hItem = tv_folder.GetSelectedItem();
 			if (hItem <= 0)
 				return 1;
-			int child = tv_folder.GetChildItem(hItem);
+			HTREEITEM child = tv_folder.GetChildItem(hItem);
 			if (!child) {
-				int 	hCursor = xutil::SetCursorWait();
-				msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
-				if (!e.getAttribute("name")) {
-					string adid = e.selectSingleNode("adid").text;
-					string parentid = adid;
+				HCURSOR 	hCursor = xutil::SetCursorWait();
+				KXMLDOMElement& e = *(KXMLDOMElement*)tv_folder.GetItemData(hItem);
+				if (!e.getAttribute(L"name")) {
+					xstring adid = e.selectSingleNode(L"adid").text();
+					xstring parentid = adid;
 					ExpandFolderItem(hItem, parentid);
 				}
 			}
@@ -155,7 +168,7 @@
 		}
 
 		//焦点激活处理函数
-		int OnSetFocus(ref TEvent evt, int param)
+		int OnSetFocus(TEvent* evt, LPARAM p)
 		{
 			//重置工具条
 			SetAgent();
@@ -164,18 +177,18 @@
 
 		int OnAdd()
 		{
-			int hItem = tv_folder.GetSelectedItem();
+			HTREEITEM hItem = tv_folder.GetSelectedItem();
 			if (hItem <= 0)
 				return 1;
-			int hCursor = xutil::SetCursorWait();
-			msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
-			string parentid = "";//父级id
-			if (!e.getAttribute("name"))
-				parentid = e.selectSingleNode("adid").text;
-			xaserverarg arg = new xaserverarg;
-			arg.setNativePointer(arg.CreateInstance());
-			arg.AddArg("parentid", parentid);
-			OpenWindow("dev:xpage[AdministrativeDepartmentFolder.vx]", cast(arg as int));
+			HCURSOR hCursor = xutil::SetCursorWait();
+			KXMLDOMElement& e = *(KXMLDOMElement*)tv_folder.GetItemData(hItem);
+			xstring parentid = L"";//父级id
+			if (!e.getAttribute(L"name"))
+				parentid = e.selectSingleNode(L"adid").text();
+			xaserverarg arg;
+			
+			arg.AddArg(L"parentid", parentid);
+			OpenWindow(L"dev:xpage[AdministrativeDepartmentFolder.vx]",arg);
 
 			return 1;
 		}
@@ -187,32 +200,32 @@
 			if(hItem <=0)
 				return 1;
 			int hCursor = xutil::SetCursorWait();
-			msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
+			KXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as KXMLDOMElement);
 
-			if(e.getAttribute("name"))
+			if(e.getAttribute(L"name"))
 				return 1;*/
 
 			int row = dw_list.GetRow();
 			if (row < 1)
 				return 1;
-			string parentid = "", adid = "";
-			/*msxml::IXMLDOMElement ele = dw_list.GetRowElement(row);
-			adid = ele.selectSingleNode("adid").text;*/
-			adid = dw_list.GetItemString(row, "adid");
-			parentid = dw_list.GetItemString(row, "parentid");
+			xstring parentid = L"", adid = L"";
+			/*KXMLDOMElement ele = dw_list.GetRowElement(row);
+			adid = ele.selectSingleNode(L"adid").text();*/
+			adid = dw_list.GetItemString(row, L"adid");
+			parentid = dw_list.GetItemString(row, L"parentid");
 
-			xaserverarg arg = new xaserverarg;
-			arg.setNativePointer(arg.CreateInstance());
-			/*string parentid = "", adid = "";//父级id
+			xaserverarg arg;
+			
+			/*xstring parentid = L"", adid = L"";//父级id
 
-			if(!e.getAttribute("name")){
+			if(!e.getAttribute(L"name")){
 
-				parentid = e.selectSingleNode("adid").text;
-				adid = e.selectSingleNode("adid").text;
+				parentid = e.selectSingleNode(L"adid").text();
+				adid = e.selectSingleNode(L"adid").text();
 			}*/
-			arg.AddArg("parentid", parentid);
-			arg.AddArg("adid", adid);
-			OpenWindow("dev:xpage[AdministrativeDepartmentFolder.vx]", cast(arg as int));
+			arg.AddArg(L"parentid", parentid);
+			arg.AddArg(L"adid", adid);
+			OpenWindow(L"dev:xpage[AdministrativeDepartmentFolder.vx]",arg);
 			return 1;
 		}
 
@@ -222,32 +235,32 @@
 			if(hItem <=0) return 1;
 
 			int 	hCursor = xutil::SetCursorWait();
-			msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
-			string name = e.getAttribute("name");
-			string adid = "";
-			if(name != "部门结构")
-				adid = e.selectSingleNode("adid").text;*/
+			KXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as KXMLDOMElement);
+			xstring name = e.getAttribute(L"name");
+			xstring adid = L"";
+			if(name != L"部门结构")
+				adid = e.selectSingleNode(L"adid").text();*/
 
 			int row = dw_list.GetRow();
 			if (row < 1)
 				return 1;
-			string adid = "";
-			/*msxml::IXMLDOMElement ele = dw_list.GetRowElement(row);
-			adid = ele.selectSingleNode("adid").text;*/
-			adid = dw_list.GetItemString(row, "adid");
+			xstring adid = L"";
+			/*KXMLDOMElement ele = dw_list.GetRowElement(row);
+			adid = ele.selectSingleNode(L"adid").text();*/
+			adid = dw_list.GetItemString(row, L"adid");
 
 			xml x = new xml;
-			x.setNativePointer(xml::CreateInstance());
-			xaserverarg arg = new xaserverarg;
-			arg.setNativePointer(arg.CreateInstance());
-			arg.AddArg("adid", adid);
-			if (getUrl("/sale/data/AdministrativeDepartment/ad_delete", arg.GetString(), x) != 1)
+			
+			xaserverarg arg;
+			
+			arg.AddArg(L"adid", adid);
+			if (getUrl(L"/sale/data/AdministrativeDepartment/ad_delete", arg.GetString(), x) != 1)
 			{
-				string error = x.GetXmlDoc().text;
-				alert("err:" + error);
+				xstring error = x.text();
+				alert(L"err:" + error);
 				return 1;
 			}
-			alert(x.GetXmlDoc().text);
+			alert(x.text());
 			dw_list.DeleteRow(row);
 			return 1;
 		}
@@ -259,38 +272,38 @@
 		}
 
 		//命令发布函数
-		int OnCmdDispatch(string comdid)
+		int OnCmdDispatch(xstring comdid)
 		{
-			if (comdid == "xmUpdate")
+			if (comdid == L"xmUpdate")
 				return OnUpdate();
-			else if (comdid == "xmAdd")
+			else if (comdid == L"xmAdd")
 				return OnAdd();
-			else if (comdid == "xmDelete")
+			else if (comdid == L"xmDelete")
 				return OnDelete();
-			else if (comdid == "xmRefresh")
+			else if (comdid == L"xmRefresh")
 				return OnRefresh();
 			return 0;
 		}
 
 		//命令处理事件
-		int OnXCommand(ref TXCommandEvent evt, int param)
+		int OnXCommand(TEvent* evt, LPARAM p)
 		{
-			return OnCmdDispatch(evt.pStrID);
+			return OnCmdDispatch(evt->xcommand.pStrID);
 		}
 
 		int OnAttachEvent()
 		{
-			AttachEvent("tv_folder", "TVN_SELCHANGED", OnTreeSelChanged); //树选择
-			AttachEvent("tv_folder", "TVN_ITEMEXPANDING", OnTreeExpanding); //树展开
+			AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&ViewAdministrativeDepartmentList::OnTreeSelChanged); //树选择
+			AttachEvent(L"tv_folder", L"TVN_ITEMEXPANDING", (FEvent)&ViewAdministrativeDepartmentList::OnTreeExpanding); //树展开
 
-			//AttachEvent("dw_list","DWV_ROWFOCUSCHANGED",OnRowChanged);
-			//AttachEvent("cbx_1","CBN_SELCHANGE",OnSelectDdlb);
-			//AttachEvent("cbx_datashow","CBN_SELCHANGE",OnSelectDataShowDdlb);
+			//AttachEvent(L"dw_list",L"DWV_ROWFOCUSCHANGED",OnRowChanged);
+			//AttachEvent(L"cbx_1",L"CBN_SELCHANGE",OnSelectDdlb);
+			//AttachEvent(L"cbx_datashow",L"CBN_SELCHANGE",OnSelectDataShowDdlb);
 
 			//绑定工具条点击事件
-			AttachEvent("WM_XCOMMAND", OnXCommand);
+			AttachEvent(L"WM_XCOMMAND", (FEvent)&ViewAdministrativeDepartmentList::OnXCommand);
 			//获取焦点事件,用于重置工具条
-			AttachEvent("WM_SETFOCUS", OnSetFocus);
+			AttachEvent(L"WM_SETFOCUS", (FEvent)&ViewAdministrativeDepartmentList::OnSetFocus);
 		}
 
 		/*
@@ -298,13 +311,13 @@
 		int  OnRetrieve()
 		{
 			xml x = new xml;
-			x.setNativePointer(xml::CreateInstance());
-			xaserverarg arg = new xaserverarg;
-			arg.setNativePointer(arg.CreateInstance());
-			//arg.AddArg("xxx","xxx");
+			
+			xaserverarg arg;
+			
+			//arg.AddArg(L"xxx",L"xxx");
 			if (getUrl(myDataUrl,arg.GetString(),x)!=1)
 			{
-				trace(x.GetXmlDoc().text);
+				trace(x.text());
 				return -1;
 			}else
 			{
@@ -316,20 +329,20 @@
 		*/
 
 		//展开子文件
-		int  ExpandChildFolder(int hItem, msxml::IXMLDOMElement pElement)
+		int  ExpandChildFolder(HTREEITEM hItem, KXMLDOMElement pElement)
 		{
-			msxml::IXMLDOMNodeList nlist = pElement.SelectNodes("Item");
-			int len = nlist.length;
+			KXMLDOMNodeList nlist = pElement.selectNodes(L"Item");
+			int len = nlist.length();
 			for (int i = 0; i < len; i++)
 			{
-				msxml::IXMLDOMElement e = nlist.item(i);
-				string name = e.getAttribute("name");
-				string sImage = e.getAttribute("image");
-				string child = e.getAttribute("child");
+				KXMLDOMElement& e = *new KXMLDOMElement(nlist.item(i));
+				xstring name = e.getAttribute(L"name");
+				xstring sImage = e.getAttribute(L"image");
+				xstring child = e.getAttribute(L"child");
 				int image = 18;
 				if (sImage) image = sImage.toInt();
-				int h = tv_folder.InsertChildItem(tv_folder.GetId(), hItem, name, trust(e as int), image);
-				if (child != "no")
+				HTREEITEM h = tv_folder.InsertChildItem(hItem, name, (LPARAM) & e, image);
+				if (child != L"no")
 					tv_folder.SetItemChild(h, 1);
 				ExpandChildFolder(h, e);
 			}
@@ -339,8 +352,8 @@
 		//初始化文件夹
 		int  InitialFolder()
 		{
-			msxml::IXMLDOMElement xframeElement = GetElement();
-			msxml::IXMLDOMElement e = xframeElement.selectSingleNode("//xtree[@name='tv_folder']/initial");
+			KXMLDOMElement xframeElement = GetElement();
+			KXMLDOMElement e = xframeElement.selectSingleNode(L"//xtree[@name='tv_folder']/initial");
 			if (e)
 				ExpandChildFolder(0, e);
 			return 1;
@@ -348,14 +361,14 @@
 
 		int onload()
 		{
-			dw_list = GetControl("dw_list");
-			dw_list.openUrl("/sale/view/AdministrativeDepartment/template/adlist");
-			dw_list.SetColumnState("adid", false);
-			dw_list.SetColumnState("parentid", false);
+			dw_list = GetControl(L"dw_list");
+			dw_list.openUrl(L"/sale/view/AdministrativeDepartment/template/adlist");
+			dw_list.SetColumnState(L"adid", false);
+			dw_list.SetColumnState(L"parentid", false);
 
-			myDataUrl = "/sale/data/AdministrativeDepartment/ad_list";
-			urlTree = "/sale/data/AdministrativeDepartment/ad_sidelist";
-			tv_folder = GetControl("tv_folder");
+			myDataUrl = L"/sale/data/AdministrativeDepartment/ad_list";
+			urlTree = L"/sale/data/AdministrativeDepartment/ad_sidelist";
+			tv_folder = GetControl(L"tv_folder");
 			tv_folder.SetLineAtRoot(true);
 			InitialFolder();
 			OnAttachEvent();
@@ -369,5 +382,4 @@
 
 			return 1;
 		}
-	};
-]
\ No newline at end of file
+	};
\ No newline at end of file
diff --git a/jrj/project/business/HR/AdministrativeDepartmentFolder.cpp b/jrj/project/business/HR/AdministrativeDepartmentFolder.cpp
index 62c350d..31ca6fa 100644
--- a/jrj/project/business/HR/AdministrativeDepartmentFolder.cpp
+++ b/jrj/project/business/HR/AdministrativeDepartmentFolder.cpp
@@ -1,42 +1,55 @@
-use "xcontrol.vframe.vbusiness.vd"
-use "xbase.vframe.vbusiness.vd"
+#include <wobject/xstring.hpp>
+#include <xcontrol/xtreeview.hpp>
+#include <xcontrol/xdwgrid.hpp>
+#include <xcontrol/xcell.hpp>
 
-unit trade
-[
-	class AdministrativeDepartmentFolderView : public xframe
+
+#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
+#include "viewobject/view.base.hpp"
+
+using xml = KXMLDOMDocument;
+	class  __declspec(dllexport) AdministrativeDepartmentFolderView : public xframe
 	{
+	public:
 		//xdwgrid	dw_list;
 		xdwtable dw_base;//新增弹窗时使用
-		string adid;
-		string name;
-		string parentid;
-		string getsingle_url;
+		xstring adid;
+		xstring name;
+		xstring parentid;
+		xstring getsingle_url;
 
 		xnode	m_agentNode;	//Agent Condition
-
+	public:
+		AdministrativeDepartmentFolderView(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
+	public:
+		static AdministrativeDepartmentFolderView* CreateInstance(void* implPtr, void* hWnd)
+		{
+			AdministrativeDepartmentFolderView* pWin = new AdministrativeDepartmentFolderView(implPtr, (HWND)hWnd);
+			return pWin;
+		}
 		/*int SetAgent()
 		{
-			string xfNodeAgentArea  = "agentarea";
+			xstring xfNodeAgentArea  = L"agentarea";
 			xnode anode = GetAgentNode(xfNodeAgentArea);
 			if(m_agentNode)
 			{
-				SetAgentNodeContent (anode,m_agentNode);
+				SetAgentNode (anode,m_agentNode);
 			}
 			else
 			{
-				msxml::IXMLDOMElement xframeElement =  GetElement();
-				msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]/*");
+				KXMLDOMElement xframeElement =  GetElement();
+				KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/"+xfNodeAgentArea+L"[1]/*");
 				if(agent)
 				{
-					string s = agent.xml;
-					m_agentNode =  SetAgentNodeContent (anode,s);
+					xstring s = agent.xml;
+					m_agentNode =  SetAgentNode (anode,s);
 				}
 			}
 			return 1;
 		}*/
 
 		//焦点激活处理函数
-		int OnSetFocus(ref TEvent evt, int param)
+		int OnSetFocus(TEvent* evt, LPARAM p)
 		{
 			//重置工具条
 			//SetAgent();
@@ -46,89 +59,89 @@
 		int OnSave()
 		{
 			xml x = new xml;
-			x.setNativePointer(xml::CreateInstance());
+			
 			dw_base.AcceptText();
-			dw_base.DwUpdateAllTo(x.GetXmlDoc());
-			xaserverarg arg = new xaserverarg;
+			dw_base.DwUpdateAllTo(x);
+			xaserverarg arg;
 			arg.setNativePointer(xaserverarg::CreateInstance());
-			arg.AddArg("content", x.GetXml());
-			//trace(x.GetXml());
-			if (getUrl("/sale/data/AdministrativeDepartment/ad_update", arg.GetString(), x) != 1)
+			arg.AddArg(L"content", x.xml());
+			//trace(x.xml());
+			if (getUrl(L"/sale/data/AdministrativeDepartment/ad_update", arg.GetString(), x) != 1)
 			{
-				string error = x.GetXmlDoc().text;
-				alert("err:" + error);
+				xstring error = x.text();
+				alert(L"err:" + error);
 				return 1;
 			}
-			//trace("返回信息"+x.GetXml());
-			string str = x.GetXmlDoc().documentElement.getAttribute("text");
-			if (str == "true")
+			//trace(L"返回信息"+x.xml());
+			xstring str = x.documentElement().getAttribute(L"text");
+			if (str == L"true")
 			{
 				dw_base.ResetUpdateStatus();
 				CloseWindow();
-				alert("保存成功!");
+				alert(L"保存成功!");
 			}
 			else
 			{
-				alert("保存失败!");
+				alert(L"保存失败!");
 			}
 			return 1;
 		}
 
 		//命令发布函数
-		int OnCmdDispatch(string comdid)
+		int OnCmdDispatch(xstring comdid)
 		{
-			if (comdid == "xmSave")
+			if (comdid == L"xmSave")
 				return OnSave();
-			else if (comdid == "xmClose")
+			else if (comdid == L"xmClose")
 				CloseWindow();
 			return 0;
 		}
 
 		//命令处理事件
-		int OnXCommand(ref TXCommandEvent evt, int param)
+		int OnXCommand(TEvent* evt, LPARAM p)
 		{
-			return OnCmdDispatch(evt.pStrID);
+			return OnCmdDispatch(evt->xcommand.pStrID);
 		}
 
 		int OnAttachEvent()
 		{
 			//绑定工具条点击事件
-			AttachEvent("WM_XCOMMAND", OnXCommand);
+			AttachEvent(L"WM_XCOMMAND", (FEvent)&AdministrativeDepartmentFolderView::OnXCommand);
 			//获取焦点事件,用于重置工具条
-			AttachEvent("WM_SETFOCUS", OnSetFocus);
+			AttachEvent(L"WM_SETFOCUS", (FEvent)&AdministrativeDepartmentFolderView::OnSetFocus);
 		}
 
 		int  OnParentRetrieve()
 		{
 			xml x = new xml;
-			x.setNativePointer(xml::CreateInstance());
-			xaserverarg arg = new xaserverarg;
-			arg.setNativePointer(arg.CreateInstance());
-			arg.AddArg("adid", parentid);
+			
+			xaserverarg arg;
+			
+			arg.AddArg(L"adid", parentid);
 			if (getUrl(getsingle_url, arg.GetString(), x) != 1)
 			{
-				trace(x.GetXmlDoc().text);
+				trace(x.text());
 				return -1;
 			}
 			else
 			{
-				string parent_name = "";
-				string parent_adid = "";
-				string parent_level = "";
-				msxml::IXMLDOMNodeList nlist = x.GetXmlDoc().SelectNodes("data/Item");
-				int len = nlist.length;
+				xstring parent_name = L"";
+				xstring parent_adid = L"";
+				xstring parent_level = L"";
+				KXMLDOMNodeList nlist = x.selectNodes(L"data/Item");
+				int len = nlist.length();
 				for (int i = 0; i < len; i++)
 				{
-					msxml::IXMLDOMElement e = nlist.item(i);
-					parent_name = e.selectSingleNode("name").text;
-					parent_adid = e.getAttribute("guid");
-					parent_level = e.selectSingleNode("level").text;
+					KXMLDOMElement e = nlist.item(i);
+					parent_name = e.selectSingleNode(L"name").text();
+					parent_adid = e.getAttribute(L"guid");
+					parent_level = e.selectSingleNode(L"level").text();
 				}
-				xdwtable dw_obj = dw_base.FindDwTable("Item");
-				dw_obj.SetItemString(1, "parent_name", parent_name);
-				if (adid == "") {
-					dw_obj.SetItemString(1, "parentid", parent_adid);
-					dw_obj.SetItemString(1, "level", (parent_level.toInt() + 1).toString());
+				xdwtable dw_obj = dw_base.FindDwTable(L"Item");
+				dw_obj.SetItemString(1, L"parent_name", parent_name);
+				if (adid == L"") {
+					dw_obj.SetItemString(1, L"parentid", parent_adid);
+					dw_obj.SetItemString(1, L"level", xstring((parent_level.toInt() + 1)));
 				}
 
 				//dw_base.Retrieve(x);
@@ -140,13 +153,13 @@
 		int  OnRetrieve()
 		{
 			xml x = new xml;
-			x.setNativePointer(xml::CreateInstance());
-			xaserverarg arg = new xaserverarg;
-			arg.setNativePointer(arg.CreateInstance());
-			arg.AddArg("adid", adid);
+			
+			xaserverarg arg;
+			
+			arg.AddArg(L"adid", adid);
 			if (getUrl(getsingle_url, arg.GetString(), x) != 1)
 			{
-				trace(x.GetXmlDoc().text);
+				trace(x.text());
 				return -1;
 			}
 			else
@@ -160,21 +173,21 @@
 		int onload()
 		{
 
-			dw_base = GetControl("dw_base");
-			dw_base.openUrl("/sale/view/AdministrativeDepartment/template/adwin");
-			getsingle_url = "/sale/data/AdministrativeDepartment/ad_getsingle";
-			xaserverarg arg = new xaserverarg;
-			arg.setNativePointer(arg.CreateInstance());
-			arg = GetParam();
-			adid = "";
-			parentid = "";
-			if (GetParam()) {
-				parentid = arg.GetArgString("parentid");
-				adid = arg.GetArgString("adid");
+			dw_base = GetControl(L"dw_base");
+			dw_base.openUrl(L"/sale/view/AdministrativeDepartment/template/adwin");
+			getsingle_url = L"/sale/data/AdministrativeDepartment/ad_getsingle";
+			xaserverarg arg;
+			
+			
+			adid = L"";
+			parentid = L"";
+			if (GetWinParam()) {
+				parentid = arg.GetArgString(L"parentid");
+				adid = arg.GetArgString(L"adid");
 			}
-			if (adid != "")
+			if (adid != L"")
 				OnRetrieve();
-			if (parentid != "")
+			if (parentid != L"")
 				OnParentRetrieve();
 			OnAttachEvent();
 			dw_base.SetColHeaderHeight(0);
@@ -190,5 +203,4 @@
 
 			return 1;
 		}
-	};
-]
\ No newline at end of file
+	};
\ No newline at end of file
diff --git a/jrj/project/business/HR/BlankExcelTemplate.cpp b/jrj/project/business/HR/BlankExcelTemplate.cpp
index 98bc2b1..289e4ce 100644
--- a/jrj/project/business/HR/BlankExcelTemplate.cpp
+++ b/jrj/project/business/HR/BlankExcelTemplate.cpp
@@ -1,38 +1,51 @@
-use "xcontrol.vframe.vbusiness.vd"
-use "xbase.vframe.vbusiness.vd"
+#include <wobject/xstring.hpp>
+#include <xcontrol/xtreeview.hpp>
+#include <xcontrol/xdwgrid.hpp>
+#include <xcontrol/xcell.hpp>
 
-unit trade
-[
-	class BlankExcelTemplateView : public xframe
+
+#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
+#include "viewobject/view.base.hpp"
+
+using xml = KXMLDOMDocument;
+	class __declspec(dllexport) BlankExcelTemplateView : public xframe
 	{
+	public:
 		xdwgrid	dw_list;
 		//xdwtable dw_base;//新增弹窗时使用
 
 		xnode	m_agentNode;	//Agent Condition
-
+	public:
+		BlankExcelTemplateView(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
+	public:
+		static BlankExcelTemplateView* CreateInstance(void* implPtr, void* hWnd)
+		{
+			BlankExcelTemplateView* pWin = new BlankExcelTemplateView(implPtr, (HWND)hWnd);
+			return pWin;
+		}
 		int SetAgent()
 		{
-			string xfNodeAgentArea = "agentarea";
+			xstring xfNodeAgentArea = L"agentarea";
 			xnode anode = GetAgentNode(xfNodeAgentArea);
 			if (m_agentNode)
 			{
-				SetAgentNodeContent(anode, m_agentNode);
+				SetAgentNode(anode, m_agentNode);
 			}
 			else
 			{
-				msxml::IXMLDOMElement xframeElement = GetElement();
-				msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/" + xfNodeAgentArea + "[1]/*");
+				KXMLDOMElement xframeElement = GetElement();
+				KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/" + xfNodeAgentArea + L"[1]/*");
 				if (agent)
 				{
-					string s = agent.xml;
-					m_agentNode = SetAgentNodeContent(anode, s);
+					xstring s = agent.xml();
+					m_agentNode = SetAgentNode(anode, s);
 				}
 			}
 			return 1;
 		}
 
 		//焦点激活处理函数
-		int OnSetFocus(ref TEvent evt, int param)
+		int OnSetFocus(TEvent* evt, LPARAM p)
 		{
 			//重置工具条
 			SetAgent();
@@ -42,65 +55,65 @@
 		int OnSave()
 		{
 			xml x = new xml;
-			x.setNativePointer(xml::CreateInstance());
+			
 			dw_list.AcceptText();
-			dw_list.DwUpdateAllToEx(x.GetXmlDoc());
-			xaserverarg arg = new xaserverarg;
+			dw_list.DwUpdateAllToEx(x);
+			xaserverarg arg;
 			arg.setNativePointer(xaserverarg::CreateInstance());
-			arg.AddArg("content", x.GetXml().replace(" 00:00:00", "").replace("0000-00-00", ""));
-			//trace(x.GetXml().replace(" 00:00:00", "").replace("0000-00-00", ""));//运行界面打印			
-			if (getUrl("/sale/data/ManpowerFile/multiUpdate", arg.GetString(), x) != 1) {
-				string error = x.GetXmlDoc().text;
-				alert("err:" + error);
+			arg.AddArg(L"content", x.xml().replace(L" 00:00:00", L"").replace(L"0000-00-00", L""));
+			//trace(x.xml().replace(L" 00:00:00", L"").replace(L"0000-00-00", L""));//运行界面打印			
+			if (getUrl(L"/sale/data/ManpowerFile/multiUpdate", arg.GetString(), x) != 1) {
+				xstring error = x.text();
+				alert(L"err:" + error);
 				return 1;
 			}
-			string str = x.GetXmlDoc().documentElement.getAttribute("text");
-			if (str == "true")
+			xstring str = x.documentElement().getAttribute(L"text");
+			if (str == L"true")
 			{
 				dw_list.ResetUpdateStatus();//更改更新状态,防止多保存
-				alert("保存成功!");
+				alert(L"保存成功!");
 
 			}
 			else
 			{
-				alert("保存失败!");
+				alert(L"保存失败!");
 			}
 			return 1;
 		}
 
 		//命令发布函数
-		int OnCmdDispatch(string comdid)
+		int OnCmdDispatch(xstring comdid)
 		{
-			if (comdid == "xmSave")
+			if (comdid == L"xmSave")
 				return OnSave();
 			return 0;
 		}
 
 		//命令处理事件
-		int OnXCommand(ref TXCommandEvent evt, int param)
+		int OnXCommand(TEvent* evt, LPARAM p)
 		{
-			return OnCmdDispatch(evt.pStrID);
+			return OnCmdDispatch(evt->xcommand.pStrID);
 		}
 
 		int OnAttachEvent()
 		{
 			//绑定工具条点击事件
-			AttachEvent("WM_XCOMMAND", OnXCommand);
+			AttachEvent(L"WM_XCOMMAND", (FEvent)&BlankExcelTemplateView::OnXCommand);
 			//获取焦点事件,用于重置工具条
-			AttachEvent("WM_SETFOCUS", OnSetFocus);
+			AttachEvent(L"WM_SETFOCUS", (FEvent)&BlankExcelTemplateView::OnSetFocus);
 		}
 
 		/*//加载数据
 		int  OnRetrieve()
 		{
 			xml x = new xml;
-			x.setNativePointer(xml::CreateInstance());
-			xaserverarg arg = new xaserverarg;
-			arg.setNativePointer(arg.CreateInstance());
-			arg.AddArg("xxx","xxx");
-			if (getUrl("",arg.GetString(),x)!=1)
+			
+			xaserverarg arg;
+			
+			arg.AddArg(L"xxx",L"xxx");
+			if (getUrl(L"",arg.GetString(),x)!=1)
 			{
-				trace(x.GetXmlDoc().text);
+				trace(x.text());
 				return -1;
 			}else
 			{
@@ -113,8 +126,8 @@
 
 		int onload()
 		{
-			dw_list = GetControl("dw_list");
-			dw_list.openUrl("/sale/view/ManpowerFile/template/list");
+			dw_list = GetControl(L"dw_list");
+			dw_list.openUrl(L"/sale/view/ManpowerFile/template/list");
 
 			OnAttachEvent();
 
@@ -127,5 +140,4 @@
 
 			return 1;
 		}
-	};
-]
\ No newline at end of file
+	};
\ No newline at end of file
diff --git a/jrj/project/business/HR/ManpowerFile.cpp b/jrj/project/business/HR/ManpowerFile.cpp
index f29ef85..ea4c79e 100644
--- a/jrj/project/business/HR/ManpowerFile.cpp
+++ b/jrj/project/business/HR/ManpowerFile.cpp
@@ -1,71 +1,84 @@
-use "xcontrol.vframe.vbusiness.vd"
-use "xbase.vframe.vbusiness.vd"
-use "base.view.vd"
+#include <wobject/xstring.hpp>
+#include <xcontrol/xtreeview.hpp>
+#include <xcontrol/xdwgrid.hpp>
+#include <xcontrol/xcell.hpp>
 
-unit trade
-[
-	class ViewManpowerFileList : public xframe
+
+#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
+#include "viewobject/view.base.hpp"
+
+using xml = KXMLDOMDocument;
+	class  __declspec(dllexport)  ViewManpowerFileList : public xframe
 	{
+	public:
 		xdwgrid	dw_list;//hxsoft.com -> Developer -> wface -> vcontrol
 		int hSignWin;
 		xdwtable dw_arg;
 		xnode	m_agentNode;	//Agent Condition
 
-		string urlTree;
+		xstring urlTree;
 		xtreeview tv_folder;
-		//展开子文件
-		int  ExpandChildFolder(int hItem, msxml::IXMLDOMElement pElement)
+	public:
+		ViewManpowerFileList(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
+	public:
+		static ViewManpowerFileList* CreateInstance(void* implPtr, void* hWnd)
 		{
-			msxml::IXMLDOMNodeList nlist = pElement.SelectNodes("Item");
-			int len = nlist.length;
+			ViewManpowerFileList* pWin = new ViewManpowerFileList(implPtr, (HWND)hWnd);
+			return pWin;
+		}
+		//展开子文件
+		int  ExpandChildFolder(HTREEITEM hItem,KXMLDOMElement pElement)
+		{
+			KXMLDOMNodeList nlist = pElement.selectNodes(L"Item");
+			int len = nlist.length();
 			for (int i = 0; i < len; i++)
 			{
-				msxml::IXMLDOMElement e = nlist.item(i);
-				string name = e.getAttribute("name");
-				string sImage = e.getAttribute("image");
-				string child = e.getAttribute("child");
+				KXMLDOMElement& e = *new KXMLDOMElement(nlist.item(i));
+				xstring name = e.getAttribute(L"name");
+				xstring sImage = e.getAttribute(L"image");
+				xstring child = e.getAttribute(L"child");
 				int image = 15;
 				if (sImage) image = sImage.toInt();
-				int h = tv_folder.InsertChildItem(tv_folder.GetId(), hItem, name, trust(e as int), image);
-				if (child != "no") tv_folder.SetItemChild(h, 1);
+				HTREEITEM h = tv_folder.InsertChildItem( hItem, name, (LPARAM)&e, image);
+				if (child != L"no") tv_folder.SetItemChild(h, 1);
 				ExpandChildFolder(h, e);
 			}
 			return 1;
 		}
 		int  InitialFolder()
 		{
-			msxml::IXMLDOMElement xframeElement = GetElement();
-			msxml::IXMLDOMElement e = xframeElement.selectSingleNode("//xtree[@name='tv_folder']/initial");
+			KXMLDOMElement xframeElement = GetElement();
+			KXMLDOMElement e = xframeElement.selectSingleNode(L"//xtree[@name='tv_folder']/initial");
 			if (e)
 				ExpandChildFolder(0, e);
 			return 1;
 		}
 
-		int ExpandCatChildFolder(int hItem, msxml::IXMLDOMElement ele, int image)
+		int ExpandCatChildFolder(HTREEITEM hItem, KXMLDOMElement ele, int image)
 		{
-			msxml::IXMLDOMNodeList nlist = ele.SelectNodes("item");
-			int len = nlist.length;
+			KXMLDOMNodeList nlist = ele.selectNodes(L"item");
+			int len = nlist.length();
 			if (len > 0) tv_folder.SetItemChild(hItem, 1);
 			for (int i = 0; i < len; i++)
 			{
-				msxml::IXMLDOMElement e = nlist.item(i);
-				string name = e.getAttribute("name");
-				int h = tv_folder.InsertChildItem(hItem, name, trust(e as int), image);
+				KXMLDOMElement& e = *new KXMLDOMElement(nlist.item(i));
+				xstring name = e.getAttribute(L"name");
+				HTREEITEM h = tv_folder.InsertChildItem(hItem, name, (LPARAM)&e, image);
 				ExpandCatChildFolder(h, e, 35);
 			}
 			return 1;
 		}
-		int ExpandFolderItem(int hItem)
+		int ExpandFolderItem(HTREEITEM hItem)
 		{
 			xml x = ViewObject::RetrieveData(urlTree);
 			if (!x) return 0;
-			msxml::IXMLDOMNodeList nlist = x.GetXmlDoc().SelectNodes("/data/item");
-			int len = nlist.length;
+			KXMLDOMNodeList nlist = x.selectNodes(L"/data/item");
+			int len = nlist.length();
 			for (int i = 0; i < len; i++)
 			{
-				msxml::IXMLDOMElement e = nlist.item(i);
-				string name = e.getAttribute("name");
-				int h = tv_folder.InsertChildItem(hItem, name, trust(e as int), 35);
+				KXMLDOMElement& e = *new KXMLDOMElement(nlist.item(i));
+				xstring name = e.getAttribute(L"name");
+				HTREEITEM h = tv_folder.InsertChildItem(hItem, name, (LPARAM)&e, 35);
 				ExpandCatChildFolder(h, e, 35);
 			}
 			return 1;
@@ -73,27 +86,27 @@
 
 		int SetAgent()
 		{
-			string xfNodeAgentArea = "agentarea";
+			xstring xfNodeAgentArea = L"agentarea";
 			xnode anode = GetAgentNode(xfNodeAgentArea);
 			if (m_agentNode)
 			{
-				SetAgentNodeContent(anode, m_agentNode);
+				SetAgentNode(anode, m_agentNode);
 			}
 			else
 			{
-				msxml::IXMLDOMElement xframeElement = GetElement();
-				msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/" + xfNodeAgentArea + "[1]/*");
+				KXMLDOMElement xframeElement = GetElement();
+				KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/" + xfNodeAgentArea + L"[1]/*");
 				if (agent)
 				{
-					string s = agent.xml;
-					m_agentNode = SetAgentNodeContent(anode, s);
+					xstring s = agent.xml();
+					m_agentNode = SetAgentNode(anode, s);
 				}
 			}
 			return 1;
 		}
 
 		//焦点激活处理函数
-		int OnSetFocus(ref TEvent evt, int param)
+		int OnSetFocus(TEvent* evt, LPARAM p)
 		{
 			//重置工具条
 			SetAgent();
@@ -102,7 +115,7 @@
 
 		int OnOpenAddWindow()
 		{
-			OpenWindow("dev:xpage[ManpowerFileWindow.vx]");
+			OpenWindow(L"dev:xpage[ManpowerFileWindow.vx]");
 			return 1;
 		}
 
@@ -111,15 +124,15 @@
 			int row = dw_list.GetRow();
 			if (row < 1)
 				return 1;
-			msxml::IXMLDOMElement ele = dw_list.GetRowElement(row);
-			string mfid = ele.selectSingleNode("mfid").text;//获取节点的值
-			OpenWindow("dev:xpage[ManpowerFileWindow.vx]", cast(mfid as int));
+			KXMLDOMElement ele = dw_list.GetRowElement(row);
+			xstring mfid = ele.selectSingleNode(L"mfid").text();//获取节点的值
+			OpenWindow(L"dev:xpage[ManpowerFileWindow.vx]",mfid);
 			return 1;
 		}
 
 		int OnExchangeFileWindow()
 		{
-			xwin xw = OpenWindow("dev:xpage[BlankExcelTemplate.vx]", 0);
+			xwin xw = OpenWindow(L"dev:xpage[BlankExcelTemplate.vx]", 0);
 			hSignWin = xw.GetHWND();
 			return 1;
 		}
@@ -128,26 +141,26 @@
 		{
 			int MB_OKCANCEL = 1;
 			int IDOK = 1;
-			int ret = win32::MessageBox(GetHWND(), "确认删除?", "提示", MB_OKCANCEL);
+			int ret = MessageBoxW(GetHWND(), L"确认删除?", L"提示", MB_OKCANCEL);
 			if (ret == IDOK)
 			{
 				int row = dw_list.GetRow();
 				if (row < 1)
 					return 1;
-				msxml::IXMLDOMElement ele = dw_list.GetRowElement(row);
-				string mfid = ele.selectSingleNode("mfid").text;//查看
+				KXMLDOMElement ele = dw_list.GetRowElement(row);
+				xstring mfid = ele.selectSingleNode(L"mfid").text();//查看
 				xml x = new xml;
-				x.setNativePointer(xml::CreateInstance());
-				xaserverarg arg = new xaserverarg;//放置参数
-				arg.setNativePointer(arg.CreateInstance());
-				arg.AddArg("mfid", mfid);
-				if (getUrl("/sale/data/ManpowerFile/delete", arg.GetString(), x) != 1)
+				
+				xaserverarg arg;//放置参数
+				
+				arg.AddArg(L"mfid", mfid);
+				if (getUrl(L"/sale/data/ManpowerFile/delete", arg.GetString(), x) != 1)
 				{
-					string error = x.GetXmlDoc().text;
-					alert("err:" + error);
+					xstring error = x.text();
+					alert(L"err:" + error);
 					return 1;
 				}
-				alert(x.GetXmlDoc().text);
+				alert(x.text());
 				OnRefresh();
 			}
 			return 1;
@@ -161,50 +174,50 @@
 		//分析
 		int OnAnalysis()
 		{
-			int hCursor = xutil::SetCursorWait();
-			string str = dw_list.DataAnalysis("");
-			xaserverarg arg = new xaserverarg;
-			arg.setNativePointer(arg.CreateInstance());
-			arg.AddArg("html", str);
+			HCURSOR hCursor = xutil::SetCursorWait();
+			xstring str = dw_list.DataAnalysis(L"");
+			xaserverarg arg;
+			
+			arg.AddArg(L"html", str);
 			int obj = cast(dw_list as int);
-			arg.AddArg("obj", obj.toString());
-			OpenWindow("dev:xpage[data.vanalysis.vx]", cast(arg as int));
+			arg.AddArg(L"obj", obj.toString());
+			OpenWindow(L"dev:xpage[data.vanalysis.vx]", cast(arg as int));
 			xutil::RestoreCursor(hCursor);
 			return 1;
 		}
 
-		string GetQueryArg()
+		xstring GetQueryArg()
 		{
 			dw_arg.AcceptText();
 			xml x = new xml;
-			x.setNativePointer(xml::CreateInstance());
-			dw_arg.DwUpdateAllTo(x.GetXmlDoc());
+			
+			dw_arg.DwUpdateAllTo(x);
 
-			return x.GetXml();
+			return x.xml();
 		}
 
 		int  OnRetrieveEx1()
 		{
-			int hItem = tv_folder.GetSelectedItem();
+			HTREEITEM hItem = tv_folder.GetSelectedItem();
 			if (hItem <= 0) return 1;
 
-			int hCursor = xutil::SetCursorWait();
-			msxml::IXMLDOMElement e1 = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
-			string no = e1.getAttribute("no");
+			HCURSOR hCursor = xutil::SetCursorWait();
+			KXMLDOMElement& e1 = *(KXMLDOMElement*)tv_folder.GetItemData(hItem);
+			xstring no = e1.getAttribute(L"no");
 
 			xml x = new xml;
-			x.setNativePointer(xml::CreateInstance());
-			xaserverarg arg = new xaserverarg;
-			arg.setNativePointer(arg.CreateInstance());
-			//arg.AddArg("QueryTxt",GetControl("sle_search").GetText());
-			arg.AddArg("QueryArg", GetQueryArg());
-			arg.AddArg("MStatus", no);
+			
+			xaserverarg arg;
+			
+			//arg.AddArg(L"QueryTxt",GetControl(L"sle_search").GetText());
+			arg.AddArg(L"QueryArg", GetQueryArg());
+			arg.AddArg(L"MStatus", no);
 
-			arg.AddArg("QueryName", GetControl("QueryName").GetText());
+			arg.AddArg(L"QueryName", GetControl(L"QueryName").GetText());
 			//trace(arg.GetString());
-			if (getUrl("/sale/data/ManpowerFile/list", arg.GetString(), x) != 1)
+			if (getUrl(L"/sale/data/ManpowerFile/list", arg.GetString(), x) != 1)
 			{
-				trace(x.GetXmlDoc().text);
+				trace(x.text());
 				return -1;
 			}
 			else
@@ -219,36 +232,36 @@
 		}
 
 		//命令发布函数
-		int OnCmdDispatch(string comdid)
+		int OnCmdDispatch(xstring comdid)
 		{
-			if (comdid == "xmAddHumanDocument")
+			if (comdid == L"xmAddHumanDocument")
 				return OnOpenAddWindow();
-			else if (comdid == "xmUpdateHumanDocument")
+			else if (comdid == L"xmUpdateHumanDocument")
 				return OnOpenUpdateWindow();
-			else if (comdid == "xmRefresh" || comdid == "xmSearch")
+			else if (comdid == L"xmRefresh" || comdid == L"xmSearch")
 				return OnRetrieveEx1();
-			else if (comdid == "xmExchangeFile")
+			else if (comdid == L"xmExchangeFile")
 				return OnExchangeFileWindow();
-			else if (comdid == "xmDelete")
+			else if (comdid == L"xmDelete")
 				return OnDelete();
-			else if (comdid == "xmAnalysis")
+			else if (comdid == L"xmAnalysis")
 				return OnAnalysis();
 			return 0;
 		}
 
 		//命令处理事件
-		int OnXCommand(ref TXCommandEvent evt, int param)
+		int OnXCommand(TEvent* evt, LPARAM p)
 		{
-			return OnCmdDispatch(evt.pStrID);
+			return OnCmdDispatch(evt->xcommand.pStrID);
 		}
 
-		int OnDoubleClicked(ref TNotifyEvent evt, int p)
+		int OnDoubleClicked(TEvent* evt, LPARAM p)
 		{
-			return OnCmdDispatch("xmUpdateHumanDocument");
+			return OnCmdDispatch(L"xmUpdateHumanDocument");
 		}
 
 
-		int OnTreeSelChanged(ref TNotifyEvent evt, int p)
+		int OnTreeSelChanged(TEvent* evt, LPARAM p)
 		{
 			return OnRetrieveEx1();
 		}
@@ -256,11 +269,11 @@
 		int OnAttachEvent()
 		{
 			//绑定工具条点击事件
-			AttachEvent("WM_XCOMMAND", OnXCommand);
+			AttachEvent(L"WM_XCOMMAND", (FEvent)&ViewManpowerFileList::OnXCommand);
 			//获取焦点事件,用于重置工具条
-			AttachEvent("WM_SETFOCUS", OnSetFocus);
-			AttachEvent("dw_list", "DWV_DOUBLECLICKED", OnDoubleClicked);//行双击
-			AttachEvent("tv_folder", "TVN_SELCHANGED", OnTreeSelChanged); //树选择
+			AttachEvent(L"WM_SETFOCUS", (FEvent)&ViewManpowerFileList::OnSetFocus);
+			AttachEvent(L"dw_list", L"DWV_DOUBLECLICKED", (FEvent)&ViewManpowerFileList::OnDoubleClicked);//行双击
+			AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&ViewManpowerFileList::OnTreeSelChanged); //树选择
 		}
 
 		//数据传输函数
@@ -268,17 +281,17 @@
 		{
 			//int  hCursor = xutil::SetCursorWait();//鼠标位置
 			xml x = new xml;
-			x.setNativePointer(xml::CreateInstance());
-			xaserverarg arg = new xaserverarg;//放置参数
-			arg.setNativePointer(arg.CreateInstance());
-			//arg.AddArg("QueryTxt",GetControl("sle_search").GetText());//添加所需要传到后台的参数
-			arg.AddArg("QueryArg", GetQueryArg());
-			arg.AddArg("MStatus", "");
-			arg.AddArg("QueryName", GetControl("QueryName").GetText());
-			//trace("查看arg="+arg.GetString());//运行界面打印
-			if (getUrl("/sale/data/ManpowerFile/list", arg.GetString(), x) != 1)///sale/data/ManpowerFile/doclist后台接口
+			
+			xaserverarg arg;//放置参数
+			
+			//arg.AddArg(L"QueryTxt",GetControl(L"sle_search").GetText());//添加所需要传到后台的参数
+			arg.AddArg(L"QueryArg", GetQueryArg());
+			arg.AddArg(L"MStatus", L"");
+			arg.AddArg(L"QueryName", GetControl(L"QueryName").GetText());
+			//trace(L"查看arg=L"+arg.GetString());//运行界面打印
+			if (getUrl(L"/sale/data/ManpowerFile/list", arg.GetString(), x) != 1)///sale/data/ManpowerFile/doclist后台接口
 			{
-				trace(x.GetXmlDoc().text);
+				trace(x.text());
 				return -1;
 			}
 			else
@@ -291,10 +304,10 @@
 
 		int onload()
 		{
-			//【1】控制页面中name="dw_list"的内容
-			dw_list = GetControl("dw_list");
+			//【1】控制页面中name=L"dw_list"的内容
+			dw_list = GetControl(L"dw_list");
 			//【2】加载sale根目录下view下的ManpowerFile.vface文件中的template/list url 前端页面
-			dw_list.openUrl("/sale/view/ManpowerFile/template/list");
+			dw_list.openUrl(L"/sale/view/ManpowerFile/template/list");
 			//【3】绑定事件
 			OnAttachEvent();
 			//【4】加载后台数据
@@ -302,17 +315,17 @@
 			//【6】设为只读
 			dw_list.SetReadOnly(true);
 
-			dw_arg = GetControl("dw_arg");
-			dw_arg.openUrl("/sale/view/ManpowerFile/template/QueryArg");
+			dw_arg = GetControl(L"dw_arg");
+			dw_arg.openUrl(L"/sale/view/ManpowerFile/template/QueryArg");
 			dw_arg.SetColHeaderHeight(0);
 			dw_arg.SetRowSelectorWidth(0);
 			dw_arg.SetHScrollState(false);
 			dw_arg.SetVScrollState(false);
-			dw_arg.SetItemString(1, "DateType", "不设定");
+			dw_arg.SetItemString(1, L"DateType", L"不设定");
 
 			OnRetrieve();
-			urlTree = "/sale/data/ManpowerFile/folder";
-			tv_folder = GetControl("tv_folder");
+			urlTree = L"/sale/data/ManpowerFile/folder";
+			tv_folder = GetControl(L"tv_folder");
 			tv_folder.SetLineAtRoot(true);
 			InitialFolder();
 
@@ -322,11 +335,10 @@
 		int onloaded()
 		{
 			SetAgent();
-			int hItem = tv_folder.GetRootItem();
+			HTREEITEM hItem = tv_folder.GetRootItem();
 			ExpandFolderItem(hItem);
 			tv_folder.ExpandItem(hItem);
 			tv_folder.ItemFocus(hItem);
 			return 1;
 		}
-	};
-]
\ No newline at end of file
+	};
\ No newline at end of file
diff --git a/jrj/project/business/HR/ManpowerFileWindow.cpp b/jrj/project/business/HR/ManpowerFileWindow.cpp
index 2075a76..df48086 100644
--- a/jrj/project/business/HR/ManpowerFileWindow.cpp
+++ b/jrj/project/business/HR/ManpowerFileWindow.cpp
@@ -1,23 +1,31 @@
-use "xcontrol.vframe.vbusiness.vd"
-use "xbase.vframe.vbusiness.vd"
-use "xcontrol.vframe.vbusiness.vd"
-use "xbase.vframe.vbusiness.vd"
-use "vbind.vbind.wface.vd"
-use "publiccode.vutil.vbusiness.vd"
-use "multi.vbind.vbind.wface.vd"
+#include <wobject/xstring.hpp>
+#include <xcontrol/xtreeview.hpp>
+#include <xcontrol/xdwgrid.hpp>
+#include <xcontrol/xcell.hpp>
 
-unit trade
-[
-	class ViewManpowerFileWiondow : public xframe
+
+#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
+#include "viewobject/view.base.hpp"
+
+using xml = KXMLDOMDocument;
+	class __declspec(dllexport) ViewManpowerFileWiondow : public xframe
 	{
+	public:
 		//xdwgrid	dw_list;//新建列表时使用
 		xdwtable dw_base;//新增弹窗时使用
-		string mfid;
+		xstring mfid;
 		xnode	m_agentNode;	//Agent Condition
-
+	public:
+		ViewManpowerFileWiondow(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
+	public:
+		static ViewManpowerFileWiondow* CreateInstance(void* implPtr, void* hWnd)
+		{
+			ViewManpowerFileWiondow* pWin = new ViewManpowerFileWiondow(implPtr, (HWND)hWnd);
+			return pWin;
+		}
 		/*int SetAgent()
 		{
-			string xfNodeAgentArea  = "agentarea";
+			xstring xfNodeAgentArea  = L"agentarea";
 			xnode anode = GetAgentNode(xfNodeAgentArea);
 			if(m_agentNode)
 			{
@@ -26,10 +34,10 @@
 			else
 			{
 				msxml::IXMLDOMElement xframeElement =  GetElement();
-				msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]/*");
+				msxml::IXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/"+xfNodeAgentArea+L"[1]/*");
 				if(agent)
 				{
-					string s = agent.xml;
+					xstring s = agent.xml;
 					m_agentNode =  SetAgentNodeContent (anode,s);
 				}
 			}
@@ -37,7 +45,7 @@
 		}*/
 
 		//焦点激活处理函数
-		int OnSetFocus(ref TEvent evt, int param)
+		int OnSetFocus(TEvent* evt, LPARAM p)
 		{
 			//重置工具条
 			SetAgent();
@@ -48,77 +56,77 @@
 		int OnSave()
 		{
 			xml x = new xml;
-			x.setNativePointer(xml::CreateInstance());
+			
 			dw_base.AcceptText();
-			dw_base.DwUpdateAllTo(x.GetXmlDoc());
-			xaserverarg arg = new xaserverarg;
+			dw_base.DwUpdateAllTo(x);
+			xaserverarg arg;
 			arg.setNativePointer(xaserverarg::CreateInstance());
-			arg.AddArg("content", x.GetXml());
-			//trace(x.GetXml());
-			if (url::get("/sale/data/ManpowerFile/update", arg.GetString(), x) != 1)
+			arg.AddArg(L"content", x.xml());
+			//trace(x.xml());
+			if (xurl::get(L"/sale/data/ManpowerFile/update", arg.GetString(), x) != 1)
 			{
-				string error = x.GetXmlDoc().text;
-				alert("err:" + error);
+				xstring error = x.text();
+				alert(L"err:" + error);
 				return 1;
 			}
-			//trace("返回值="+x.GetXml());
-			string str = x.GetXmlDoc().documentElement.getAttribute("text");
-			if (str == "true")
+			//trace(L"返回值=L"+x.xml());
+			xstring str = x.documentElement().getAttribute(L"text");
+			if (str == L"true")
 			{
 				dw_base.ResetUpdateStatus();
 				CloseWindow();
-				alert("保存成功!");
+				alert(L"保存成功!");
 			}
 			else
 			{
-				alert("保存失败!");
+				alert(L"保存失败!");
 			}
 			return 1;
 		}
 
 		//命令发布函数
-		int OnCmdDispatch(string comdid)
+		int OnCmdDispatch(xstring comdid)
 		{
-			if (comdid == "xmClose") {//关闭窗口
+			if (comdid == L"xmClose") {//关闭窗口
 				CloseWindow();
 				return 1;
 			}
-			else if (comdid == "xmSave") {//保存窗口
+			else if (comdid == L"xmSave") {//保存窗口
 				return OnSave();
 			}
 			return 0;
 		}
 
 		//命令处理事件
-		int OnXCommand(ref TXCommandEvent evt, int param)
+		int OnXCommand(TEvent* evt, LPARAM p)
 		{
-			return OnCmdDispatch(evt.pStrID);
+			return OnCmdDispatch(evt->xcommand.pStrID);
 		}
 
 		int OnAttachEvent()
 		{
 			//绑定工具条点击事件
-			AttachEvent("WM_XCOMMAND", OnXCommand);
+			AttachEvent(L"WM_XCOMMAND", (FEvent)&ViewManpowerFileWiondow::OnXCommand);
 			//获取焦点事件,用于重置工具条
-			AttachEvent("WM_SETFOCUS", OnSetFocus);
-			AttachEvent("dw_base", "DWV_ITEMCHANGING", OnItemChanging);
+			AttachEvent(L"WM_SETFOCUS", (FEvent)&ViewManpowerFileWiondow::OnSetFocus);
+			AttachEvent(L"dw_base", L"DWV_ITEMCHANGING", (FEvent)&ViewManpowerFileWiondow::OnItemChanging);
 		}
 
-		int OnItemChanging(ref TNotifyEvent evt, int p)
+		int OnItemChanging(TEvent* evt, LPARAM p)
 		{
-			ref DWNMHDR  hdr = trust(evt.pnmh as ref DWNMHDR);
-			string colname = hdr.colname;
-			string value = hdr.data;
+			DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
+			xstring colname = hdr.colname;
+			xstring value = hdr.data;
 			int row = hdr.row;
 
-			if (value == "") return 1;
-			string cellType = dw_base.GetColumnProp(colname, "celltype");
+			if (value == L"") return 1;
+			xstring cellType = dw_base.GetColumnProp(colname, L"celltype");
 			//alert(cellType);
-			if (cellType == "xs:decimal" || cellType == "xs:integer")
+			if (cellType == L"xs:decimal" || cellType == L"xs:integer")
 			{
 				if (value.isNumber() == false)
 				{
-					alert(value + "不是数字!");
+					alert(value + L"不是数字!");
 					hdr.idFrom = -1;
 					return 1;
 				}
@@ -128,18 +136,18 @@
 		int  OnRetrieve()
 		{
 			xml x = new xml;
-			x.setNativePointer(xml::CreateInstance());
-			xaserverarg arg = new xaserverarg;
-			arg.setNativePointer(arg.CreateInstance());
-			arg.AddArg("mfid", mfid);
-			if (getUrl("/sale/data/ManpowerFile/getsingle", arg.GetString(), x) != 1)
+			
+			xaserverarg arg;
+			
+			arg.AddArg(L"mfid", mfid);
+			if (getUrl(L"/sale/data/ManpowerFile/getsingle", arg.GetString(), x) != 1)
 			{
-				trace("错误信息=" + x.GetXmlDoc().text);
+				trace(L"错误信息=L" + xstring(x.text()));
 				return -1;
 			}
 			else
 			{
-				//trace("返回信息="+x.GetXml());
+				//trace(L"返回信息=L"+x.xml());
 				dw_base.Retrieve(x);
 				dw_base.Redraw();
 			}
@@ -148,12 +156,12 @@
 
 		int onload()
 		{
-			dw_base = GetControl("dw_base");
-			dw_base.openUrl("/sale/view/ManpowerFile/template/win");
-			mfid = "";
-			if (GetParam())
-				mfid = GetParam();
-			if (mfid != "")
+			dw_base = GetControl(L"dw_base");
+			dw_base.openUrl(L"/sale/view/ManpowerFile/template/win");
+			mfid = L"";
+			if (GetWinParam())
+				mfid = GetParamString();
+			if (mfid != L"")
 			{
 				OnRetrieve();
 			}
@@ -174,5 +182,4 @@
 
 			return 1;
 		}
-	};
-]
\ No newline at end of file
+	};
\ No newline at end of file
diff --git a/jrj/project/business/SO/Product.Select.SO.cpp b/jrj/project/business/SO/Product.Select.SO.cpp
index 90126fe..be4bddb 100644
--- a/jrj/project/business/SO/Product.Select.SO.cpp
+++ b/jrj/project/business/SO/Product.Select.SO.cpp
@@ -1043,7 +1043,8 @@
 
 				if (selectname != name)
 				{
-					KXMLDOMElement e1 = cast(tv_folder.GetItemData(hItem) as KXMLDOMElement);
+					
+					KXMLDOMElement& e1 = *(KXMLDOMElement*)tv_folder.GetItemData(hItem);
 					xstring str = e1.getAttribute(L"no");
 					if (str.find(L"Customer1:") == 0 || str.find(L"Customer:") == 0 || str.find(L"SO:") == 0 || str.find(L"Quote:") == 0)
 					{
@@ -1298,7 +1299,7 @@
 			xbind bindcart = new xbind;
 			bindcart.bindEx(dwc_list, g_xdoc_shoppingcart, L"");
 
-			dw_list.SetDataObject(ProductLibraryView::GetMaintListForm3(L"").GetXmlDoc());
+			dw_list.SetDataObject(ProductLibraryView::GetMaintListForm3(L"").xml());
 			dw_list = GetControl(L"dw_list");
 			dw_list.SetReadOnly(true);
 
diff --git a/jrj/project/business/SO/delivery.base.maint.so.cpp b/jrj/project/business/SO/delivery.base.maint.so.cpp
index b674738..2295659 100644
--- a/jrj/project/business/SO/delivery.base.maint.so.cpp
+++ b/jrj/project/business/SO/delivery.base.maint.so.cpp
@@ -184,7 +184,7 @@
 			dw_cell.setNativePointer(dw_1.QueryItem(L"ixcell"));
 			OnAttachEvent();
 
-			if (GetParam())OnInit();
+			if (GetWinParam())OnInit();
 
 			return 1;
 		}
diff --git a/jrj/project/business/SO/maint.Document.SO3.v3.cpp b/jrj/project/business/SO/maint.Document.SO3.v3.cpp
index 843f83b..e35dd11 100644
--- a/jrj/project/business/SO/maint.Document.SO3.v3.cpp
+++ b/jrj/project/business/SO/maint.Document.SO3.v3.cpp
@@ -122,7 +122,7 @@
 			xstring name = d.mid(d.find(L"|##@@|",0)+6, d.length());
 			*/
 		
-			xaserver::__CreateDirectory(L"C:/Temp");
+			xaserver::CreateDirectory(L"C:/Temp");
 			if (arg)
 			{
 				if (arg.GetArgString(L"process") == L"data")
@@ -241,7 +241,7 @@
 
 			xstring name = ele.getAttribute(L"caption");
 			
-			xaserver::__CreateDirectory(L"C:/Temp");
+			xaserver::CreateDirectory(L"C:/Temp");
 			xstring str = file.left(2);
 			xstring ext = L"";
 			if (name.find(L".") >= 0) ext = name.mid(name.find(L"."), name.length());
diff --git a/jrj/project/business/SO/paymentterm.base.maint.so.cpp b/jrj/project/business/SO/paymentterm.base.maint.so.cpp
index 523590b..fd4f361 100644
--- a/jrj/project/business/SO/paymentterm.base.maint.so.cpp
+++ b/jrj/project/business/SO/paymentterm.base.maint.so.cpp
@@ -399,7 +399,7 @@
 
 			OnAttachEvent();
 
-			if (GetParam())OnInit();
+			if (GetWinParam())OnInit();
 
 			return 1;
 		}
diff --git a/jrj/project/business/quote.enquiry.cpp b/jrj/project/business/quote.enquiry.cpp
index ed954ef..0a22ed5 100644
--- a/jrj/project/business/quote.enquiry.cpp
+++ b/jrj/project/business/quote.enquiry.cpp
@@ -12,7 +12,7 @@
 #include "viewobject/view.base.hpp"
 #include "viewobject/quote.view.hpp"
 
-using xml = KXMLDOMDocument;
+using xml = KXMLDOMDocument;xxxx
 class __declspec(dllexport) QuoteFileView : public xframe
 {
 

--
Gitblit v1.9.3