From bbe8987042e7216227bc9fe87e0ac60abaebdbf3 Mon Sep 17 00:00:00 2001
From: xj qian <qianxj15@sina.com>
Date: 星期四, 18 七月 2024 15:58:10 +0800
Subject: [PATCH] Merge branch 'master' of http://116.62.18.175:6699/r/mis-prj

---
 jrj/project/business/Quote/TONewSelectDlg.cpp           |   17 
 jrj/project/business/Quote/QuoteFilePurch.cpp           |  128 ++-
 jrj/project/business/Quote/trade.document.selectdlg.cpp |  194 ++--
 jrj/project/business/Quote/QuoteFilePurched.cpp         |  126 +-
 jrj/ext-jrj/ext-jrj.vcxproj.filters                     |    3 
 jrj/project/business/Quote/TOSelectDlg.cpp              |  203 +++--
 jrj/project/business/Quote/xmQuoteBillList.cpp          |  146 ++-
 jrj/project/business/Quote/QuoteSupplierItem.cpp        |  134 ++-
 jrj/project/business/Quote/XmShare.Quote.v3.cpp         |  123 +-
 jrj/project/business/Quote/CustomerItemNoList.cpp       |  116 +-
 jrj/ext-jrj/ext-jrj.vcxproj                             |   15 
 jrj/project/business/Quote/Product.Select.cpp           |  815 +++++++++++-----------
 jrj/project/business/Quote/trade.document.saveas.cpp    |  102 +-
 13 files changed, 1,137 insertions(+), 985 deletions(-)

diff --git a/jrj/ext-jrj/ext-jrj.vcxproj b/jrj/ext-jrj/ext-jrj.vcxproj
index 8bf5fe7..2f6246c 100644
--- a/jrj/ext-jrj/ext-jrj.vcxproj
+++ b/jrj/ext-jrj/ext-jrj.vcxproj
@@ -742,22 +742,19 @@
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
     </ClCompile>
     <ClCompile Include="..\project\business\Quote\CustomerItemNoList.cpp">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
     </ClCompile>
     <ClCompile Include="..\project\business\Quote\Product.Select.cpp">
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
     </ClCompile>
     <ClCompile Include="..\project\business\Quote\QuoteFilePurch.cpp">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
     </ClCompile>
     <ClCompile Include="..\project\business\Quote\QuoteFilePurched.cpp">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
     </ClCompile>
     <ClCompile Include="..\project\business\Quote\QuoteSupplierItem.cpp">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-    </ClCompile>
-    <ClCompile Include="..\project\business\Quote\TONewSelectDlg.cpp">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
     </ClCompile>
     <ClCompile Include="..\project\business\Quote\TOSelectDlg.cpp">
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
@@ -769,10 +766,10 @@
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
     </ClCompile>
     <ClCompile Include="..\project\business\Quote\xmQuoteBillList.cpp">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
     </ClCompile>
     <ClCompile Include="..\project\business\Quote\XmShare.Quote.v3.cpp">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
     </ClCompile>
     <ClCompile Include="..\project\business\SO3.list.cpp" />
     <ClCompile Include="..\project\business\SO3.maint.cpp">
diff --git a/jrj/ext-jrj/ext-jrj.vcxproj.filters b/jrj/ext-jrj/ext-jrj.vcxproj.filters
index c489fc7..3e0d53c 100644
--- a/jrj/ext-jrj/ext-jrj.vcxproj.filters
+++ b/jrj/ext-jrj/ext-jrj.vcxproj.filters
@@ -1118,9 +1118,6 @@
     <ClCompile Include="..\project\business\Quote\TOSelectDlg.cpp">
       <Filter>project\business\Quote</Filter>
     </ClCompile>
-    <ClCompile Include="..\project\business\Quote\TONewSelectDlg.cpp">
-      <Filter>project\business\Quote</Filter>
-    </ClCompile>
     <ClCompile Include="..\project\business\Quote\QuoteSupplierItem.cpp">
       <Filter>project\business\Quote</Filter>
     </ClCompile>
diff --git a/jrj/project/business/Quote/CustomerItemNoList.cpp b/jrj/project/business/Quote/CustomerItemNoList.cpp
index e13ca20..09d33cb 100644
--- a/jrj/project/business/Quote/CustomerItemNoList.cpp
+++ b/jrj/project/business/Quote/CustomerItemNoList.cpp
@@ -1,43 +1,58 @@
-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 <wobject/xdouble.hpp>
+#include <xcontrol/xlayersheet.hpp>
+#include <xcontrol/xdatetimepick.hpp>
 
-unit trade 
-[
-	class CustomerItemNoList :  public xframe
+
+#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
+#include "viewobject/view.base.hpp"
+
+using xml = KXMLDOMDocument;
+
+	class __declspec(dllexport)  CustomerItemNoList :  public xframe
 	{
+	public:
 		xdwgrid	dw_list;
 
 		xnode	m_agentNode;	//Agent Condition
 		int hObject = 0;
 	
-		string GoodsNo;
+		xstring GoodsNo;
 		
-	
+	public:
+		CustomerItemNoList(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
+	public:
+		static CustomerItemNoList* CreateInstance(void* implPtr, void* hWnd)
+		{
+			CustomerItemNoList* pWin = new CustomerItemNoList(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 OnRowChanged(ref TNotifyEvent evt,int p)
+		int OnRowChanged(TEvent* evt, int p)
 		{
-			ref DWNMHDR  hdr = trust(evt.pnmh as ref DWNMHDR);
+			DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
 			int row = hdr.row;
 			SetAgent();
 			return 1;
@@ -45,7 +60,7 @@
 
 
 		//焦点激活处理函数
-		int OnSetFocus(ref TEvent evt,int param)
+		int OnSetFocus(TEvent* evt, LPARAM param)
 		{
 			//重置工具条
 			SetAgent();
@@ -56,21 +71,21 @@
 		
 			
 		//命令发布函数
-		int OnCmdDispatch(string comdid)
+		int OnCmdDispatch(xstring comdid)
 		{
-			if(comdid=="xmImport")
+			if(comdid==L"xmImport")
 			{
 				
 				Doubleclick();
 				return 1;
 			}
-			if(comdid=="xmClose")
+			if(comdid==L"xmClose")
 			{
 				
 				CloseWindow();
 				return 1;
 			}
-			if(comdid=="xmSearch")
+			if(comdid==L"xmSearch")
 			{
 				
 				OnRetrieve(GoodsNo);
@@ -81,53 +96,54 @@
 		
 		int Doubleclick()
 		{
-			xaserverarg arg = GetParam();
-			arg.AddArg("items","");
-			string str = "";
+			xaserverarg arg = GetArg();
+			arg.AddArg(L"items",L"");
+			xstring str = L"";
 			int row =  dw_list.GetNextSelectRow(1);
 			while(row > 0 && row <= dw_list.GetRowCount())
 			{
-				msxml::IXMLDOMElement ele = dw_list.GetRowElement(row);
+				KXMLDOMElement ele = dw_list.GetRowElement(row);
 			
-				str += ele.xml;
+				str += ele.xml();
 				row =  dw_list.GetNextSelectRow(row + 1);
 			}
-			if(str != "")
-				arg.AddArg("items","<data>"+str+"</data>");
+			if(str != L"")
+				arg.AddArg(L"items",L"<data>"+str+L"</data>");
 			trace(str);
-			arg.AddArg("action","ok");
+			arg.AddArg(L"action",L"ok");
 			CloseWindow();
 			return 1;
 		}
 		
 		//命令处理事件
-		int OnXCommand(ref TXCommandEvent evt,int param)
+		int OnXCommand(TEvent* evt, LPARAM param)
 		{
-			return OnCmdDispatch(evt.pStrID);
+			return OnCmdDispatch(evt->xcommand.pStrID);
 		}
 			
 		int OnAttachEvent()
 		{
 			//绑定工具条点击事件
-			AttachEvent("WM_XCOMMAND",OnXCommand);
+			AttachEvent(L"WM_XCOMMAND", (FEvent)&CustomerItemNoList::OnXCommand);
 			//获取焦点事件,用于重置工具条
-			AttachEvent("WM_SETFOCUS",OnSetFocus);
-			AttachEvent("dw_list","DWV_DOUBLECLICKED",Doubleclick);
+			AttachEvent(L"WM_SETFOCUS", (FEvent)&CustomerItemNoList::OnSetFocus);
+			AttachEvent(L"dw_list",L"DWV_DOUBLECLICKED", (FEvent)&CustomerItemNoList::Doubleclick);
+			return 1;
 			
 		}
 		
 		
-		int  OnRetrieve(string GoodsNo)
+		int  OnRetrieve(xstring GoodsNo)
 		{
-			xml x = new xml;
-			x.setNativePointer(xml::CreateInstance());
-			xaserverarg arg = new xaserverarg;
-			arg.setNativePointer(arg.CreateInstance());
-			arg.AddArg("GoodsNo",GoodsNo);
+			xml x ;
 			
-			if (getUrl("/sale/data/ProductLibrary3/GetCustomerItemNoList",arg.GetString(),x)!=1)
+			xaserverarg arg ;
+			
+			arg.AddArg(L"GoodsNo",GoodsNo);
+			
+			if (getUrl(L"/sale/data/ProductLibrary3/GetCustomerItemNoList",arg.GetString(),x)!=1)
 			{
-				trace(x.GetXmlDoc().text);
+				trace(x.text());
 				return -1;
 			}else	
 			{
@@ -141,15 +157,16 @@
 			
 		int onload()
 		{
-			dw_list = GetControl("dw_list");
-			dw_list.openUrl("/sale/view/Quote3/template/Quote/CustomerItemNoList");
+			SetArg();
+			dw_list = GetControl(L"dw_list");
+			dw_list.openUrl(L"/sale/view/Quote3/template/Quote/CustomerItemNoList");
 		
 			
-			if(GetParam())
+			if(GetWinParam())
 			{
-				xaserverarg arg = GetParam();
-				GoodsNo=arg.GetArgString("GoodsNo");
-				OnRetrieve(arg.GetArgString("GoodsNo"));
+				xaserverarg arg = GetArg();
+				GoodsNo=arg.GetArgString(L"GoodsNo");
+				OnRetrieve(arg.GetArgString(L"GoodsNo"));
 			}
 			OnRetrieve(GoodsNo);
 			OnAttachEvent();	
@@ -162,5 +179,4 @@
 			
 			return 1;
 		}		
-	};
-]
\ No newline at end of file
+	};
\ No newline at end of file
diff --git a/jrj/project/business/Quote/Product.Select.cpp b/jrj/project/business/Quote/Product.Select.cpp
index 23e6501..3f91041 100644
--- a/jrj/project/business/Quote/Product.Select.cpp
+++ b/jrj/project/business/Quote/Product.Select.cpp
@@ -1,17 +1,29 @@
-use "xcontrol.vframe.vbusiness.vd"
-use "xbase.vframe.vbusiness.vd"
-use "multi.vbind.vbind.wface.vd"
-use "productlibrary.vd"
-use "shoppingcart.vd"
+#include <wobject/xstring.hpp>
+#include <xcontrol/xtreeview.hpp>
+#include <xcontrol/xdwgrid.hpp>
+#include <wobject/xdouble.hpp>
+#include <xcontrol/xlayersheet.hpp>
+#include <xcontrol/xdatetimepick.hpp>
 
-unit trade 
-[
-	class ProductSelectWin :  public xwin
+
+#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
+#include "viewobject/view.base.hpp"
+
+using xml = KXMLDOMDocument;
+class __declspec(dllexport)  ProductSelectWin :  public xwin
 	{
+	public:
 		int hObject = 0;
-		string CustomerID;
-		string m_customer;
-	
+		xstring CustomerID;
+		xstring m_customer;
+	public:
+		ProductSelectWin(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {}
+	public:
+		static ProductSelectWin* CreateInstance(void* implPtr, void* hWnd)
+		{
+			ProductSelectWin* pWin = new ProductSelectWin(implPtr, (HWND)hWnd);
+			return pWin;
+		}
 		//产品库产品列表
 		xdwgrid	dw_list;
 		//购物车产品列表
@@ -26,24 +38,24 @@
 
 		xnode	m_agentNode;	//Agent Condition
 		xtreeview tv_folder;	
-		string 	agentFor;
+		xstring 	agentFor;
 	
-		string	impStr;
+		xstring	impStr;
 	
 		int FillGoodsCarList()
 		{
-			xcombobox xc = GetControl("frame:cbx_goodscar");
+			xcombobox xc = GetControl(L"frame:cbx_goodscar");
 			if(!xc) return 0;
 			xml  x = ShoppingCartView::GetRoleList(CustomerID);	
 			if(!x) return 0;
-			xc.SetText("==选择购物车==");
+			xc.SetText(L"==选择购物车==L");
 				
-			msxml::IXMLDOMNodeList nlist = x.GetXmlDoc().SelectNodes("//item"); 
-			int len = nlist.length;
+			KXMLDOMNodeList nlist = x.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");
+				KXMLDOMElement e = nlist.item(i);
+				xstring name = e.getAttribute(L"name");
 				xcombobox::AddItem(xc.GetId(),name);				
 			}
 			return 1;
@@ -51,106 +63,106 @@
 
 		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 param)
 		{
 			//重置工具条
 			SetAgent();
 			return 1;
 		}
 
-		msxml::IXMLDOMElement OnGetCarListRowElement(int row=0)
+		KXMLDOMElement OnGetCarListRowElement(int row=0)
 		{
 			if(row < 1) row = dwc_list.GetRow();
 			if(row < 1 || row > dwc_list.GetRowCount()) return 0;
-			msxml::IXMLDOMElement e = g_xdoc_shoppingcart.getRowElement("data/Item", row);
+			KXMLDOMElement e = g_xdoc_shoppingcart.getRowElement(L"data/Item", row);
 			return e;
 		}	
 	
-		int OnShowImage(string skuid)
+		int OnShowImage(xstring skuid)
 		{
-			imageview im = GetControl("im1");
+			imageview im = GetControl(L"im1");
 			//im.RemoveImage();
 			im.ResetEx();
 			
 			xml xp=new xml;
-			xp.setNativePointer(xml::CreateInstance());
-			xaserverarg arg_pic=new xaserverarg;
+			
+			xaserverarg arg_pic;
 			arg_pic.setNativePointer(arg_pic.CreateInstance());	
-			arg_pic.AddArg("SKUID",skuid);
-			if(url::get("/sale/data/ProductLibrary3/pref/picture/imagelistSKU",arg_pic.GetString(),xp)!=1)
+			arg_pic.AddArg(L"SKUID",skuid);
+			if(xurl::get(L"/sale/data/ProductLibrary3/pref/picture/imagelistSKU",arg_pic.GetString(),xp)!=1)
 			{
-				trace("xxx",xp.GetXml());
+				trace(L"xxx",xp.xml());
 			}else
 			{
-				//imageElement = xp.GetXmlDoc().documentElement;
-				msxml::IXMLDOMNodeList  nlistp=  xp.GetXmlDoc().selectNodes("ImageList/image");
-				int lenp = nlistp.length;
+				//imageElement = xp.documentElement();
+				KXMLDOMNodeList  nlistp=  xp.selectNodes(L"ImageList/image");
+				int lenp = nlistp.length();
 				for(int ip=0;ip<lenp;ip++)
 				{
-					msxml::IXMLDOMElement xitem = nlistp.item(ip);
-					string picname = xitem.selectSingleNode("PicPath").text; 
-					string goodno = xitem.selectSingleNode("GoodsNo").text; 	
-					if(picname == "/business/products/Thumbs//")
-						picname = "/business/products/Thumbs/00/00000000-0000-0000-0000-000000000000.jpg";
-					im.AddImages(picname, "");
+					KXMLDOMElement xitem = nlistp.item(ip);
+					xstring picname = xitem.selectSingleNode(L"PicPath").text(); 
+					xstring goodno = xitem.selectSingleNode(L"GoodsNo").text(); 	
+					if(picname == L"/business/products/Thumbs//")
+						picname = L"/business/products/Thumbs/00/00000000-0000-0000-0000-000000000000.jpg";
+					im.AddImages(picname, L"");
 				}
 				im.Redraw();
-				//win32::SendMessage(im.GetId(),0x000f,0,1);
-				//win32::InvalidateRect(im.GetId(),cast(0 as ref xrect),true);
+				//SendMessage(im.GetId(),0x000f,0,1);
+				//InvalidateRect(im.GetId(),cast(0 as ref xrect),true);
 			}
 			return 1;
 		}
 					
-		int OnShowImage(string skuid, string customerItemNo)
+		int OnShowImage(xstring skuid, xstring customerItemNo)
 		{
-			imageview im = GetControl("im1");
+			imageview im = GetControl(L"im1");
 			//im.RemoveImage();
 			im.ResetEx();
 			
 			xml xp=new xml;
-			xp.setNativePointer(xml::CreateInstance());
-			xaserverarg arg_pic=new xaserverarg;
-			arg_pic.setNativePointer(arg_pic.CreateInstance());	
-			arg_pic.AddArg("SKUID",skuid);
-			arg_pic.AddArg("CustomerID",m_customer);
-			arg_pic.AddArg("CustomerItemNo",customerItemNo);
 			
-			if(url::get("/sale/data/ProductLibrary3/pref/picture/customer/imagelistSKU",arg_pic.GetString(),xp)!=1)
+			xaserverarg arg_pic;
+			arg_pic.setNativePointer(arg_pic.CreateInstance());	
+			arg_pic.AddArg(L"SKUID",skuid);
+			arg_pic.AddArg(L"CustomerID",m_customer);
+			arg_pic.AddArg(L"CustomerItemNo",customerItemNo);
+			
+			if(xurl::get(L"/sale/data/ProductLibrary3/pref/picture/customer/imagelistSKU",arg_pic.GetString(),xp)!=1)
 			{
-				trace("error:" + xp.GetXml());
+				trace(L"error:" + xp.xml());
 			}else
 			{
-				//imageElement = xp.GetXmlDoc().documentElement;
-				msxml::IXMLDOMNodeList  nlistp=  xp.GetXmlDoc().selectNodes("ImageList/image");
-				int lenp = nlistp.length;
+				//imageElement = xp.documentElement();
+				KXMLDOMNodeList  nlistp=  xp.selectNodes(L"ImageList/image");
+				int lenp = nlistp.length();
 				for(int ip=0;ip<lenp;ip++)
 				{
-					msxml::IXMLDOMElement xitem = nlistp.item(ip);
-					string picname = xitem.selectSingleNode("PicPath").text; 
-					string goodno = xitem.selectSingleNode("GoodsNo").text; 	
-					if(picname == "/business/products/Thumbs//")
-						picname = "/business/products/Thumbs/00/00000000-0000-0000-0000-000000000000.jpg";
-					im.AddImages(picname, "");
+					KXMLDOMElement xitem = nlistp.item(ip);
+					xstring picname = xitem.selectSingleNode(L"PicPath").text(); 
+					xstring goodno = xitem.selectSingleNode(L"GoodsNo").text(); 	
+					if(picname == L"/business/products/Thumbs//")
+						picname = L"/business/products/Thumbs/00/00000000-0000-0000-0000-000000000000.jpg";
+					im.AddImages(picname, L"");
 				}
 				im.Redraw();
 			}
@@ -161,27 +173,27 @@
 		{
 			int hItem = tv_folder.GetSelectedItem();
 			int hTopItem = LookupTopFolder(hItem);
-			string name = tv_folder.GetItemLabel(hTopItem);
+			xstring name = tv_folder.GetItemLabel(hTopItem);
 
-			msxml::IXMLDOMElement e= tv_folder.GetItemData(hItem);
-			string guid =  e.getAttribute("guid");
-			if(guid=="") return 1;
-			xaserverarg arg = new xaserverarg;
-			arg.setNativePointer(arg.CreateInstance());
-			arg.AddArg("guid", e.getAttribute("guid"));
-			if(name=="个人产品")
-				arg.AddArg("FolderID", e.getAttribute("guid"));
+			KXMLDOMElement e= tv_folder.GetItemData(hItem);
+			xstring guid =  e.getAttribute(L"guid");
+			if(guid==L"") return 1;
+			xaserverarg arg ;
+			
+			arg.AddArg(L"guid", e.getAttribute(L"guid"));
+			if(name==L"个人产品")
+				arg.AddArg(L"FolderID", e.getAttribute(L"guid"));
 			else
-				arg.AddArg("CategoryID", e.getAttribute("guid"));
-			string No = e.getAttribute("CategoryNo");
-			if(No=="") No = e.getAttribute("no");
-			string Name = e.getAttribute("CName");
-			if(Name=="") Name = e.getAttribute("cname");
-			arg.AddArg("No",No);
-			arg.AddArg("CName",Name);
+				arg.AddArg(L"CategoryID", e.getAttribute(L"guid"));
+			xstring No = e.getAttribute(L"CategoryNo");
+			if(No==L"") No = e.getAttribute(L"no");
+			xstring Name = e.getAttribute(L"CName");
+			if(Name==L"") Name = e.getAttribute(L"cname");
+			arg.AddArg(L"No",No);
+			arg.AddArg(L"CName",Name);
 			int p = arg;
-			OpenWindow("dev:xpage[Quick.Input.NewProduct.vx]",p);
-			//if(arg.GetArgString("data.modify")=="1")RetrieveData();
+			OpenWindow(L"dev:xpage[Quick.Input.NewProduct.vx]",p);
+			//if(arg.GetArgString(L"data.modify")==L"1")RetrieveData();
 			return 1;
 		}
 			
@@ -190,12 +202,12 @@
 			ref DWNMHDR  hdr = trust(evt.pnmh as ref DWNMHDR);
 			int row = hdr.row;
 				
-			htmlctrl xs = GetControl("html_detail");
-			string html = makeHtml(row);
+			htmlctrl xs = GetControl(L"html_detail");
+			xstring html = makeHtml(row);
 			xs.SetContent(html);
 			xs.Redraw();
 			
-			string id = g_xdoc_product.getData(0,"data/Item",row,"@guid");
+			xstring id = g_xdoc_product.getData(0,L"data/Item",row,L"@guid");
 			OnShowImage(id);
 					
 			return 1;
@@ -206,14 +218,14 @@
 			ref DWNMHDR  hdr = trust(evt.pnmh as ref DWNMHDR);
 			int row = hdr.row;
 				
-			htmlctrl xs = GetControl("html_detail");
-			string html = makeGoodscarHtml(row);
+			htmlctrl xs = GetControl(L"html_detail");
+			xstring html = makeGoodscarHtml(row);
 			xs.SetContent(html);
 			xs.Redraw();
 			if(m_customer)
 			{
-				string id = g_xdoc_shoppingcart.getData(0,"data/Item",row,"SKUID");
-				string customerItemNo = g_xdoc_shoppingcart.getData(0,"data/Item",row,"CustomerItemNo");
+				xstring id = g_xdoc_shoppingcart.getData(0,L"data/Item",row,L"SKUID");
+				xstring customerItemNo = g_xdoc_shoppingcart.getData(0,L"data/Item",row,L"CustomerItemNo");
 				OnShowImage(id,customerItemNo);
 			}
 				
@@ -225,8 +237,8 @@
 			int IDOK = 1;
 			int MB_OKCANCEL  = 1;
 			int MB_ICONQUESTION  = 32;
-			if(win32::MessageBox(GetHWND(),"确认删除指定的项,删除后将不能恢复?","提示",MB_OKCANCEL|MB_ICONQUESTION)!=IDOK) return 1;
-			string id = g_xdoc_product.getData(0,"data/Item",row,"@guid");
+			if(MessageBox(GetHWND(),L"确认删除指定的项,删除后将不能恢复?",L"提示",MB_OKCANCEL|MB_ICONQUESTION)!=IDOK) return 1;
+			xstring id = g_xdoc_product.getData(0,L"data/Item",row,L"@guid");
 		
 			if(ProductLibraryView::DeleteItem(id)==1)	dw_list.DeleteRow(0);	
 			return 1;
@@ -240,256 +252,256 @@
 		
 		int OnCkbCLick(ref TEvent evt,int p)
 		{	
-			xcheckbox cbx_1 = GetControl("frame:cbx1");			
+			xcheckbox cbx_1 = GetControl(L"frame:cbx1");			
 			int state=cbx_1.GetCheck(cbx_1.GetId());	
 			return SetSelectState(dw_list,state);
 		}
 			
 		int OnCkbCLick2(ref TEvent evt,int p)
 		{	
-			xcheckbox cbx_2 = GetControl("frame:cbx2");			
+			xcheckbox cbx_2 = GetControl(L"frame:cbx2");			
 			int state=cbx_2.GetCheck(cbx_2.GetId());		
 			return SetSelectState(dwc_list,state);
 		}	
 			
-		xml  GetGoodsPropList(string guid)
+		xml  GetGoodsPropList(xstring guid)
 		{
 			xml x=new xml;
-			x.setNativePointer(xml::CreateInstance());
-			xaserverarg arg = new xaserverarg;
-			arg.setNativePointer(arg.CreateInstance());
-			arg.AddArg("guid", guid);	
-			if(url::get("/sale/data/SO/goods/goodsprop/list", arg.GetString(),x)!=1)
+			
+			xaserverarg arg ;
+			
+			arg.AddArg(L"guid", guid);	
+			if(xurl::get(L"/sale/data/SO/goods/goodsprop/list", arg.GetString(),x)!=1)
 			{
-				string error = x.GetXmlDoc().text;
+				xstring error = x.text();
 				alert(error);
 			}
 			return x;
 		}
 		
 					
-		xml  GetGoodsPropListEx(string guid)
+		xml  GetGoodsPropListEx(xstring guid)
 		{
 			xml x=new xml;
-			x.setNativePointer(xml::CreateInstance());
-			string fields="<data>";
+			
+			xstring fields=L"<data>";
 			
 			/*
-			fields +="<field name='HighestPrice' label='最高价'/>";
-			fields +="<field name='LowestPrice' label='最低价'/>";
+			fields +=L"<field name='HighestPrice' label='最高价'/>";
+			fields +=L"<field name='LowestPrice' label='最低价'/>";
 			
-			fields +="<field name='BulkPrice' label='散货价'/>";
-			fields +="<field name='CardPrice' label='纸卡价'/>";
-			fields +="<field name='BuyPrice' label='采购价'/>";
-			fields +="<field name='SupplierID' label='货源'/>";
+			fields +=L"<field name='BulkPrice' label='散货价'/>";
+			fields +=L"<field name='CardPrice' label='纸卡价'/>";
+			fields +=L"<field name='BuyPrice' label='采购价'/>";
+			fields +=L"<field name='SupplierID' label='货源'/>";
 			*/
 			
-			fields +="<field name='Packing' label='包装方式'/>";
-			fields +="<field name='PackingRate' label='每箱数量'/>";
-			fields +="<field name='VolumeDesc' label='包装尺码'/>";
-			fields +="<field name='GWPerPkg' label='毛重'/>";
-			fields +="<field name='NWPerPkg' label='净重'/>";
-			//fields +="<field name='DeveloperID' label='开发人员'/>";
-			fields +="<field name='AttributeValue_1' label='产品属性'/>";
-			//fields +="<field name='Remark' label='备注'/>";
+			fields +=L"<field name='Packing' label='包装方式'/>";
+			fields +=L"<field name='PackingRate' label='每箱数量'/>";
+			fields +=L"<field name='VolumeDesc' label='包装尺码'/>";
+			fields +=L"<field name='GWPerPkg' label='毛重'/>";
+			fields +=L"<field name='NWPerPkg' label='净重'/>";
+			//fields +=L"<field name='DeveloperID' label='开发人员'/>";
+			fields +=L"<field name='AttributeValue_1' label='产品属性'/>";
+			//fields +=L"<field name='Remark' label='备注'/>";
 			
-			fields += "</data>";
-			x.LoadXml(fields);
+			fields += L"</data>";
+			x.loadXML(fields);
 			
 			return x;
 		}
 			
-		string makeHtml(int row)
+		xstring makeHtml(int row)
 		{
-			string id = g_xdoc_product.getData(0,"data/Item",row,"@guid");
+			xstring id = g_xdoc_product.getData(0,L"data/Item",row,L"@guid");
 			xml x = GetGoodsPropList(id);
 			xml x1 = GetGoodsPropListEx(id);
 			
-			string html="<html><style> .text{ font-weight:400} .label { font-weight:400;}</style><body style='margin:2;background-color1:#ccdccc none #f0f0f0 none'>";
-			html += "<div ><span style='font-weight:700;width:50;font-size:10pt'  >编号:</span><span  style='width:90;font-size:10pt'>" + dw_list.GetItemString(row,"No")+
-						"</span> <span style='font-weight:700;width:50;font-size:10pt' >类项:</span><span  style='width:90;font-size:10pt'>" + dw_list.GetItemString(row,"RefNo")+
+			xstring html=L"<html><style> .text(){ font-weight:400} .label { font-weight:400;}</style><body style='margin:2;background-color1:#ccdccc none #f0f0f0 none'>";
+			html += L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >编号:</span><span  style='width:90;font-size:10pt'>" + dw_list.GetItemString(row,L"No")+
+						"</span> <span style='font-weight:700;width:50;font-size:10pt' >类项:</span><span  style='width:90;font-size:10pt'>" + dw_list.GetItemString(row,L"RefNo")+
 						"</span></div>";
-			html +=  "<div ><span style='font-weight:700;width:50;font-size:10pt'  >货号:</span><span  style='width:90;font-size:10pt'>" + dw_list.GetItemString(row,"GoodsNo")+
+			html +=  L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >货号:</span><span  style='width:90;font-size:10pt'>" + dw_list.GetItemString(row,L"GoodsNo")+
 						"</span></div>" ;
-			html +=  "<div ><span style='font-weight:700;width:50;font-size:10pt'  >品名:</span><span  style='width:90;font-size:10pt'>" + dw_list.GetItemString(row,"CName")+
+			html +=  L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >品名:</span><span  style='width:90;font-size:10pt'>" + dw_list.GetItemString(row,L"CName")+
 						"</span></div>" ;
-			if(dw_list.GetItemString(row,"CSpec")!="")
-				html +=  "<div ><span style='font-weight:700;width:50;font-size:10pt'  >规格:</span><span  style='width:90;font-size:10pt'>" + dw_list.GetItemString(row,"CSpec")+
+			if(dw_list.GetItemString(row,L"CSpec")!=L"")
+				html +=  L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >规格:</span><span  style='width:90;font-size:10pt'>" + dw_list.GetItemString(row,L"CSpec")+
 							"</span></div>" ;
 			
-			msxml::IXMLDOMNodeList fieldsEx = x1.GetXmlDoc().selectNodes("data/field");
-			string ls_detail="";
-			string ls_item ="";
-			string name;
-			string label;
-			int len = fieldsEx.length;
+			KXMLDOMNodeList fieldsEx = x1.selectNodes(L"data/field");
+			xstring ls_detail=L"";
+			xstring ls_item =L"";
+			xstring name;
+			xstring label;
+			int len = fieldsEx.length();
 			int i= 0;
 			
 			for(i=0;i<len; true)
 			{
 				int cnt  = 0;
-				ls_item = "";
+				ls_item = L"";
 				while(cnt < 2)
 				{
-					name = fieldsEx.item(i).selectSingleNode("@name").text;
-					label  = fieldsEx.item(i).selectSingleNode("@label").text;
-					ls_item += "<td>" + label + "</td>" + "<td style='text-align:center'>" + g_xdoc_product.getData(0,"data/Item",row,name) + "</td>" ;
+					name = fieldsEx.item(i).selectSingleNode(L"@name").text();
+					label  = fieldsEx.item(i).selectSingleNode(L"@label").text();
+					ls_item += L"<td>" + label + L"</td>" + L"<td style='text-align:center'>" + g_xdoc_product.getData(0,L"data/Item",row,name) + L"</td>" ;
 					cnt++;
 					i++;
 					if(i ==len)break;
 				}
-				ls_detail += "<tr>" + ls_item + "</tr>";
+				ls_detail += L"<tr>" + ls_item + L"</tr>";
 			}
-			html +=  "<div style='margin-left:8px;margin-right:16px;'>" +
-						+"<table><colgroup span='1' width='70'/><colgroup span='1' width='120'/><colgroup span='1' width='70'/><colgroup span='1' width='120'/>" 
+			html +=  L"<div style='margin-left:8px;margin-right:16px;'>" +
+						+L"<table><colgroup span='1' width='70'/><colgroup span='1' width='120'/><colgroup span='1' width='70'/><colgroup span='1' width='120'/>" 
 						+ ls_detail
-						+"</table>"
-						+"</div>" ;
+						+L"</table>"
+						+L"</div>" ;
 						
-			string ls_star="";
-			msxml::IXMLDOMNodeList fields  = x.GetXmlDoc().selectNodes("data/field");
-			len = fields.length;
+			xstring ls_star=L"";
+			KXMLDOMNodeList fields  = x.selectNodes(L"data/field");
+			len = fields.length();
 			
-			ls_detail = "";
+			ls_detail = L"";
 			if(len > 0) 
-				html +=  "<div ><span style='font-weight:700;width:50;font-size:10pt'  >技术要求:</span></div>" ;
+				html +=  L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >技术要求:</span></div>" ;
 			for(i=0;i<len; true)
 			{
-				ls_item="";
+				ls_item=L"";
 				
 				int count = 0;
 				while(count < 2)
 				{
-					name = fields.item(i).selectSingleNode("@name").text;
-					label  = fields.item(i).selectSingleNode("@label").text;
+					name = fields.item(i).selectSingleNode(L"@name").text();
+					label  = fields.item(i).selectSingleNode(L"@label").text();
 				
-					if(name=="QualityTerm" || name=="PackTerm" || label=="质量" || label=="包装质量" || label=="技术要求")
+					if(name==L"QualityTerm" || name==L"PackTerm" || label==L"质量" || label==L"包装质量" || label==L"技术要求")
 					{
 						i++;
 						if(i >= len)count = 2;
 						continue;
 					}
-					else if(g_xdoc_product.getData(0,"data/Item",row,name)=="")
+					else if(g_xdoc_product.getData(0,L"data/Item",row,name)==L"")
 					{
-						msxml::IXMLDOMNodeList options = fields.item(i).selectNodes("item");
-						int tlen = options.length;
-						string terms = "" ;
+						KXMLDOMNodeList options = fields.item(i).selectNodes(L"item");
+						int tlen = options.length();
+						xstring terms = L"" ;
 						for(int k=0; k<tlen; k++)
 						{
-							if(options.item(k).text)
+							if(options.item(k).text())
 							{
-								if(k>0) terms += ", ";
-								terms += "[" + options.item(k).text +"]";
+								if(k>0) terms += L", L";
+								terms += L"[" + options.item(k).text() +L"]";
 							}
 						}
-						ls_star += "<div ><span style='font-weight:700;width:50;font-size:10pt'  >" + label +"*:</span><span  style='width:90;font-size:10pt'>" + terms + "</span></div>" ;
+						ls_star += L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >" + label +L"*:</span><span  style='width:90;font-size:10pt'>" + terms + L"</span></div>" ;
 					}else
 					{
-						ls_item = "<td>" + label + "</td>" + "<td>" + g_xdoc_product.getData(0,"data/Item",row,name) + "</td>" ;
+						ls_item = L"<td>" + label + L"</td>" + L"<td>" + g_xdoc_product.getData(0,L"data/Item",row,name) + L"</td>" ;
 						count++;
 					}
 					i++;
 					if(i >= len)count = 2;
 				}
-				ls_item = "<tr>" + ls_item + "</tr>";
+				ls_item = L"<tr>" + ls_item + L"</tr>";
 				ls_detail += ls_item;
 			}
 			
-			html +=  "<div style='margin-left:8px;margin-right:16px;'>" +
-						+"<table><colgroup span='1' width='70'/><colgroup span='1' width='120'/><colgroup span='1' width='70'/><colgroup span='1' width='120'/>" 
+			html +=  L"<div style='margin-left:8px;margin-right:16px;'>" +
+						+L"<table><colgroup span='1' width='70'/><colgroup span='1' width='120'/><colgroup span='1' width='70'/><colgroup span='1' width='120'/>" 
 						+ ls_detail
-						+"</table>"
-						+"</div>" ;
-			if(dw_list.GetItemString(row,"QualityTerm")!="")
+						+L"</table>"
+						+L"</div>" ;
+			if(dw_list.GetItemString(row,L"QualityTerm")!=L"")
 			{
-				html +=  "<div style='height:12px'/>";
-				html +=  "<div ><span style='font-weight:700;width:50;font-size:10pt'  >质量:</span></div>" ;
-				html +=  "<div ><span style='margin-left:8px;margin-right:16px;font-weight:400;font-size:10pt'  >" + dw_list.GetItemString(row,"QualityTerm") +  "</span></div>" ;
+				html +=  L"<div style='height:12px'/>";
+				html +=  L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >质量:</span></div>" ;
+				html +=  L"<div ><span style='margin-left:8px;margin-right:16px;font-weight:400;font-size:10pt'  >" + dw_list.GetItemString(row,L"QualityTerm") +  L"</span></div>" ;
 			}
 			
-			if(dw_list.GetItemString(row,"PackTerm")!="")
+			if(dw_list.GetItemString(row,L"PackTerm")!=L"")
 			{
-				html +=  "<div style='height:12px'/>";
-				html +=  "<div ><span style='font-weight:700;width:50;font-size:10pt'  >包装质量:</span></div>" ;
-				html +=  "<div ><span style='margin-left:8px;margin-right:16px;font-weight:400;font-size:10pt' >" + dw_list.GetItemString(row,"PackTerm") +  "</span></div>" ;
+				html +=  L"<div style='height:12px'/>";
+				html +=  L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >包装质量:</span></div>" ;
+				html +=  L"<div ><span style='margin-left:8px;margin-right:16px;font-weight:400;font-size:10pt' >" + dw_list.GetItemString(row,L"PackTerm") +  L"</span></div>" ;
 			}
 			
-			if(g_xdoc_product.getData(0,"data/Item",row,"Remark") != "" && id == "23A8BBA2-DEF1-4C00-978E-646151A6082E")
+			if(g_xdoc_product.getData(0,L"data/Item",row,L"Remark") != L"" && id == L"23A8BBA2-DEF1-4C00-978E-646151A6082E")
 			{
-				html +=  "<div ><span style='font-weight:700;width:50;font-size:10pt'  >备注:</span></div>" ;
-				html +=  "<div ><span style='margin-left:8px;margin-right:16px;font-weight:400;font-size:10pt' >" + g_xdoc_product.getData(0,"data/Item",row,"Remark") +  "</span></div>" ;
+				html +=  L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >备注:</span></div>" ;
+				html +=  L"<div ><span style='margin-left:8px;margin-right:16px;font-weight:400;font-size:10pt' >" + g_xdoc_product.getData(0,L"data/Item",row,L"Remark") +  L"</span></div>" ;
 			}
 
-			html +=  "<div style='height:24px'/>";
+			html +=  L"<div style='height:24px'/>";
 			
 			//星标项
 			html += ls_star;
 
 			//显示图片			
-			/*string picname = "1FA9E331-F95C-4E51-B80C-73FB9B911D8D.jpg";//dw_list.GetItemString(row,"ImgName"); //ItemID+".jpg";
-			string str = picname.mid(0,2);
+			/*xstring picname = L"1FA9E331-F95C-4E51-B80C-73FB9B911D8D.jpg";//dw_list.GetItemString(row,L"ImgName"); //ItemID+L".jpg";
+			xstring str = picname.mid(0,2);
 			str = str.upper();
-			string serversrc ="http://192.168.7.241:1001/business/products/chanpin/"+str+"/"+picname;
-			html +=  "<div ><span style='font-weight:700;width:50;font-size:10pt'  >图片:</span>";
-			html +=  "<control visible='layer' controlclass='ximage'  data='' src='"+ serversrc +"'/></div>";
+			xstring serversrc =L"http://192.168.7.241:1001/business/products/chanpin/"+str+L"/"+picname;
+			html +=  L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >图片:</span>";
+			html +=  L"<control visible='layer' controlclass='ximage'  data='' src='"+ serversrc +L"'/></div>";
 			*/
-			html += "</body></html>";
+			html += L"</body></html>";
 			return html;
 		}
 		
-		string makeGoodscarHtml(int row)
+		xstring makeGoodscarHtml(int row)
 		{
-			string No = dwc_list.GetItemString(row,"RefNo");//获取属性值id					
+			xstring No = dwc_list.GetItemString(row,L"RefNo");//获取属性值id					
 			xml x = GetGoodsPropList(No);
 			
-			string html="<html><style> .text{ font-weight:400} .label { font-weight:400;}</style><body style='margin:2;background-color1:#ccdccc none #f0f0f0 none'>";
-			html += "<div ><span style='font-weight:700;width:50;font-size:10pt'  >编号:</span><span  style='width:90;font-size:10pt'>" + dwc_list.GetItemString(row,"No")+
+			xstring html=L"<html><style> .text(){ font-weight:400} .label { font-weight:400;}</style><body style='margin:2;background-color1:#ccdccc none #f0f0f0 none'>";
+			html += L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >编号:</span><span  style='width:90;font-size:10pt'>" + dwc_list.GetItemString(row,L"No")+
 						"</span></div>";
-			html +=  "<div ><span style='font-weight:700;width:50;font-size:10pt'  >品名:</span><span  style='width:90;font-size:10pt'>" + dwc_list.GetItemString(row,"CName")+
+			html +=  L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >品名:</span><span  style='width:90;font-size:10pt'>" + dwc_list.GetItemString(row,L"CName")+
 						"</span></div>" ;
-			html +=  "<div ><span style='font-weight:700;width:50;font-size:10pt'  >规格:</span><span  style='width:90;font-size:10pt'>" + dwc_list.GetItemString(row,"CSpec")+
+			html +=  L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >规格:</span><span  style='width:90;font-size:10pt'>" + dwc_list.GetItemString(row,L"CSpec")+
 						"</span></div>" ;
 			
-			msxml::IXMLDOMNodeList fields = x.GetXmlDoc().selectNodes("data/field");
-			int len = fields.length;
-			html += "<table>" +
+			KXMLDOMNodeList fields = x.selectNodes(L"data/field");
+			int len = fields.length();
+			html += L"<table>" +
 				"<colgroup span='1' width='80'/>" +
 				"<colgroup span='1' width='120'/>" +
 				"<colgroup span='1' width='420'/>" ;
-			html += "<tr>" ;
-			html += "<td style='text-align:center'>编号</td><td style='text-align:center'>项目</td><td style='text-align:center'>内容</td>" ;
-			html +="</tr>";
+			html += L"<tr>" ;
+			html += L"<td style='text-align:center'>编号</td><td style='text-align:center'>项目</td><td style='text-align:center'>内容</td>" ;
+			html +=L"</tr>";
 			for(int i=0;i<len; i++)
 			{
-				string name = fields.item(i).selectSingleNode("@name").text;
-				string label  = fields.item(i).selectSingleNode("@label").text;
-				html += "<tr>" ;
+				xstring name = fields.item(i).selectSingleNode(L"@name").text();
+				xstring label  = fields.item(i).selectSingleNode(L"@label").text();
+				html += L"<tr>" ;
 				if(i==0)
-					html += "<td rowspan='" + len.toString() + "'>" + No + "</td><td >"+ label +  "</td><td >"+"</td>" ;
+					html += L"<td rowspan='" + len.toString() + L"'>" + No + L"</td><td >"+ label +  L"</td><td >"+L"</td>" ;
 				else
-					html += "<td >"+ label +  "</td><td >"+ g_xdoc_shoppingcart.getData(0,"data/Item",row,name)+"</td>" ;
-				html +="</tr>";
+					html += L"<td >"+ label +  L"</td><td >"+ g_xdoc_shoppingcart.getData(0,L"data/Item",row,name)+L"</td>" ;
+				html +=L"</tr>";
 			}
 			
-			html += "<tr>" ;
-			html += "<td rowspan='3'>" + g_xdoc_shoppingcart.getData(0,"data/Item",row,"PackCode") + "</td><td >包装方式</td><td >"+
-				 g_xdoc_shoppingcart.getData(0,"data/Item",row,"CPack") + "</td>" ;
-			html +="</tr>";
-			html += "<tr height='48'>" ;
-			html += "<td >包装要求</td><td >"+ g_xdoc_shoppingcart.getData(0,"data/Item",row,"PackQualityTerm")+"</td>" ;
-			html +="</tr>";
-			html += "<tr>" ;
-			html += "<td >侧唛</td><td ></td>" ;
-			html +="</tr>";
+			html += L"<tr>" ;
+			html += L"<td rowspan='3'>" + g_xdoc_shoppingcart.getData(0,L"data/Item",row,L"PackCode") + L"</td><td >包装方式</td><td >"+
+				 g_xdoc_shoppingcart.getData(0,L"data/Item",row,L"CPack") + L"</td>" ;
+			html +=L"</tr>";
+			html += L"<tr height='48'>" ;
+			html += L"<td >包装要求</td><td >"+ g_xdoc_shoppingcart.getData(0,L"data/Item",row,L"PackQualityTerm")+L"</td>" ;
+			html +=L"</tr>";
+			html += L"<tr>" ;
+			html += L"<td >侧唛</td><td ></td>" ;
+			html +=L"</tr>";
 	
-			html += "<tr height='72'>" ;
-			html += "<td>" + g_xdoc_shoppingcart.getData(0,"data/Item",row,"QualityCode") + "</td><td >质量要求</td><td >"+
-				 g_xdoc_shoppingcart.getData(0,"data/Item",row,"QualityTerm") + "</td>" ;
-			html +="</tr>";
+			html += L"<tr height='72'>" ;
+			html += L"<td>" + g_xdoc_shoppingcart.getData(0,L"data/Item",row,L"QualityCode") + L"</td><td >质量要求</td><td >"+
+				 g_xdoc_shoppingcart.getData(0,L"data/Item",row,L"QualityTerm") + L"</td>" ;
+			html +=L"</tr>";
 
-			html +="</table>";
+			html +=L"</table>";
 
-			html += "</body></html>";
+			html += L"</body></html>";
 			return html;
 		}		
 
@@ -498,11 +510,11 @@
 			if(!hObject ) return 1;
 			
 			int rw = 0;
-			string ls_nos = "ImportXml:";
+			xstring ls_nos = L"ImportXml:";
 			
-			if (impStr=="")
+			if (impStr==L"")
 			{
-				alert("请选择商品!");
+				alert(L"请选择商品!");
 				return 1;
 			}
 			ls_nos += impStr;
@@ -511,10 +523,10 @@
 			dwc_list.Redraw();
 			dw_list.SelectRow(0,false);
 			dw_list.Redraw();
-			impStr ="";
+			impStr =L"";
 			//alert(ls_nos);
-			win32::SendMessage(hObject,0x401,ls_nos,0);
-			alert("转入完成");
+			SendMessage(hObject,0x401,ls_nos,0);
+			alert(L"转入完成");
 				
 			return 1;
 		}
@@ -526,26 +538,26 @@
 		}
 					
 		//命令发布函数
-		int OnCmdDispatch(string comdid)
+		int OnCmdDispatch(xstring comdid)
 		{
 			int hCursor;
-			string name="";
-			if(comdid=="xmClose")
+			xstring name=L"";
+			if(comdid==L"xmClose")
 			{
 				CloseWindow();
 				return 1;
 			}
-			else if(comdid=="xmImport")
+			else if(comdid==L"xmImport")
 			{
 				OnImport();
 				return 1;
 			}
-			else if(comdid=="xmAdd")
+			else if(comdid==L"xmAdd")
 			{
 				ItemAdd();
 				return 1;
 			}
-			else if(comdid=="xmSearch")
+			else if(comdid==L"xmSearch")
 			{
 				OnSearch();
 				return 1;
@@ -554,9 +566,9 @@
 		}
 		
 		//命令处理事件
-		int OnXCommand(ref TXCommandEvent evt,int param)
+		int OnXCommand(TEvent* evt, LPARAM param)
 		{
-			return OnCmdDispatch(evt.pStrID);
+			return OnCmdDispatch(evt->xcommand.pStrID);
 		}
 				
 		//查找当前树项的顶级目录
@@ -568,19 +580,19 @@
 		}
 		
 		//插入产品类项的子项
-		int MakeGoodsFolderItem(int hItem, string sno)
+		int MakeGoodsFolderItem(int hItem, xstring sno)
 		{
 			xml x = ProductLibraryView::GetTreeChildItems3(sno);
 			if(!x) return 0;
 			
-			msxml::IXMLDOMNodeList nlist = x.GetXmlDoc().SelectNodes("//Item"); 
-			int len = nlist.length;
+			KXMLDOMNodeList nlist = x.selectNodes(L"//Item"); 
+			int len = nlist.length();
 			for (int i = 0; i < len; i++)
 			{	
-				msxml::IXMLDOMElement e = nlist.item(i);
-				string name = e.getAttribute("CName");
-				string no = e.getAttribute("CategoryNo");
-				string label = no.trim() + " " + name;
+				KXMLDOMElement e = nlist.item(i);
+				xstring name = e.getAttribute(L"CName");
+				xstring no = e.getAttribute(L"CategoryNo");
+				xstring label = no.trim() + L" " + name;
 
 				int h= tv_folder.InsertChildItem(hItem,label, trust(e as int),15);				
 				tv_folder.SetItemChild(h,1);
@@ -589,40 +601,40 @@
 		}	
 
 		//插入新产品目录子项
-		int MakeUserGoodsFolderItem(int hItem, string sno)
+		int MakeUserGoodsFolderItem(int hItem, xstring sno)
 		{
 			xml x = ProductLibraryView::GetTreeUserChildItems3(sno);
 			if(!x) return 0;
 			
-			msxml::IXMLDOMNodeList nlist = x.GetXmlDoc().SelectNodes("//Item"); 
-			int len = nlist.length;
+			KXMLDOMNodeList nlist = x.selectNodes(L"//Item"); 
+			int len = nlist.length();
 			for (int i = 0; i < len; i++)
 			{	
-				msxml::IXMLDOMElement e = nlist.item(i);
-				string name = e.getAttribute("CName");
-				string no = e.getAttribute("CategoryNo");
-				string label = no.trim() + " " + name;
+				KXMLDOMElement e = nlist.item(i);
+				xstring name = e.getAttribute(L"CName");
+				xstring no = e.getAttribute(L"CategoryNo");
+				xstring label = no.trim() + L" " + name;
 
 				int h= tv_folder.InsertChildItem(hItem,label, trust(e as int),15);				
-				string child = e.getAttribute("Childs");
-				if(child=="")
+				xstring child = e.getAttribute(L"Childs");
+				if(child==L"")
 					tv_folder.SetItemChild(h,1);
-				else if(child !="0")
+				else if(child !=L"0")
 					tv_folder.SetItemChild(h,1);
 			}
 			return 1;				
 		}	
 				
 		//插入购物车项
-		int ExpandCatChildFolder(int hItem, msxml::IXMLDOMElement ele ,int image)
+		int ExpandCatChildFolder(int 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");
+				KXMLDOMElement e = nlist.item(i);
+				xstring name = e.getAttribute(L"name");
 				int h = tv_folder.InsertChildItem(hItem,name, trust(e as int),image);
 				ExpandCatChildFolder(h,e,35);
 			}
@@ -630,16 +642,16 @@
 		}
 		int MakeGoodCarFolderItem(int hItem)
 		{
-			//trace("\r\nCustomerID:"+CustomerID);
+			//trace(L"\r\nCustomerID:"+CustomerID);
 			xml x = ShoppingCartView::GetRoleList(CustomerID);
-			//if(x) alert(x.GetXml());
+			//if(x) alert(x.xml());
 			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");
+				KXMLDOMElement e = nlist.item(i);
+				xstring name = e.getAttribute(L"name");
 				int h = tv_folder.InsertChildItem(hItem,name, trust(e as int),35);
 				ExpandCatChildFolder(h,e,35);
 			}
@@ -652,42 +664,42 @@
 			ref NMTREEVIEW nmtv = evt.pnmh;
 			int hItem = nmtv.itemNew.hItem;
 			int hTopItem = LookupTopFolder(hItem);
-			string name = tv_folder.GetItemLabel(hTopItem);	
+			xstring name = tv_folder.GetItemLabel(hTopItem);	
 			int child = tv_folder.GetChildItem(hItem);
-			string no ="";
-			msxml::IXMLDOMElement e;
-			if(name == "公司库" && !child )
+			xstring no =L"";
+			KXMLDOMElement e;
+			if(name == L"公司库" && !child )
 			{	
-				no ="";
+				no =L"";
 				if(hTopItem != hItem)
 				{
 					e= tv_folder.GetItemData(hItem);
-					no = e.getAttribute("categoryid");
+					no = e.getAttribute(L"categoryid");
 				}else
 				{
 					e= tv_folder.GetItemData(hItem);
-					no = e.getAttribute("categoryid");
+					no = e.getAttribute(L"categoryid");
 				}
 				MakeGoodsFolderItem(hItem, no);					
 			}
-			else if(name == "个人库" && !child )
+			else if(name == L"个人库" && !child )
 			{	
-				no ="";
+				no =L"";
 				if(hTopItem != hItem)
 				{
 					e= tv_folder.GetItemData(hItem);
-					no = e.getAttribute("categoryid");
+					no = e.getAttribute(L"categoryid");
 					MakeUserGoodsFolderItem(hItem, no);					
 				}
 			}
-			else if(name == "购物车" && !child )
+			else if(name == L"购物车" && !child )
 			{	
 				if(hItem==hTopItem)MakeGoodCarFolderItem(hItem);					
 			}
 			return 1;
 		}
 		
-		int ResetAgent(string agentAsk)
+		int ResetAgent(xstring agentAsk)
 		{
 			if(agentFor != agentAsk)
 			{
@@ -702,87 +714,87 @@
 		{
 			while(true)
 			{
-				msxml::IXMLDOMElement e1 = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
-				string str = e1.getAttribute("no");
-				if(str.find("Customer:")>=0) return hItem;
+				KXMLDOMElement e1 = cast(tv_folder.GetItemData(hItem) as KXMLDOMElement);
+				xstring str = e1.getAttribute(L"no");
+				if(str.find(L"Customer:")>=0) return hItem;
 				hItem = tv_folder.GetParentItem(hItem);
 				if(hItem==0) break;
 			}
 			return 0;
 		}
 		
-		string LookupCustomer(int hItem)
+		xstring LookupCustomer(int hItem)
 		{
 			hItem = LookupCustomerFolder(hItem);
 			if(hItem==0) return "";
-			msxml::IXMLDOMElement e1 = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
-			string str = e1.getAttribute("no");
-			return str.mid("Customer:".length(),9999);
+			KXMLDOMElement e1 = cast(tv_folder.GetItemData(hItem) as KXMLDOMElement);
+			xstring str = e1.getAttribute(L"no");
+			return str.mid(L"Customer:".length()(),9999);
 		}
 	
 		int RetrieveItem(int hItem)
 		{
 			int hTopItem = LookupTopFolder(hItem);
-			string name = tv_folder.GetItemLabel(hTopItem);
-			string selectname = tv_folder.GetItemLabel(hItem);
-			imageview im = GetControl("im1");
-			m_customer = "";
-			xcontrol query = GetControl("sl_search");
-			string queryString = query.GetText();
+			xstring name = tv_folder.GetItemLabel(hTopItem);
+			xstring selectname = tv_folder.GetItemLabel(hItem);
+			imageview im = GetControl(L"im1");
+			m_customer = L"";
+			xcontrol query = GetControl(L"sl_search");
+			xstring queryString = query.GetText();
 			
-			if(name == "购物车")
+			if(name == L"购物车")
 			{
-				if(agentFor !="goodscar")SwitchLayer("goodscarsheet","sheetframe");
-				ResetAgent("goodscar");
+				if(agentFor !=L"goodscar")SwitchLayer(L"goodscarsheet",L"sheetframe");
+				ResetAgent(L"goodscar");
 				if(selectname !=name)
 				{
-					msxml::IXMLDOMElement e1 = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
-					string str = e1.getAttribute("no");
+					KXMLDOMElement e1 = cast(tv_folder.GetItemData(hItem) as KXMLDOMElement);
+					xstring str = e1.getAttribute(L"no");
 					
-					trace("\r\n-------"+str+"--------"+queryString);
+					trace(L"\r\n-------"+str+L"--------"+queryString);
 				
-					if(str=="Supplier") 
+					if(str==L"Supplier") 
 					{
 						return 1;
 					}
 					//alert(str);
-					if(str.find("Customer:")==0 || str.find("SO:")==0 || str.find("Purcherex:")==0|| str.find("Purcher:")==0 || str.find("Supplier:")==0|| str.find("Enquiry:")==0)
+					if(str.find(L"Customer:")==0 || str.find(L"SO:")==0 || str.find(L"Purcherex:")==0|| str.find(L"Purcher:")==0 || str.find(L"Supplier:")==0|| str.find(L"Enquiry:")==0)
 					{
 						m_customer = LookupCustomer(hItem);
-						if(str.find("Customer:")==0)
+						if(str.find(L"Customer:")==0)
 						{
-							dwc_list.openUrl("/sale/view/ProductLibrary/template/cart/goodscustomerlist"); 
+							dwc_list.openUrl(L"/sale/view/ProductLibrary/template/cart/goodscustomerlist"); 
 						}
 						else
 						{
-							dwc_list.openUrl("/sale/view/ProductLibrary/template/cart/goodssolist");
+							dwc_list.openUrl(L"/sale/view/ProductLibrary/template/cart/goodssolist");
 						}
 						dwc_list.Reset();
 						dwc_list.SetReadOnly(true);
-						dwc_list.SetColumnState("CurrencyCode",false);
+						dwc_list.SetColumnState(L"CurrencyCode",false);
 						//alert(str);
-						if(queryString=="")
+						if(queryString==L"")
 							g_xdoc_shoppingcart.Retrieve(ShoppingCartView::GetGoodsList(str));
 						else
 							g_xdoc_shoppingcart.Retrieve(ShoppingCartView::GetGoodsList(str,queryString));
 					}
-					else if(e1.getAttribute("categoryid") !="")
+					else if(e1.getAttribute(L"categoryid") !=L"")
 					{
-						string categoryid = e1.getAttribute("categoryid");
-						dwc_list.SetDataObject(ProductLibraryView::GetMaintListForm3(categoryid).GetXmlDoc());
+						xstring categoryid = e1.getAttribute(L"categoryid");
+						dwc_list.SetDataObject(ProductLibraryView::GetMaintListForm3(categoryid));
 						dwc_list.SetReadOnly(true);
 						dwc_list.Reset();
-						if(queryString=="")
+						if(queryString==L"")
 							g_xdoc_shoppingcart.Retrieve(ProductLibraryView::GetMaintList3(categoryid ));
 						else
-							g_xdoc_shoppingcart.Retrieve(ProductLibraryView::GetMaintList3(categoryid, queryString,""));
+							g_xdoc_shoppingcart.Retrieve(ProductLibraryView::GetMaintList3(categoryid, queryString,L""));
 					}
 					else
 					{
-						dwc_list.openUrl("/sale/view/ProductLibrary/template/cart/goodslist"); 
+						dwc_list.openUrl(L"/sale/view/ProductLibrary/template/cart/goodslist"); 
 						dwc_list.SetReadOnly(true);
 						dwc_list.Reset();
-						if(queryString=="")
+						if(queryString==L"")
 							g_xdoc_shoppingcart.Retrieve(ShoppingCartView::GetGoodsList(selectname));
 						else
 							g_xdoc_shoppingcart.Retrieve(ShoppingCartView::GetGoodsList(selectname,queryString));
@@ -792,68 +804,68 @@
 
 					if(dwc_list.GetRowCount() >= 1 )
 					{
-						htmlctrl xs = GetControl("html_detail");
+						htmlctrl xs = GetControl(L"html_detail");
 						xs.SetContent(makeGoodscarHtml(1));
 						
-						if(m_customer !="")
+						if(m_customer !=L"")
 						{
-							string skuid = g_xdoc_shoppingcart.getData(0,"data/Item",1,"SKUID");
-							string customerItemNo = g_xdoc_shoppingcart.getData(0,"data/Item",1,"CustomerItemNo");
+							xstring skuid = g_xdoc_shoppingcart.getData(0,L"data/Item",1,L"SKUID");
+							xstring customerItemNo = g_xdoc_shoppingcart.getData(0,L"data/Item",1,L"CustomerItemNo");
 							OnShowImage(skuid,customerItemNo);
 						}
 					} else {						
 						im.ResetEx();
 						im.Redraw();
 
-						xs = GetControl("html_detail");
-						xs.SetContent("<html><body style='margin:2;background-color:#ccdccc none #f0f0f0 none'/></html>");
+						xs = GetControl(L"html_detail");
+						xs.SetContent(L"<html><body style='margin:2;background-color:#ccdccc none #f0f0f0 none'/></html>");
 					}
 					xs.Redraw();
 				}	
 			}
 			else
 			{
-				if(agentFor !="goodslib")SwitchLayer("goodslibsheet","sheetframe");
-				if(name == "个人库") 
-					ResetAgent("userlib");
+				if(agentFor !=L"goodslib")SwitchLayer(L"goodslibsheet",L"sheetframe");
+				if(name == L"个人库") 
+					ResetAgent(L"userlib");
 				else 
-					ResetAgent("goodslib");
+					ResetAgent(L"goodslib");
 				int hCursor = xutil::SetCursorWait();
 
-				if(name == "个人库" || name=="公司库")
+				if(name == L"个人库" || name==L"公司库")
 				{
-					string no="N000005";
-					if(name=="个人库") no="U000005";
+					xstring no=L"N000005";
+					if(name==L"个人库") no=L"U000005";
 					if(hItem != hTopItem)
 					{
-						msxml::IXMLDOMElement e= tv_folder.GetItemData(hItem);
-						no = e.getAttribute("guid");
+						KXMLDOMElement e= tv_folder.GetItemData(hItem);
+						no = e.getAttribute(L"guid");
 					}
-					dw_list.SetDataObject(ProductLibraryView::GetMaintListForm3(no).GetXmlDoc());
-					dw_list = GetControl("dw_list");
+					dw_list.SetDataObject(ProductLibraryView::GetMaintListForm3(no));
+					dw_list = GetControl(L"dw_list");
 					dw_list.Reset();
 					dw_list.SetReadOnly(true);
 					
 					xml x;
-					if(queryString=="")
+					if(queryString==L"")
 					{
-						if(name == "个人库")
+						if(name == L"个人库")
 							x = ProductLibraryView::GetMaintRoleList3(no);
 						else
 							x = ProductLibraryView::GetMaintList3(no);
 					}
 					else
 					{
-						if(name == "个人库")
+						if(name == L"个人库")
 							x = ProductLibraryView::GetMaintRoleList3(no,queryString);
 						else
 						{
-							if(queryString !="")
+							if(queryString !=L"")
 							{
-								if(no=="N000005")
-									x = ProductLibraryView::GetMaintList3("",queryString,"");
+								if(no==L"N000005")
+									x = ProductLibraryView::GetMaintList3(L"",queryString,L"");
 								else
-									x = ProductLibraryView::GetMaintList3(no,queryString,"");
+									x = ProductLibraryView::GetMaintList3(no,queryString,L"");
 							}else
 								x = ProductLibraryView::GetMaintList3(no);
 						}
@@ -864,23 +876,23 @@
 
 					if(dw_list.GetRowCount() >0)
 					{
-						xs = GetControl("html_detail");
+						xs = GetControl(L"html_detail");
 						xs.SetContent(makeHtml(1));
-						string id = g_xdoc_product.getData(0,"data/Item",1,"@guid");
+						xstring id = g_xdoc_product.getData(0,L"data/Item",1,L"@guid");
 						OnShowImage(id);
 					}else
 					{
 						im.ResetEx();
 						im.Redraw();
 
-						xs = GetControl("html_detail");
-						xs.SetContent("<html><body style='margin:2;background-color:#ccdccc none #f0f0f0 none'/></html>");
+						xs = GetControl(L"html_detail");
+						xs.SetContent(L"<html><body style='margin:2;background-color:#ccdccc none #f0f0f0 none'/></html>");
 					}
 					xs.Redraw();
 					xutil::RestoreCursor(hCursor);
 				}
 			}		
-			impStr = "";
+			impStr = L"";
 		}
 					
 		int OnTreeSelChanged(ref TNotifyEvent evt,int p)
@@ -890,15 +902,15 @@
 			return RetrieveItem(hItem);
 		}	
 
-		int  ExpandChildFolder(int hItem, msxml::IXMLDOMElement pElement)
+		int  ExpandChildFolder(int 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("cname");
-				string sImage = e.getAttribute("image");
+				KXMLDOMElement e = nlist.item(i);
+				xstring name = e.getAttribute(L"cname");
+				xstring sImage = e.getAttribute(L"image");
 				int image = 15;
 				//if(sImage) image = sImage.toInt();
 				int h= tv_folder.InsertChildItem(tv_folder.GetId(),hItem,name, trust(e as int),image);				
@@ -910,8 +922,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");
 			ExpandChildFolder(0,e);
 			return 1;
 		}
@@ -921,22 +933,22 @@
 			ref DWNMHDR hdr = cast(evt.pnmh as ref DWNMHDR);
 			char ch;
 			int row = hdr.row;
-			string col = hdr.colname;
+			xstring col = hdr.colname;
 			
-			string str = "";
-			if(dw_list.GetItemString(row, "SKUNo") !="") 
-				str =dw_list.GetItemString(row, "SKUNo");
+			xstring str = L"";
+			if(dw_list.GetItemString(row, L"SKUNo") !=L"") 
+				str =dw_list.GetItemString(row, L"SKUNo");
 			else
-				str =dw_list.GetItemString(row, "No");
+				str =dw_list.GetItemString(row, L"No");
 			
 			if(dw_list.IsRowSelected(row) & 0xff)
 			{
 				//will unselect
-				impStr = impStr.replace(" "+str,"");
+				impStr = impStr.replace(L" "+str,L"");
 			}else
 			{
 				//will select
-				impStr += " " + str;
+				impStr += L" " + str;
 			}
 			return 1;
 		}
@@ -946,28 +958,28 @@
 			ref DWNMHDR hdr = cast(evt.pnmh as ref DWNMHDR);
 			char ch;
 			int row = hdr.row;
-			string col = hdr.colname;
+			xstring col = hdr.colname;
 			
-			string str = g_xdoc_shoppingcart.getData(0,"data/Item",row,"SOLineID");
-			//string str1 = g_xdoc_shoppingcart.getData(0,"data/Item",row,"EnquiryLineID");
-			string str1 = g_xdoc_shoppingcart.getData(0,"data/Item",row,"EnquiryPriceListID");
-			if(str1 !="")
-				str += "el:" + str1;
-			else if(str != "")
-				str = "sl:"+str;
-			else if(dwc_list.GetItemString(row, "SKUNo") !="") 
-				str =dwc_list.GetItemString(row, "SKUNo");
+			xstring str = g_xdoc_shoppingcart.getData(0,L"data/Item",row,L"SOLineID");
+			//xstring str1 = g_xdoc_shoppingcart.getData(0,L"data/Item",row,L"EnquiryLineID");
+			xstring str1 = g_xdoc_shoppingcart.getData(0,L"data/Item",row,L"EnquiryPriceListID");
+			if(str1 !=L"")
+				str += L"el:" + str1;
+			else if(str != L"")
+				str = L"sl:"+str;
+			else if(dwc_list.GetItemString(row, L"SKUNo") !=L"") 
+				str =dwc_list.GetItemString(row, L"SKUNo");
 			else
-				str =dwc_list.GetItemString(row, "No");
+				str =dwc_list.GetItemString(row, L"No");
 			
 			if(dwc_list.IsRowSelected(row) & 0xff)
 			{
 				//will unselect
-				impStr = impStr.replace(" "+str,"");
+				impStr = impStr.replace(L" "+str,L"");
 			}else
 			{
 				//will select
-				impStr += " " + str;
+				impStr += L" " + str;
 			}
 			return 1;
 		}
@@ -977,26 +989,26 @@
 			int hCursor = xutil::SetCursorWait();
 			ref DWNMHDR hdr = cast(evt.pnmh as ref DWNMHDR);
 			int row = hdr.row;
-			string ls_nos = "ImportXml:";
-			string str = g_xdoc_shoppingcart.getData(0,"data/Item",row,"SOLineID");
-			string str1 = g_xdoc_shoppingcart.getData(0,"data/Item",row,"EnquiryPriceListID");
-			if(str1 !="")
-				str += "el:" + str1;
-			else if(str != "")
-				str = "sl:"+str;
-			else if(dwc_list.GetItemString(row, "SKUNo") !="") 
-				str =dwc_list.GetItemString(row, "SKUNo");
+			xstring ls_nos = L"ImportXml:";
+			xstring str = g_xdoc_shoppingcart.getData(0,L"data/Item",row,L"SOLineID");
+			xstring str1 = g_xdoc_shoppingcart.getData(0,L"data/Item",row,L"EnquiryPriceListID");
+			if(str1 !=L"")
+				str += L"el:" + str1;
+			else if(str != L"")
+				str = L"sl:"+str;
+			else if(dwc_list.GetItemString(row, L"SKUNo") !=L"") 
+				str =dwc_list.GetItemString(row, L"SKUNo");
 			else
-				str =dwc_list.GetItemString(row, "No");
+				str =dwc_list.GetItemString(row, L"No");
 			ls_nos += str;
 			
 			dw_list.SelectRow(0,false);
 			dwc_list.SelectRow(0,false);
 			dw_list.Redraw();
 			dwc_list.Redraw();
-			impStr ="";
+			impStr =L"";
 			
-			win32::SendMessage(hObject,0x401,ls_nos,0);
+			SendMessage(hObject,0x401,ls_nos,0);
 
 			xutil::RestoreCursor(hCursor);
 			CloseWindow();
@@ -1006,66 +1018,67 @@
 		int OnAttachEvent()
 		{
 			//绑定工具条点击事件
-			AttachEvent("WM_XCOMMAND",OnXCommand);
+			AttachEvent(L"WM_XCOMMAND", (FEvent)&ProductSelectWin::OnXCommand);
 			//获取焦点事件,用于重置工具条
-			AttachEvent("WM_SETFOCUS",OnSetFocus);
-			AttachEvent("dw_list","DWV_ROWFOCUSCHANGED",OnRowChanged);
-			AttachEvent("dwc_list","DWV_ROWFOCUSCHANGED",OnGoodsCarRowChanged);			
-			AttachEvent("tv_folder", "TVN_ITEMEXPANDING",OnTreeExpanding);
-			AttachEvent("tv_folder", "TVN_SELCHANGED",OnTreeSelChanged);
+			AttachEvent(L"WM_SETFOCUS", (FEvent)&ProductSelectWin::OnSetFocus);
+			AttachEvent(L"dw_list",L"DWV_ROWFOCUSCHANGED", (FEvent)&ProductSelectWin::OnRowChanged);
+			AttachEvent(L"dwc_list",L"DWV_ROWFOCUSCHANGED", (FEvent)&ProductSelectWin::OnGoodsCarRowChanged);
+			AttachEvent(L"tv_folder", L"TVN_ITEMEXPANDING", (FEvent)&ProductSelectWin::OnTreeExpanding);
+			AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&ProductSelectWin::OnTreeSelChanged);
 			
-			AttachEvent("dwc_list","DWV_DOUBLECLICKED",OnDoubleClicked);
+			AttachEvent(L"dwc_list",L"DWV_DOUBLECLICKED", (FEvent)&ProductSelectWin::OnDoubleClicked);
 			
-			AttachEvent("WM_COMMAND",OnCkbCLick);	//checkbox打钩事件
-			AttachEvent("WM_COMMAND",OnCkbCLick2);	//checkbox打钩事件	
+			AttachEvent(L"WM_COMMAND", (FEvent)&ProductSelectWin::OnCkbCLick);	//checkbox打钩事件
+			AttachEvent(L"WM_COMMAND", (FEvent)&ProductSelectWin::OnCkbCLick2);	//checkbox打钩事件	
 			
-			AttachEvent("dw_list","DWV_CLICKED",OnDwClicked);
-			AttachEvent("dwc_list","DWV_CLICKED",OnDwcClicked);
+			AttachEvent(L"dw_list",L"DWV_CLICKED", (FEvent)&ProductSelectWin::OnDwClicked);
+			AttachEvent(L"dwc_list",L"DWV_CLICKED", (FEvent)&ProductSelectWin::OnDwcClicked);
+			return 1;
 		}
 
 		int onload()
 		{
-			agentFor = "goodslib";
-			impStr = "";
+			agentFor = L"goodslib";
+			impStr = L"";
 					
 			OnAttachEvent();	
 			
-			tv_folder = GetControl("tv_folder");
-			dw_list 	= GetControl("dw_list");
-			dwc_list = GetControl("dwc_list");
+			tv_folder = GetControl(L"tv_folder");
+			dw_list 	= GetControl(L"dw_list");
+			dwc_list = GetControl(L"dwc_list");
 
 			xaserverarg arg = GetParam();
-			CustomerID = "";
-			m_customer ="";
+			CustomerID = L"";
+			m_customer =L"";
 			hObject = 0;
 			if(arg)
 			{
-				hObject = arg.GetArgString("HWND").toInt();
-				CustomerID = arg.GetArgString("CustomerID");
+				hObject = arg.GetArgString(L"HWND").toInt();
+				CustomerID = arg.GetArgString(L"CustomerID");
 			}
 			InitialFolder();
 			
 			g_xdoc_product = new xdataset;
 			g_xdoc_product.Init();
 			xbind bindproduct = new xbind;
-			bindproduct.bindEx(dw_list, g_xdoc_product,"");
+			bindproduct.bindEx(dw_list, g_xdoc_product,L"");
 			
 			g_xdoc_shoppingcart = new xdataset;
 			g_xdoc_shoppingcart.Init();
 
 			xbind bindcart = new xbind;
-			bindcart.bindEx(dwc_list, g_xdoc_shoppingcart,"");
+			bindcart.bindEx(dwc_list, g_xdoc_shoppingcart,L"");
 
-			dw_list.SetDataObject(ProductLibraryView::GetMaintListForm3("").GetXmlDoc());
-			dw_list = GetControl("dw_list");
+			dw_list.SetDataObject(ProductLibraryView::GetMaintListForm3(L""));
+			dw_list = GetControl(L"dw_list");
 			dw_list.SetReadOnly(true);
 					
-			dwc_list.openUrl("/sale/view/ProductLibrary/template/cart/goodslist"); 
+			dwc_list.openUrl(L"/sale/view/ProductLibrary/template/cart/goodslist"); 
 			dwc_list.SetReadOnly(true);
 
 			if(dw_list.GetRowCount())
 			{
-				htmlctrl xs = GetControl("html_detail");
+				htmlctrl xs = GetControl(L"html_detail");
 				xs.SetContent(makeHtml(1));
 			}
 			
diff --git a/jrj/project/business/Quote/QuoteFilePurch.cpp b/jrj/project/business/Quote/QuoteFilePurch.cpp
index 28ef245..595c04f 100644
--- a/jrj/project/business/Quote/QuoteFilePurch.cpp
+++ b/jrj/project/business/Quote/QuoteFilePurch.cpp
@@ -1,36 +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 <wobject/xdouble.hpp>
+#include <xcontrol/xlayersheet.hpp>
+#include <xcontrol/xdatetimepick.hpp>
 
-unit trade 
-[
-	class QuoteFilePurch :  public xframe
+
+#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
+#include "viewobject/view.base.hpp"
+
+using xml = KXMLDOMDocument;
+	class __declspec(dllexport) QuoteFilePurch :  public xframe
 	{
+	public:
 		xdwgrid	dw_list;
 		xnode	m_agentNode;	//Agent Condition
-
+	public:
+		QuoteFilePurch(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
+	public:
+		static QuoteFilePurch* CreateInstance(void* implPtr, void* hWnd)
+		{
+			QuoteFilePurch* pWin = new QuoteFilePurch(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 param)
 		{
 			//重置工具条
 			//SetAgent();
@@ -41,21 +56,21 @@
 		{
 			for(int row=1;row<=dw_list.GetRowCount();row++)
 			{
-				if(dw_list.GetItemString(row,"IsSend")=="1")
+				if(dw_list.GetItemString(row,L"IsSend")==L"1")
 				{
-					if(dw_list.GetItemString(row,"ItemName")=="")
+					if(dw_list.GetItemString(row,L"ItemName")==L"")
 					{
-						alert("第"+row.toString()+"行商品英文名称未输入,补全后再发送给业务员");
+						alert(L"第"+xstring(row)+L"行商品英文名称未输入,补全后再发送给业务员");
 						return 0;
 					}
-					if(dw_list.GetItemString(row,"ItemCName")=="")
+					if(dw_list.GetItemString(row,L"ItemCName")==L"")
 					{
-						alert("第"+row.toString()+"行商品名称未输入,补全后再发送给业务员");
+						alert(L"第"+ xstring(row) +L"行商品名称未输入,补全后再发送给业务员");
 						return 0;
 					}
-					if(dw_list.GetItemString(row,"Package")=="")
+					if(dw_list.GetItemString(row,L"Package")==L"")
 					{
-						alert("第"+row.toString()+"行商品包装未输入,补全后再发送给业务员");
+						alert(L"第"+ xstring(row) +L"行商品包装未输入,补全后再发送给业务员");
 						return 0;
 					}
 				}
@@ -68,14 +83,14 @@
 			dw_list.AcceptText();
 			if(OnValid()==0) return 1;
 					
-			xml x = new xml;
-			x.setNativePointer(xml::CreateInstance());
-			dw_list.DwUpdateAllToEx(x.GetXmlDoc());
-			if(GetParam())
+			xml x ;
+			
+			dw_list.DwUpdateAllToEx(x);
+			if(GetWinParam())
 			{
-				xaserverarg arg = GetParam();
-				arg.AddArg("process","ok");
-				arg.AddArg("value",x.GetXml());
+				xaserverarg arg = GetArg();
+				arg.AddArg(L"process",L"ok");
+				arg.AddArg(L"value",x.xml());
 			}
 			CloseWindow();
 			return 1;
@@ -91,7 +106,7 @@
 		{
 			for(int row = 1; row <= dw_list.GetRowCount(); row++)
 			{
-				dw_list.SetItemString(row,"IsSend","1");
+				dw_list.SetItemString(row,L"IsSend",L"1");
 			}
 			dw_list.Redraw();
 			return 1;
@@ -101,48 +116,49 @@
 		{
 			for(int row = 1; row <= dw_list.GetRowCount(); row++)
 			{
-				dw_list.SetItemString(row,"IsSend","0");
+				dw_list.SetItemString(row,L"IsSend",L"0");
 			}
 			dw_list.Redraw();
 			return 1;
 		}
 		
 		//命令发布函数
-		int OnCmdDispatch(string comdid)
+		int OnCmdDispatch(xstring comdid)
 		{
-			if(comdid=="xmOK") return OnOK();
-			else if(comdid=="xmCancel") return OnCancel();
-			else if(comdid=="xmSelectAll") return SelectAll();
-			else if(comdid=="xmUnSelectAll") return UnSelectAll();
+			if(comdid==L"xmOK") return OnOK();
+			else if(comdid==L"xmCancel") return OnCancel();
+			else if(comdid==L"xmSelectAll") return SelectAll();
+			else if(comdid==L"xmUnSelectAll") return UnSelectAll();
 			
 			return 0;
 		}
 		
 		//命令处理事件
-		int OnXCommand(ref TXCommandEvent evt,int param)
+		int OnXCommand(TEvent* evt, LPARAM param)
 		{
-			return OnCmdDispatch(evt.pStrID);
+			return OnCmdDispatch(evt->xcommand.pStrID);
 		}
-		
+
 		int OnAttachEvent()
 		{
 			//绑定工具条点击事件
-			AttachEvent("WM_XCOMMAND",OnXCommand);
+			AttachEvent(L"WM_XCOMMAND", (FEvent)&QuoteFilePurch::OnXCommand);
 			//获取焦点事件,用于重置工具条
-			AttachEvent("WM_SETFOCUS",OnSetFocus);
+			AttachEvent(L"WM_SETFOCUS", (FEvent)&QuoteFilePurch::OnSetFocus);
+			return 1;
 		}
 		
 		/*
 		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)
+			xml x ;
+			
+			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	
 			{
@@ -155,16 +171,17 @@
 		
 		int onload()
 		{
-			dw_list = GetControl("dw_list");
-			dw_list.openUrl("/sale/view/Quote3/template/Quote/QuoteFileItem");
+			SetArg();
+			dw_list = GetControl(L"dw_list");
+			dw_list.openUrl(L"/sale/view/Quote3/template/Quote/QuoteFileItem");
 		
-			if(GetParam())
+			if(GetWinParam())
 			{
-				xaserverarg arg = GetParam();
-				string val = arg.GetArgString("value");
-				xml x = new xml;
-				x.setNativePointer(xml::CreateInstance());
-				x.LoadXml(val);
+				xaserverarg arg = GetArg();
+				xstring val = arg.GetArgString(L"value");
+				xml x ;
+				
+				x.loadXML(val);
 				dw_list.Retrieve(x);
 			}
 			OnAttachEvent();	
@@ -178,5 +195,4 @@
 			
 			return 1;
 		}		
-	};
-]
\ No newline at end of file
+	};
\ No newline at end of file
diff --git a/jrj/project/business/Quote/QuoteFilePurched.cpp b/jrj/project/business/Quote/QuoteFilePurched.cpp
index 4733c3b..f7af055 100644
--- a/jrj/project/business/Quote/QuoteFilePurched.cpp
+++ b/jrj/project/business/Quote/QuoteFilePurched.cpp
@@ -1,36 +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 <wobject/xdouble.hpp>
+#include <xcontrol/xlayersheet.hpp>
+#include <xcontrol/xdatetimepick.hpp>
 
-unit trade 
-[
-	class QuoteFilePurched :  public xframe
+
+#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
+#include "viewobject/view.base.hpp"
+
+using xml = KXMLDOMDocument;
+	class __declspec(dllexport) QuoteFilePurched :  public xframe
 	{
+	public:
 		xdwgrid	dw_list;
 		xnode	m_agentNode;	//Agent Condition
-
+	public:
+		QuoteFilePurched(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
+	public:
+		static QuoteFilePurched* CreateInstance(void* implPtr, void* hWnd)
+		{
+			QuoteFilePurched* pWin = new QuoteFilePurched(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 param)
 		{
 			//重置工具条
 			//SetAgent();
@@ -42,21 +57,21 @@
 			/*
 			for(int row=1;row<=dw_list.GetRowCount();row++)
 			{
-				if(dw_list.GetItemString(row,"IsSend")=="1")
+				if(dw_list.GetItemString(row,L"IsSend")==L"1")
 				{
-					if(dw_list.GetItemString(row,"ItemName")=="")
+					if(dw_list.GetItemString(row,L"ItemName")==L"")
 					{
-						alert("第"+row.toString()+"行商品英文名称未输入,补全后再发送给业务员");
+						alert(L"第"+row.toString()+L"行商品英文名称未输入,补全后再发送给业务员");
 						return 0;
 					}
-					if(dw_list.GetItemString(row,"ItemCName")=="")
+					if(dw_list.GetItemString(row,L"ItemCName")==L"")
 					{
-						alert("第"+row.toString()+"行商品名称未输入,补全后再发送给业务员");
+						alert(L"第"+row.toString()+L"行商品名称未输入,补全后再发送给业务员");
 						return 0;
 					}
-					if(dw_list.GetItemString(row,"Package")=="")
+					if(dw_list.GetItemString(row,L"Package")==L"")
 					{
-						alert("第"+row.toString()+"行商品包装未输入,补全后再发送给业务员");
+						alert(L"第"+row.toString()+L"行商品包装未输入,补全后再发送给业务员");
 						return 0;
 					}
 				}
@@ -69,14 +84,14 @@
 		{
 			if(OnValid()==0) return 1;
 					
-			xml x = new xml;
-			x.setNativePointer(xml::CreateInstance());
-			dw_list.DwUpdateAllToEx(x.GetXmlDoc());
-			if(GetParam())
+			xml x ;
+			
+			dw_list.DwUpdateAllToEx(x);
+			if(GetWinParam())
 			{
-				xaserverarg arg = GetParam();
-				arg.AddArg("process","ok");
-				arg.AddArg("value",x.GetXml());
+				xaserverarg arg = GetArg();
+				arg.AddArg(L"process",L"ok");
+				arg.AddArg(L"value",x.xml());
 			}
 			CloseWindow();
 			return 1;
@@ -92,7 +107,7 @@
 		{
 			for(int row = 1; row <= dw_list.GetRowCount(); row++)
 			{
-				dw_list.SetItemString(row,"IsSend","1");
+				dw_list.SetItemString(row,L"IsSend",L"1");
 			}
 			dw_list.Redraw();
 			return 1;
@@ -102,48 +117,49 @@
 		{
 			for(int row = 1; row <= dw_list.GetRowCount(); row++)
 			{
-				dw_list.SetItemString(row,"IsSend","0");
+				dw_list.SetItemString(row,L"IsSend",L"0");
 			}
 			dw_list.Redraw();
 			return 1;
 		}
 		
 		//命令发布函数
-		int OnCmdDispatch(string comdid)
+		int OnCmdDispatch(xstring comdid)
 		{
-			if(comdid=="xmOK") return OnOK();
-			else if(comdid=="xmCancel") return OnCancel();
-			else if(comdid=="xmSelectAll") return SelectAll();
-			else if(comdid=="xmUnSelectAll") return UnSelectAll();
+			if(comdid==L"xmOK") return OnOK();
+			else if(comdid==L"xmCancel") return OnCancel();
+			else if(comdid==L"xmSelectAll") return SelectAll();
+			else if(comdid==L"xmUnSelectAll") return UnSelectAll();
 			
 			return 0;
 		}
 		
 		//命令处理事件
-		int OnXCommand(ref TXCommandEvent evt,int param)
+		int OnXCommand(TEvent* evt, LPARAM param)
 		{
-			return OnCmdDispatch(evt.pStrID);
+			return OnCmdDispatch(evt->xcommand.pStrID);
 		}
 		
 		int OnAttachEvent()
 		{
 			//绑定工具条点击事件
-			AttachEvent("WM_XCOMMAND",OnXCommand);
+			AttachEvent(L"WM_XCOMMAND", (FEvent)&QuoteFilePurched::OnXCommand);
 			//获取焦点事件,用于重置工具条
-			AttachEvent("WM_SETFOCUS",OnSetFocus);
+			AttachEvent(L"WM_SETFOCUS", (FEvent)&QuoteFilePurched::OnSetFocus);
+			return 1;
 		}
 		
 		/*
 		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)
+			xml x ;
+			
+			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	
 			{
@@ -156,16 +172,17 @@
 		
 		int onload()
 		{
-			dw_list = GetControl("dw_list");
-			dw_list.openUrl("/sale/view/Quote3/template/Quote/QuoteFilePurchedItem");
+			SetArg();
+			dw_list = GetControl(L"dw_list");
+			dw_list.openUrl(L"/sale/view/Quote3/template/Quote/QuoteFilePurchedItem");
 		
-			if(GetParam())
+			if(GetWinParam())
 			{
-				xaserverarg arg = GetParam();
-				string val = arg.GetArgString("value");
-				xml x = new xml;
-				x.setNativePointer(xml::CreateInstance());
-				x.LoadXml(val);
+				xaserverarg arg = GetArg();
+				xstring val = arg.GetArgString(L"value");
+				xml x ;
+				
+				x.loadXML(val);
 				dw_list.Retrieve(x);
 			}
 			OnAttachEvent();	
@@ -179,5 +196,4 @@
 			
 			return 1;
 		}		
-	};
-]
\ No newline at end of file
+	};
\ No newline at end of file
diff --git a/jrj/project/business/Quote/QuoteSupplierItem.cpp b/jrj/project/business/Quote/QuoteSupplierItem.cpp
index 8ff8ee3..03008ba 100644
--- a/jrj/project/business/Quote/QuoteSupplierItem.cpp
+++ b/jrj/project/business/Quote/QuoteSupplierItem.cpp
@@ -1,37 +1,51 @@
-use "xcontrol.vframe.vbusiness.vd"
-use "xbase.vframe.vbusiness.vd"
-use "supplier.view.vd"
+#include <wobject/xstring.hpp>
+#include <xcontrol/xtreeview.hpp>
+#include <xcontrol/xdwgrid.hpp>
+#include <wobject/xdouble.hpp>
+#include <xcontrol/xlayersheet.hpp>
+#include <xcontrol/xdatetimepick.hpp>
 
-unit trade 
-[
-	class QuoteSupplierItem :  public xframe
+
+#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
+#include "viewobject/view.base.hpp"
+
+using xml = KXMLDOMDocument;
+	class __declspec(dllexport) QuoteSupplierItem :  public xframe
 	{
+	public:
 		xdwgrid	dw_list;
 		xnode	m_agentNode;	//Agent Condition
-
+	public:
+		QuoteSupplierItem(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
+	public:
+		static QuoteSupplierItem* CreateInstance(void* implPtr, void* hWnd)
+		{
+			QuoteSupplierItem* pWin = new QuoteSupplierItem(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 param)
 		{
 			//重置工具条
 			//SetAgent();
@@ -51,19 +65,19 @@
 		}
 		
 		//命令发布函数
-		int OnCmdDispatch(string comdid)
+		int OnCmdDispatch(xstring comdid)
 		{
-			if(comdid=="xmCancel") return OnCancel();
-			else if(comdid=="xmOK") return OnOk();
-			else if(comdid=="xmDelete") return OnDelete();
+			if(comdid==L"xmCancel") return OnCancel();
+			else if(comdid==L"xmOK") return OnOk();
+			else if(comdid==L"xmDelete") return OnDelete();
 			
 			return 0;
 		}
 		
 		//命令处理事件
-		int OnXCommand(ref TXCommandEvent evt,int param)
+		int OnXCommand(TEvent* evt, LPARAM param)
 		{
-			return OnCmdDispatch(evt.pStrID);
+			return OnCmdDispatch(evt->xcommand.pStrID);
 		}
 		
 		int OnDelete()
@@ -76,30 +90,29 @@
 		{
 			dw_list.AcceptText();
 			
-			xml xitem = new xml;
-			xitem.setNativePointer(xml::CreateInstance());
-			msxml::IXMLDOMDocument xitemdoc = xitem.GetXmlDoc();
+			xml xitem ;
+			KXMLDOMDocument xitemdoc = xitem;
 			dw_list.DwUpdateAllToEx(xitemdoc);
-			xaserverarg arg = new xaserverarg;
-			arg.setNativePointer(arg.CreateInstance());
-			arg.AddArg("content",xitem.GetXml());
+			xaserverarg arg ;
 			
-			//alert(xitem.GetXml());
+			arg.AddArg(L"content",xitem.xml());
+			
+			//alert(xitem.xml());
 			//return 1;
 			
-			if(url::get("/sale/data/SupplierV3/entity/update/quotemysupplier", arg.GetString(),xitem)!=1)
+			if(xurl::get(L"/sale/data/SupplierV3/entity/update/quotemysupplier", arg.GetString(),xitem)!=1)
 			{
-				string error1 = xitem.GetXmlDoc().text;
+				xstring error1 = xitem.text();
 				return 1;
 			}else
 			{
-				string str = xitem.GetXmlDoc().documentElement.getAttribute("text");
-				if(str == "false")
+				xstring str = xitem.documentElement().getAttribute(L"text");
+				if(str == L"false")
 				{
-					alert("保存失败!");
+					alert(L"保存失败!");
 					return -1;
 				}
-				alert("保存成功!");
+				alert(L"保存成功!");
 				dw_list.ResetUpdateStatus();
 			}
 			
@@ -109,33 +122,34 @@
 		int OnAttachEvent()
 		{
 			//绑定工具条点击事件
-			AttachEvent("WM_XCOMMAND",OnXCommand);
+			AttachEvent(L"WM_XCOMMAND", (FEvent)&QuoteSupplierItem::OnXCommand);
 			//获取焦点事件,用于重置工具条
-			AttachEvent("WM_SETFOCUS",OnSetFocus);
+			AttachEvent(L"WM_SETFOCUS", (FEvent)&QuoteSupplierItem::OnSetFocus);
+			return 1;
 		}
 		
 		int  OnRetrieve()
 		{
-			if(GetParam())
+			if(GetWinParam())
 			{
-				xaserverarg arg = GetParam();
-				string val = arg.GetArgString("value");
-				xml x = new xml;
-				x.setNativePointer(x.CreateInstance());
-				x.LoadXml(val);
+				xaserverarg arg = GetArg();
+				xstring val = arg.GetArgString(L"value");
+				xml x ;
+				
+				x.loadXML(val);
 				dw_list.Retrieve(x);
 				dw_list.Redraw();
 			
-				string sPartyNo = publiccode::GetIdentityNo("Party2");
-				string No ="";
-				string Name ="";
-				string NameEx ="";
+				xstring sPartyNo = publiccode::GetIdentityNo(L"Party2");
+				xstring No =L"";
+				xstring Name =L"";
+				xstring NameEx =L"";
 				/*for(int i=0; i <=dw_list.GetRowCount() ;i++)
 				{
-					Name=dw_list.GetItemString(i,"Name");
-					if(Name !="")
+					Name=dw_list.GetItemString(i,L"Name");
+					if(Name !=L"")
 					{
-						if(NameEx =="") 
+						if(NameEx ==L"") 
 						{
 							NameEx = Name;
 						}
@@ -153,15 +167,15 @@
 					if(row==1) 
 						No = sPartyNo;
 					else
-						No = ("0000"+(No.toInt()+1).toString()).right(4);
-					dw_list.SetItemString(row,"PartyNo",No+"N");
-					dw_list.SetItemString(row,"Type","12");
-					dw_list.SetItemString(row,"IdentifyAddressFlag","Y");
-					dw_list.SetItemString(row,"PrimaryFlag","Y");
+						No = (L"0000"+xstring((No.toInt()+1))).right(4);
+					dw_list.SetItemString(row,L"PartyNo",No+L"N");
+					dw_list.SetItemString(row,L"Type",L"12");
+					dw_list.SetItemString(row,L"IdentifyAddressFlag",L"Y");
+					dw_list.SetItemString(row,L"PrimaryFlag",L"Y");
 					
-					string id = ViewObject::GetGuid();
-					msxml::IXMLDOMElement ele = dw_list.GetRowElement(row);
-					ele.SetAttribute("guid",id);
+					xstring id = ViewObject::GetGuid();
+					KXMLDOMElement ele = dw_list.GetRowElement(row);
+					ele.setAttribute(L"guid",id);
 					//dw_list.SetGuid(row,id);
 				}
 			}
@@ -170,8 +184,9 @@
 		
 		int onload()
 		{
-			dw_list = GetControl("dw_list");
-			dw_list.openUrl("/sale/view/Quote3/template/Quote/QuoteSupplierItem");
+			SetArg();
+			dw_list = GetControl(L"dw_list");
+			dw_list.openUrl(L"/sale/view/Quote3/template/Quote/QuoteSupplierItem");
 		
 			OnAttachEvent();	
 			OnRetrieve();
@@ -185,5 +200,4 @@
 			
 			return 1;
 		}		
-	};
-]
\ No newline at end of file
+	};
\ No newline at end of file
diff --git a/jrj/project/business/Quote/TONewSelectDlg.cpp b/jrj/project/business/Quote/TONewSelectDlg.cpp
index 897a657..a98d35b 100644
--- a/jrj/project/business/Quote/TONewSelectDlg.cpp
+++ b/jrj/project/business/Quote/TONewSelectDlg.cpp
@@ -1,9 +1,16 @@
-use "xcontrol.vframe.vbusiness.vd"
-use "xbase.vframe.vbusiness.vd"
+#include <wobject/xstring.hpp>
+#include <xcontrol/xtreeview.hpp>
+#include <xcontrol/xdwgrid.hpp>
+#include <wobject/xdouble.hpp>
+#include <xcontrol/xlayersheet.hpp>
+#include <xcontrol/xdatetimepick.hpp>
 
-unit trade 
-[
-	class xxx :  public xframe
+
+#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
+#include "viewobject/view.base.hpp"
+
+using xml = KXMLDOMDocument;
+	class __declspec(dllexport) TOSelectDlg :  public xframe
 	{
 		//xdwgrid	dw_list;
 
diff --git a/jrj/project/business/Quote/TOSelectDlg.cpp b/jrj/project/business/Quote/TOSelectDlg.cpp
index 4b18ce9..5bf9bfc 100644
--- a/jrj/project/business/Quote/TOSelectDlg.cpp
+++ b/jrj/project/business/Quote/TOSelectDlg.cpp
@@ -1,40 +1,54 @@
-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 <wobject/xdouble.hpp>
+#include <xcontrol/xlayersheet.hpp>
+#include <xcontrol/xdatetimepick.hpp>
 
-unit trade 
-[
-	class TOSelectDlg :  public frame
+
+#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
+#include "viewobject/view.base.hpp"
+
+using xml = KXMLDOMDocument;
+	class __declspec(dllexport) TOSelectDlg :  public xframe
 	{
+	public:
 		//xdwgrid	dw_list;
 		xlistview  lv_view;
 		xlistview  lv_view1;
 		int columnCount;
 		xnode	m_agentNode;	//Agent Condition
-
+	public:
+		TOSelectDlg(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
+	public:
+		static TOSelectDlg* CreateInstance(void* implPtr, void* hWnd)
+		{
+			TOSelectDlg* pWin = new TOSelectDlg(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 param)
 		{
 			//重置工具条
 			SetAgent();
@@ -42,26 +56,26 @@
 		}
 
 		//命令发布函数
-		int OnCmdDispatch(string comdid)
+		int OnCmdDispatch(xstring comdid)
 		{
-			if(comdid=="xmCancel")
+			if(comdid==L"xmCancel")
 			{
 				CloseWindow();
 				return 1;
 			}
-			else if(comdid=="xmOK")
+			else if(comdid==L"xmOK")
 			{
 				int  LVNI_FOCUSED        = 0x0001;
-				int nItem =xlistview::GetNextItem(lv_view.GetId(), -1, LVNI_FOCUSED);
+				int nItem =lv_view.GetNextItem( -1, LVNI_FOCUSED);
 				if(nItem < 0) return 1;
 			
-				if(GetParam())
+				if(GetWinParam())
 				{
-					msxml::IXMLDOMElement ele = GetItemData(lv_view, nItem);
-					xaserverarg arg = GetParam();
-					arg.AddArg("action","new");
-					arg.AddArg("ID",ele.getAttribute("guid"));
-					arg.AddArg("id",ele.getAttribute("guid"));
+					KXMLDOMElement ele = GetItemData(lv_view, nItem);
+					xaserverarg arg = GetArg();
+					arg.AddArg(L"action",L"new");
+					arg.AddArg(L"ID",ele.getAttribute(L"guid"));
+					arg.AddArg(L"id",ele.getAttribute(L"guid"));
 				}
 				//重置工具条
 				CloseWindow();
@@ -70,7 +84,7 @@
 			return 0;
 		}
 		
-		msxml::IXMLDOMElement  GetItemData(xlistview lv_item, int hItem)
+		KXMLDOMElement  GetItemData(xlistview lv_item, int hItem)
 		{
 			int LVIF_PARAM = 0x0004;
 			
@@ -79,12 +93,12 @@
 			lvItem.iSubItem = 0;
 			lvItem.mask = LVIF_PARAM ;
 			
-			xlistview::GetItem(lv_item.GetId(), lvItem);
-			msxml::IXMLDOMElement  ele = trust(lvItem.lParam as msxml::IXMLDOMElement); 
+			lv_view.GetItem(lv_item.GetId(), lvItem);
+			KXMLDOMElement  ele = trust(lvItem.lParam as KXMLDOMElement); 
 			return ele;
 		}
 		
-		int OnListViewDoubleClicked(ref TEvent evt,int param)
+		int OnListViewDoubleClicked(TEvent* evt, LPARAM param)
 		{
 			int  LVNI_ALL                = 0x0000;
 			int  LVNI_FOCUSED        = 0x0001;
@@ -92,23 +106,23 @@
 			int  LVNI_CUT               = 0x0004;
 			int  LVNI_DROPHILITED   = 0x0008;
 			
-			int nItem =xlistview::GetNextItem(lv_view.GetId(), -1, LVNI_FOCUSED);
+			int nItem =lv_view.GetNextItem( -1, LVNI_FOCUSED);
 			if(nItem < 0) return 1;
 			
-			if(GetParam())
+			if(GetWinParam())
 			{
-				msxml::IXMLDOMElement ele = GetItemData(lv_view, nItem);
-				xaserverarg arg = GetParam();
-				arg.AddArg("action","new");
-				arg.AddArg("ID",ele.getAttribute("guid"));
-				arg.AddArg("id",ele.getAttribute("guid"));
+				KXMLDOMElement ele = GetItemData(lv_view, nItem);
+				xaserverarg arg = GetArg();
+				arg.AddArg(L"action",L"new");
+				arg.AddArg(L"ID",ele.getAttribute(L"guid"));
+				arg.AddArg(L"id",ele.getAttribute(L"guid"));
 			}
 			//重置工具条
 			CloseWindow();
 			return 1;
 		}
 		
-		int OnListViewDoubleClicked1(ref TEvent evt,int param)
+		int OnListViewDoubleClicked1(TEvent* evt, LPARAM param)
 		{
 			int  LVNI_ALL                = 0x0000;
 			int  LVNI_FOCUSED        = 0x0001;
@@ -116,17 +130,17 @@
 			int  LVNI_CUT               = 0x0004;
 			int  LVNI_DROPHILITED   = 0x0008;
 			
-			int nItem =xlistview::GetNextItem(lv_view1.GetId(), -1, LVNI_FOCUSED);
+			int nItem =lv_view.GetNextItem(lv_view1.GetId(), -1, LVNI_FOCUSED);
 			if(nItem < 0) return 1;
 			
-			if(GetParam())
+			if(GetWinParam())
 			{
-				msxml::IXMLDOMElement ele = GetItemData(lv_view1, nItem);
-				xaserverarg arg = GetParam();
-				arg.AddArg("action","open");
-				arg.AddArg("id",ele.getAttribute("id"));
-				arg.AddArg("ID",ele.getAttribute("id"));
-				arg.AddArg("ItemID",ele.getAttribute("itemid"));
+				KXMLDOMElement ele = GetItemData(lv_view1, nItem);
+				xaserverarg arg = GetArg();
+				arg.AddArg(L"action",L"open");
+				arg.AddArg(L"id",ele.getAttribute(L"id"));
+				arg.AddArg(L"ID",ele.getAttribute(L"id"));
+				arg.AddArg(L"ItemID",ele.getAttribute(L"itemid"));
 			}
 			//重置工具条
 			//OnDocumentOpen();
@@ -134,96 +148,97 @@
 			return 1;
 		}
 
-		int SetListViewHeaderColumn(string Url,xlistview lv_item)
+		int SetListViewHeaderColumn(xstring Url,xlistview lv_item)
 		{
 			const int LVCFMT_LEFT = 0;
 			for(int i=0;i<3;i++)  lv_item.DeleteColumn(lv_item.GetId(),1);
-			//if(Url=="")
+			//if(Url==L"")
 			//{
-				lv_item.InsertColumn(lv_item.GetId(),0,"创建日期",LVCFMT_LEFT,80,0);
-				lv_item.InsertColumn(lv_item.GetId(),0,"创建人员",LVCFMT_LEFT,80,0);
-				lv_item.InsertColumn(lv_item.GetId(),0,"名称",0,120,0);
+				lv_item.InsertColumn(lv_item.GetId(),0,L"创建日期",LVCFMT_LEFT,80,0);
+				lv_item.InsertColumn(lv_item.GetId(),0,L"创建人员",LVCFMT_LEFT,80,0);
+				lv_item.InsertColumn(lv_item.GetId(),0,L"名称",0,120,0);
 				columnCount = 3;
 			//}
 			return 1;
 		}
 		
-		int SetListViewHeaderColumnItem(string Url,xlistview lv_item)
+		int SetListViewHeaderColumnItem(xstring Url,xlistview lv_item)
 		{
 			const int LVCFMT_LEFT = 0;
 			for(int i=0;i<6;i++)  lv_item.DeleteColumn(lv_item.GetId(),1);
-			//if(Url=="")
+			//if(Url==L"")
 			//{
-				lv_item.InsertColumn(lv_item.GetId(),0,"最后修改日期",LVCFMT_LEFT,80,0);
-				lv_item.InsertColumn(lv_item.GetId(),0,"创建日期",LVCFMT_LEFT,80,0);
-				lv_item.InsertColumn(lv_item.GetId(),0,"创建人员",LVCFMT_LEFT,80,0);
-				lv_item.InsertColumn(lv_item.GetId(),0,"状态",0,70,0);
-				lv_item.InsertColumn(lv_item.GetId(),0,"主题",0,120,0);
-				lv_item.InsertColumn(lv_item.GetId(),0,"编号",0,70,0);
-				lv_item.InsertColumn(lv_item.GetId(),0,"事务",0,60,0);
+				lv_item.InsertColumn(lv_item.GetId(),0,L"最后修改日期",LVCFMT_LEFT,80,0);
+				lv_item.InsertColumn(lv_item.GetId(),0,L"创建日期",LVCFMT_LEFT,80,0);
+				lv_item.InsertColumn(lv_item.GetId(),0,L"创建人员",LVCFMT_LEFT,80,0);
+				lv_item.InsertColumn(lv_item.GetId(),0,L"状态",0,70,0);
+				lv_item.InsertColumn(lv_item.GetId(),0,L"主题",0,120,0);
+				lv_item.InsertColumn(lv_item.GetId(),0,L"编号",0,70,0);
+				lv_item.InsertColumn(lv_item.GetId(),0,L"事务",0,60,0);
 				columnCount = 6;
 			//}
 			return 1;
 		}
 
 		//命令处理事件
-		int OnXCommand(ref TXCommandEvent evt,int param)
+		int OnXCommand(TEvent* evt, LPARAM param)
 		{
-			return OnCmdDispatch(evt.pStrID);
+			return OnCmdDispatch(evt->xcommand.pStrID);
 		}
 		
 		int OnAttachEvent()
 		{
 			//绑定工具条点击事件
-			AttachEvent("WM_XCOMMAND",OnXCommand);
+			AttachEvent(L"WM_XCOMMAND", (FEvent)&TOSelectDlg::OnXCommand);
 			//获取焦点事件,用于重置工具条
-			AttachEvent("WM_SETFOCUS",OnSetFocus);
+			AttachEvent(L"WM_SETFOCUS", (FEvent)&TOSelectDlg::OnSetFocus);
+			return 1;
 		}
 		
 		int RetrieveEx()
 		{
-			xml x = ViewObject::RetrieveData("/sale/data/TO/business/document/list");
+			xml x = ViewObject::RetrieveData(L"/sale/data/TO/business/document/list");
 			if(x)
 			{
-				msxml::IXMLDOMElement ele = x.GetXmlDoc().documentElement;
-				msxml::IXMLDOMNodeList nlist=ele.SelectNodes("*");
-				int s=nlist.length;
+				KXMLDOMElement ele = x.documentElement();
+				KXMLDOMNodeList nlist=ele.selectNodes(L"*");
+				int s=nlist.length();
 				if (s>0)
 				{
 					for (int i=0; i<s; i++)
 					{
-						msxml::IXMLDOMElement e=nlist.item(i);
-						string name=e.getAttribute("caption");
-						int nItem = xlistview::InsertItemEx(lv_view1.GetId(),0,name,23,cast(e as int));
+						KXMLDOMElement e=nlist.item(i);
+						xstring name=e.getAttribute(L"caption");
+						int nItem = lv_view.InsertItemEx(0,name,23,e );
 						
-						xlistview::SetItemText(lv_view1.GetId(),nItem,2,e.getAttribute("subject"));
-						xlistview::SetItemText(lv_view1.GetId(),nItem,4,e.getAttribute("CreatorID"));
-						xlistview::SetItemText(lv_view1.GetId(),nItem,5,e.getAttribute("CreateDate"));
-						xlistview::SetItemText(lv_view1.GetId(),nItem,6,e.getAttribute("LastUpdateDate"));
+						lv_view.SetItemText(nItem,2,e.getAttribute(L"subject"));
+						lv_view.SetItemText(nItem,4,e.getAttribute(L"CreatorID"));
+						lv_view.SetItemText(nItem,5,e.getAttribute(L"CreateDate"));
+						lv_view.SetItemText(nItem,6,e.getAttribute(L"LastUpdateDate"));
 					}		
 				}
 			}
 			return 1;
 		}
 		
-		int Retrieve(string src)
+		int Retrieve(xstring src)
 		{
-			xml x = ViewObject::RetrieveData("/sale/data/TO/template/list", "role","");
+			xml x = ViewObject::RetrieveData(L"/sale/data/TO/template/list", L"role",L"");
 			if(x)
 			{
-				msxml::IXMLDOMElement ele = x.GetXmlDoc().documentElement;
-				msxml::IXMLDOMNodeList nlist=ele.SelectNodes("*");
-				int s=nlist.length;
+				KXMLDOMElement ele = x.documentElement();
+				KXMLDOMNodeList nlist=ele.selectNodes(L"*");
+				int s=nlist.length();
 				if (s>0)
 				{
 					for (int i=0; i<s; i++)
 					{
-						msxml::IXMLDOMElement e=nlist.item(i);
-						string name=e.getAttribute("caption");
-						int nItem = xlistview::InsertItemEx(lv_view.GetId(),0,name,23,cast(e as int));
+						KXMLDOMElement e=nlist.item(i);
+						xstring name=e.getAttribute(L"caption");
+						int nItem = lv_view.InsertItemEx(0,name,23,e);
 						
-						xlistview::SetItemText(lv_view.GetId(),nItem,1,e.getAttribute("Creator"));
-						xlistview::SetItemText(lv_view.GetId(),nItem,2,e.getAttribute("CreateDate"));
+						lv_view.SetItemText(nItem,1,e.getAttribute(L"Creator"));
+						lv_view.SetItemText(nItem,2,e.getAttribute(L"CreateDate"));
 					}		
 				}
 			}
@@ -232,24 +247,24 @@
 		
 		int onload()
 		{
-			lv_view = GetControl("lv_view");
-			xlistview::SetdwStyle(lv_view.GetId(),0);
+			SetArg();
+			lv_view = GetControl(L"lv_view");
+			lv_view.SetdwStyle(0);
 			
-			lv_view1 = GetControl("lv_view1");
-			//xlistview::SetdwStyle(lv_view1.GetId(),0);
+			lv_view1 = GetControl(L"lv_view1");
+			//lv_view.SetdwStyle(lv_view1.GetId(),0);
 				
 			columnCount = 0;
-			SetListViewHeaderColumn("",lv_view);
-			SetListViewHeaderColumnItem("",lv_view1);
-			AttachEvent("lv_view", "NM_DBLCLK",OnListViewDoubleClicked);
-			AttachEvent("lv_view1", "NM_DBLCLK",OnListViewDoubleClicked1);
+			SetListViewHeaderColumn(L"",lv_view);
+			SetListViewHeaderColumnItem(L"",lv_view1);
+			AttachEvent(L"lv_view", L"NM_DBLCLK", (FEvent)&TOSelectDlg::OnListViewDoubleClicked);
+			AttachEvent(L"lv_view1", L"NM_DBLCLK", (FEvent)&TOSelectDlg::OnListViewDoubleClicked1);
 		
 			OnAttachEvent();
 			
-			Retrieve("");
+			Retrieve(L"");
 			RetrieveEx();
 			
 			return 1;
 		}
-	};
-]
\ No newline at end of file
+	};
\ No newline at end of file
diff --git a/jrj/project/business/Quote/XmShare.Quote.v3.cpp b/jrj/project/business/Quote/XmShare.Quote.v3.cpp
index 4fc4da0..ec8074a 100644
--- a/jrj/project/business/Quote/XmShare.Quote.v3.cpp
+++ b/jrj/project/business/Quote/XmShare.Quote.v3.cpp
@@ -1,38 +1,52 @@
-use "xcontrol.vframe.vbusiness.vd"
-use "xbase.vframe.vbusiness.vd"
-use "saleorder.view.vd"
+#include <wobject/xstring.hpp>
+#include <xcontrol/xtreeview.hpp>
+#include <xcontrol/xdwgrid.hpp>
+#include <wobject/xdouble.hpp>
+#include <xcontrol/xlayersheet.hpp>
+#include <xcontrol/xdatetimepick.hpp>
 
-unit trade 
-[
-	class XmShareQuotev3 :  public xframe
+
+#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
+#include "viewobject/view.base.hpp"
+
+using xml = KXMLDOMDocument;
+	class __declspec(dllexport) XmShareQuotev3 :  public xframe
 	{
+	public:
 		xdwgrid	dw_list;
 		xdwtable dw_paper;
 		xnode	m_agentNode;	//Agent Condition
-
+	public:
+		XmShareQuotev3(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
+	public:
+		static XmShareQuotev3* CreateInstance(void* implPtr, void* hWnd)
+		{
+			XmShareQuotev3* pWin = new XmShareQuotev3(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 param)
 		{
 			//重置工具条
 			//SetAgent();
@@ -40,36 +54,36 @@
 		}
 		int OnSave()
 		{
-			xml x = new xml;
-			x.setNativePointer(x.CreateInstance());
+			xml x ;
+			
 			dw_list.AcceptText();
-			dw_list.DwUpdateAllToEx(x.GetXmlDoc());
+			dw_list.DwUpdateAllToEx(x);
 			
-			string val = x.GetXml();
+			xstring val = x.xml();
 			
-			xaserverarg arg = new xaserverarg;
-			arg.setNativePointer(arg.CreateInstance());	
-			arg.AddArg("content",val);
+			xaserverarg arg ;
+				
+			arg.AddArg(L"content",val);
 			//trace(val);
-			if(url::get("/sale/data/UserGroup/update/entity", arg.GetString(),x)!=1)
+			if(xurl::get(L"/sale/data/UserGroup/update/entity", arg.GetString(),x)!=1)
 			{
-				string error = x.GetXmlDoc().text;
+				xstring error = x.text();
 				//alert(error);
 				return 1;
 			}else
 			{
-				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"保存成功!"); 
 					
 					CloseWindow();
 				}else 
 				{
-					alert("保存失败!");
+					alert(L"保存失败!");
 				}
-				//alert(x.GetXml());
+				//alert(x.xml());
 			}
 			return 1;
 		}		
@@ -78,41 +92,41 @@
 		{
 			int MB_OKCANCEL = 1;
 			int IDOK  = 1;
-			int ret = win32::MessageBox(GetHWND(),"确认删除?","提示",MB_OKCANCEL);
+			int ret = MessageBox(GetHWND(),L"确认删除?",L"提示",MB_OKCANCEL);
 			if(ret == IDOK)
 			{
-				msxml::IXMLDOMElement ele = dw_list.GetRowElement(dw_list.GetRow());
-				string ID = ele.getAttribute("guid");
+				KXMLDOMElement ele = dw_list.GetRowElement(dw_list.GetRow());
+				xstring ID = ele.getAttribute(L"guid");
 				
-				xml x = ViewObject::RetrieveData("/sale/data/Quote3/DeleteXmShare","ID",ID);
-				string status = x.GetXml();
-				if(status.find("ok") == 1)
+				xml x = ViewObject::RetrieveData(L"/sale/data/Quote3/DeleteXmShare",L"ID",ID);
+				xstring status = x.xml();
+				if(status.find(L"ok") == 1)
 				{
-					alert("删除成功");
+					alert(L"删除成功");
 					dw_list.DeleteRow(dw_list.GetRow());
 				}else
 				{
-					alert("删除失败");
+					alert(L"删除失败");
 				}
 				
 			}
 			return 0;
 		}
 		//命令发布函数
-		int OnCmdDispatch(string comdid)
+		int OnCmdDispatch(xstring comdid)
 		{
 				
-			if(comdid=="xmDelete")
+			if(comdid==L"xmDelete")
 			{
 				OnDelete();
 				return 1;
 			}
-			else if(comdid=="xmSave")
+			else if(comdid==L"xmSave")
 			{
 				OnSave();
 				return 1;
 			}
-			else if(comdid=="xmClose")
+			else if(comdid==L"xmClose")
 			{
 				CloseWindow();
 				return 1;
@@ -122,30 +136,31 @@
 		}
 		
 		//命令处理事件
-		int OnXCommand(ref TXCommandEvent evt,int param)
+		int OnXCommand(TEvent* evt, LPARAM param)
 		{
-			return OnCmdDispatch(evt.pStrID);
+			return OnCmdDispatch(evt->xcommand.pStrID);
 		}
 		
 		int OnAttachEvent()
 		{
 			//绑定工具条点击事件
-			AttachEvent("WM_XCOMMAND",OnXCommand);
+			AttachEvent(L"WM_XCOMMAND", (FEvent)&XmShareQuotev3::OnXCommand);
 			//获取焦点事件,用于重置工具条
-			AttachEvent("WM_SETFOCUS",OnSetFocus);
+			AttachEvent(L"WM_SETFOCUS", (FEvent)&XmShareQuotev3::OnSetFocus);
+			return 1;
 		}
 		
 		
 		int  OnRetrieve()
 		{
-			xml x = new xml;
-			x.setNativePointer(xml::CreateInstance());
-			xaserverarg arg = GetParam();
+			xml x ;
+			
+			xaserverarg arg = GetArg();
 			if(arg)
 			{
-				string UserID = arg.GetArgString("UserID");
+				xstring UserID = arg.GetArgString(L"UserID");
 				//alert(UserID);
-				x = ViewObject::RetrieveData("/sale/data/Quote3/XmShare","UserID",UserID);
+				x = ViewObject::RetrieveData(L"/sale/data/Quote3/XmShare",L"UserID",UserID);
 				if(x)dw_list.Retrieve(x);
 				dw_list.SetReadOnly(true);
 				dw_list.Redraw();
@@ -156,9 +171,10 @@
 		
 		int onload()
 		{
-			dw_list = GetControl("dw_list");
-			dw_list.openUrl("/sale/view/Quote3/template/XmShare");
-			dw_list.SetColumnState("EntityUserGroupID",false);
+			SetArg();
+			dw_list = GetControl(L"dw_list");
+			dw_list.openUrl(L"/sale/view/Quote3/template/XmShare");
+			dw_list.SetColumnState(L"EntityUserGroupID",false);
 			
 			OnRetrieve();
 			
@@ -173,5 +189,4 @@
 			//SetAgent();
 			return 1;
 		}		
-	};
-]
\ No newline at end of file
+	};
\ No newline at end of file
diff --git a/jrj/project/business/Quote/trade.document.saveas.cpp b/jrj/project/business/Quote/trade.document.saveas.cpp
index 8e9c3fe..0bf7f0b 100644
--- a/jrj/project/business/Quote/trade.document.saveas.cpp
+++ b/jrj/project/business/Quote/trade.document.saveas.cpp
@@ -1,16 +1,31 @@
-use "xcontrol.vframe.vbusiness.vd"
-use "xbase.vframe.vbusiness.vd"
-use "base.view.vd"
-unit trade 
-[
-	class DocFileSaveDlg:  public xframe
+#include <wobject/xstring.hpp>
+#include <xcontrol/xtreeview.hpp>
+#include <xcontrol/xdwgrid.hpp>
+#include <wobject/xdouble.hpp>
+#include <xcontrol/xlayersheet.hpp>
+#include <xcontrol/xdatetimepick.hpp>
+
+
+#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
+#include "viewobject/view.base.hpp"
+
+using xml = KXMLDOMDocument;
+	class __declspec(dllexport)  DocFileSaveDlg:  public xframe
 	{
+	public:
 		xlistview  lv_view;
 		xnode	m_agentNode;	//Agent Condition
 		int columnCount ;
-	
+	public:
+		DocFileSaveDlg(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
+	public:
+		static DocFileSaveDlg* CreateInstance(void* implPtr, void* hWnd)
+		{
+			DocFileSaveDlg* pWin = new DocFileSaveDlg(implPtr, (HWND)hWnd);
+			return pWin;
+		}
 		//焦点激活处理函数
-		int OnSetFocus(ref TEvent evt,int param)
+		int OnSetFocus(TEvent* evt, LPARAM param)
 		{
 			//重置工具条
 			return 1;
@@ -18,20 +33,20 @@
 
 
 		//命令发布函数
-		int OnCmdDispatch(string comdid)
+		int OnCmdDispatch(xstring comdid)
 		{
-			if(comdid=="xmOk")
+			if(comdid==L"xmOk")
 			{
-				string filename = GetControl("filename").GetText();
-				if(filename=="") return 1;
-				xaserverarg arg = GetParam();
+				xstring filename =xcontrol(GetControl(L"filename")).GetText();
+				if(filename==L"") return 1;
+				xaserverarg arg = GetArg();
 				if(!arg) return 1;
-				arg.AddArg("result","ok");
-				arg.AddArg("filename",filename);
+				arg.AddArg(L"result",L"ok");
+				arg.AddArg(L"filename",filename);
 				CloseWindow();
 				return 1;
 			}
-			else if(comdid=="xmCancel")
+			else if(comdid==L"xmCancel")
 			{
 				CloseWindow();
 				return 1;
@@ -40,49 +55,50 @@
 		}
 		
 		//命令处理事件
-		int OnXCommand(ref TXCommandEvent evt,int param)
+		int OnXCommand(TEvent* evt, LPARAM param)
 		{
-			return OnCmdDispatch(evt.pStrID);
+			return OnCmdDispatch(evt->xcommand.pStrID);
 		}
 		
 		int OnAttachEvent()
 		{
 			//绑定工具条点击事件
-			AttachEvent("WM_XCOMMAND",OnXCommand);
+			AttachEvent(L"WM_XCOMMAND", (FEvent)&DocFileSaveDlg::OnXCommand);
 			//获取焦点事件,用于重置工具条
-			AttachEvent("WM_SETFOCUS",OnSetFocus);
+			AttachEvent(L"WM_SETFOCUS", (FEvent)&DocFileSaveDlg::OnSetFocus);
+			return 1;
 		}
 		
 	
-		int SetListViewHeaderColumn(string Url)
+		int SetListViewHeaderColumn(xstring Url)
 		{
 			const int LVCFMT_LEFT = 0;
-			for(int i=0;i<3;i++)  lv_view.DeleteColumn(lv_view.GetId(),1);
-			lv_view.InsertColumn(lv_view.GetId(),0,"创建人员",LVCFMT_LEFT,80,0);
-			lv_view.InsertColumn(lv_view.GetId(),0,"创建日期",LVCFMT_LEFT,80,0);
-			lv_view.InsertColumn(lv_view.GetId(),0,"名称",0,120,0);
+			for(int i=0;i<3;i++)  lv_view.DeleteColumn(1);
+			lv_view.InsertColumn(0,L"创建人员",LVCFMT_LEFT,80,0);
+			lv_view.InsertColumn(0,L"创建日期",LVCFMT_LEFT,80,0);
+			lv_view.InsertColumn(0,L"名称",0,120,0);
 			columnCount = 3;
 			return 1;
 		}
 
-		int Retrieve(string src)
+		int Retrieve(xstring src)
 		{
-			xml x = ViewObject::RetrieveData("/sale/data/TDocument3/folder/list", "src",src);
+			xml x = ViewObject::RetrieveData(L"/sale/data/TDocument3/folder/list", L"src",src);
 			if(x)
 			{
-				msxml::IXMLDOMElement ele = x.GetXmlDoc().documentElement;
-				msxml::IXMLDOMNodeList nlist=ele.SelectNodes("*");
-				int s=nlist.length;
+				KXMLDOMElement ele = x.documentElement();
+				KXMLDOMNodeList nlist=ele.selectNodes(L"*");
+				int s=nlist.length();
 				if (s>0)
 				{
 					for (int i=0; i<s; i++)
 					{
-						msxml::IXMLDOMElement e=nlist.item(i);
-						string name=e.getAttribute("caption");
-						int nItem = xlistview::InsertItemEx(lv_view.GetId(),0,name,23,cast(e as int));
+						KXMLDOMElement e=nlist.item(i);
+						xstring name=e.getAttribute(L"caption");
+						int nItem = lv_view.InsertItemEx(0,name,23,e);
 						
-						xlistview::SetItemText(lv_view.GetId(),nItem,1,e.getAttribute("Creator"));
-						xlistview::SetItemText(lv_view.GetId(),nItem,2,e.getAttribute("CreateDate"));
+						lv_view.SetItemText(nItem,1,e.getAttribute(L"Creator"));
+						lv_view.SetItemText(nItem,2,e.getAttribute(L"CreateDate"));
 					}		
 				}
 			}
@@ -91,17 +107,18 @@
 		
 		int onload()
 		{
-			lv_view = GetControl("lv_view");
-			//xlistview::SetdwStyle(lv_view.GetId(),0);
+			SetArg();
+			lv_view = GetControl(L"lv_view");
+			//lv_view.SetdwStyle(0);
 				
 			columnCount = 0;
-			SetListViewHeaderColumn("");
+			SetListViewHeaderColumn(L"");
 			OnAttachEvent();
 			
-			if(GetParam())
+			if(GetWinParam())
 			{
-				xaserverarg arg = GetParam();
-				string src = arg.GetArgString("src");
+				xaserverarg arg = GetArg();
+				xstring src = arg.GetArgString(L"src");
 				Retrieve(src);
 			}
 			
@@ -114,5 +131,4 @@
 			
 			return 1;
 		}		
-	};
-]
\ No newline at end of file
+	};
\ No newline at end of file
diff --git a/jrj/project/business/Quote/trade.document.selectdlg.cpp b/jrj/project/business/Quote/trade.document.selectdlg.cpp
index 5118dd9..b259ebc 100644
--- a/jrj/project/business/Quote/trade.document.selectdlg.cpp
+++ b/jrj/project/business/Quote/trade.document.selectdlg.cpp
@@ -1,45 +1,60 @@
-use "xcontrol.vframe.vbusiness.vd"
-use "xbase.vframe.vbusiness.vd"
-use "base.view.vd"
-unit trade 
-[
-	class DocSelectDlg:  public xframe
+#include <wobject/xstring.hpp>
+#include <xcontrol/xtreeview.hpp>
+#include <xcontrol/xdwgrid.hpp>
+#include <wobject/xdouble.hpp>
+#include <xcontrol/xlayersheet.hpp>
+#include <xcontrol/xdatetimepick.hpp>
+
+
+#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
+#include "viewobject/view.base.hpp"
+
+using xml = KXMLDOMDocument;
+	class __declspec(dllexport) DocSelectDlg:  public xframe
 	{
+	public:
 		//xdwgrid	dw_list;
 		xlistview  lv_view;
 		xnode	m_agentNode;	//Agent Condition
 		int columnCount ;
-	
+	public:
+		DocSelectDlg(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
+	public:
+		static DocSelectDlg* CreateInstance(void* implPtr, void* hWnd)
+		{
+			DocSelectDlg* pWin = new DocSelectDlg(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 param)
 		{
 			//重置工具条
 			//SetAgent();
 			return 1;
 		}
 
-		int OnListViewDoubleClicked(ref TEvent evt,int param)
+		int OnListViewDoubleClicked(TEvent* evt, LPARAM param)
 		{
 			//重置工具条
 			//SetAgent();
@@ -58,7 +73,7 @@
 			int  LVNI_CUT               = 0x0004;
 			int  LVNI_DROPHILITED   = 0x0008;
 
-			int nItem =xlistview::GetNextItem(lv_view.GetId(), -1, LVNI_FOCUSED);
+			int nItem =lv_view.GetNextItem( -1, LVNI_FOCUSED);
 			if(nItem < 0) return 1;
 			
 			int LVIF_PARAM = 0x0004;
@@ -68,70 +83,70 @@
 			lvItem.iSubItem = 0;
 			lvItem.mask = LVIF_PARAM ;
 			
-			xlistview::GetItem(lv_view.GetId(), lvItem);
-			msxml::IXMLDOMElement ele = trust(lvItem.lParam as msxml::IXMLDOMElement); 
+			lv_view.GetItem( lvItem);
+			KXMLDOMElement ele = trust(lvItem.lParam as KXMLDOMElement); 
 			
-			string src = ele.getAttribute("url");
-			string name=ele.getAttribute("caption");
-			string file ="";
-			if(src.find("/file/")>0) file = src.mid(src.find("/file/") + 6,9999);
-			if(file =="") return 1;
-			string str = file.left(2);
-			string ext = "";
-			if(name.find(".")>=0) ext = name.mid(name.find("."),name.length());
-			string sfile = file;
+			xstring src = ele.getAttribute(L"url");
+			xstring name=ele.getAttribute(L"caption");
+			xstring file =L"";
+			if(src.find(L"/file/")>0) file = src.mid(src.find(L"/file/") + 6,9999);
+			if(file ==L"") return 1;
+			xstring str = file.left(2);
+			xstring ext = L"";
+			if(name.find(L".")>=0) ext = name.mid(name.find(L"."),name.length());
+			xstring sfile = file;
 			
-			xaserverarg arg =  GetParam();
+			xaserverarg arg =  GetArg();
 			if(arg)
 			{
-				arg.AddArg("result","ok");
-				if((arg.GetArgString("process")=="path" ||arg.GetArgString("process")=="data"))
+				arg.AddArg(L"result",L"ok");
+				if((arg.GetArgString(L"process")==L"path" ||arg.GetArgString(L"process")==L"data"))
 				{
-					string id = ele.getAttribute("ID");
-					arg.AddArg("ID", id);
-					arg.AddArg("path", src);
-					arg.AddArg("filename", name);
-					arg.AddArg("src","/business/attachment/"+str+"/"+ file+".jpg");
-					if(arg.GetArgString("process")=="path" ) return 1;
+					xstring id = ele.getAttribute(L"ID");
+					arg.AddArg(L"ID", id);
+					arg.AddArg(L"path", src);
+					arg.AddArg(L"filename", name);
+					arg.AddArg(L"src",L"/business/attachment/"+str+L"/"+ file+L".jpg");
+					if(arg.GetArgString(L"process")==L"path" ) return 1;
 				}
 			}
 			
 			
 			/*
-			const string d = m_Html.GetData(p.object);	
-			if(d == "") return -1;
-			string file = d.mid(0, d.find("|##@@|",0));
-			string name = d.mid(d.find("|##@@|",0)+6, d.length());
+			const xstring d = m_Html.GetData(p.object);	
+			if(d == L"") return -1;
+			xstring file = d.mid(0, d.find(L"|##@@|",0));
+			xstring name = d.mid(d.find(L"|##@@|",0)+6, d.length());
 			*/
 			
-			xaserver::CreateDirectory("C:/Temp");
+			xaserver::CreateDirectory(L"C:/Temp");
 			if(arg)
 			{
-				if(arg.GetArgString("process")=="data")
+				if(arg.GetArgString(L"process")==L"data")
 				{
-					xml x = new xml;
-					x.setNativePointer(xml ::CreateInstance());
-					xaserver::LoadUrl(GetServerUrl(),"/business/attachment/"+str+"/"+ file+".jpg","",x);
-					arg.AddArg("data",x.GetXml());
+					xml x ;
+					
+					xaserver::LoadUrl(GetServerUrl(),L"/business/attachment/"+str+L"/"+ file+L".jpg",L"",x);
+					arg.AddArg(L"data",x.xml());
 					return 1;
 				}
 			}
 			
-			int openRet = xaserver::DownLoadFile(GetServerUrl(),"/business/attachment/"+str+"/"+ file+".jpg","","C:/Temp/"+sfile+ext);
+			int openRet = xaserver::DownLoadFile(GetServerUrl(),L"/business/attachment/"+str+L"/"+ file+L".jpg",L"",L"C:/Temp/"+sfile+ext);
 			
 			
 			
-			//alert("/business/attachment/"+str+"/"+ file+".jpg");
+			//alert(L"/business/attachment/"+str+L"/"+ file+L".jpg");
 			if(openRet < 0)
 			{
-				alert("文件打开失败1!");
+				alert(L"文件打开失败1!");
 				return -1;
 			}
-			//openRet = win32::ShellExecute(0,"open","C:/Temp/"+name,"","",5);	
-			openRet = win32::ShellExecute(0,"open","C:/Temp/"+sfile+ext,"","",5);	
+			//openRet = ShellExecute(0,L"open",L"C:/Temp/"+name,L"",L"",5);	
+			openRet = ShellExecute(0,L"open",L"C:/Temp/"+sfile+ext,L"",L"",5);	
 			if(openRet < 32)
 			{
-				alert("文件打开失败2!");
+				alert(L"文件打开失败2!");
 				return -1;
 			}
 			
@@ -139,36 +154,37 @@
 		}
 
 		//命令发布函数
-		int OnCmdDispatch(string comdid)
+		int OnCmdDispatch(xstring comdid)
 		{
 			return 0;
 		}
 		
 		//命令处理事件
-		int OnXCommand(ref TXCommandEvent evt,int param)
+		int OnXCommand(TEvent* evt, LPARAM param)
 		{
-			return OnCmdDispatch(evt.pStrID);
+			return OnCmdDispatch(evt->xcommand.pStrID);
 		}
 		
 		int OnAttachEvent()
 		{
 			//绑定工具条点击事件
-			AttachEvent("WM_XCOMMAND",OnXCommand);
+			AttachEvent(L"WM_XCOMMAND", (FEvent)&DocSelectDlg::OnXCommand);
 			//获取焦点事件,用于重置工具条
-			AttachEvent("WM_SETFOCUS",OnSetFocus);
+			AttachEvent(L"WM_SETFOCUS", (FEvent)&DocSelectDlg::OnSetFocus);
+			return 1;
 		}
 		
 		/*
 		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)
+			xml x ;
+			
+			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	
 			{
@@ -179,38 +195,38 @@
 		}
 		*/
 		
-		int SetListViewHeaderColumn(string Url)
+		int SetListViewHeaderColumn(xstring Url)
 		{
 			const int LVCFMT_LEFT = 0;
-			for(int i=0;i<3;i++)  lv_view.DeleteColumn(lv_view.GetId(),1);
-			//if(Url=="")
+			for(int i=0;i<3;i++)  lv_view.DeleteColumn(1);
+			//if(Url==L"")
 			//{
-				lv_view.InsertColumn(lv_view.GetId(),0,"创建人员",LVCFMT_LEFT,80,0);
-				lv_view.InsertColumn(lv_view.GetId(),0,"创建日期",LVCFMT_LEFT,80,0);
-				lv_view.InsertColumn(lv_view.GetId(),0,"名称",0,120,0);
+				lv_view.InsertColumn(0,L"创建人员",LVCFMT_LEFT,80,0);
+				lv_view.InsertColumn(0,L"创建日期",LVCFMT_LEFT,80,0);
+				lv_view.InsertColumn(0,L"名称",0,120,0);
 				columnCount = 3;
 			//}
 			return 1;
 		}
 
-		int Retrieve(string src)
+		int Retrieve(xstring src)
 		{
-			xml x = ViewObject::RetrieveData("/sale/data/TDocument3/folder/list", "src",src);
+			xml x = ViewObject::RetrieveData(L"/sale/data/TDocument3/folder/list", L"src",src);
 			if(x)
 			{
-				msxml::IXMLDOMElement ele = x.GetXmlDoc().documentElement;
-				msxml::IXMLDOMNodeList nlist=ele.SelectNodes("*");
-				int s=nlist.length;
+				KXMLDOMElement ele = x.documentElement();
+				KXMLDOMNodeList nlist=ele.selectNodes(L"*");
+				int s=nlist.length();
 				if (s>0)
 				{
 					for (int i=0; i<s; i++)
 					{
-						msxml::IXMLDOMElement e=nlist.item(i);
-						string name=e.getAttribute("caption");
-						int nItem = xlistview::InsertItemEx(lv_view.GetId(),0,name,23,cast(e as int));
+						KXMLDOMElement e=nlist.item(i);
+						xstring name=e.getAttribute(L"caption");
+						int nItem = lv_view.InsertItemEx(0,name,23,e);
 						
-						xlistview::SetItemText(lv_view.GetId(),nItem,1,e.getAttribute("Creator"));
-						xlistview::SetItemText(lv_view.GetId(),nItem,2,e.getAttribute("CreateDate"));
+						lv_view.SetItemText(nItem,1,e.getAttribute(L"Creator"));
+						lv_view.SetItemText(nItem,2,e.getAttribute(L"CreateDate"));
 					}		
 				}
 			}
@@ -219,17 +235,18 @@
 		
 		int onload()
 		{
-			lv_view = GetControl("lv_view");
-			//xlistview::SetdwStyle(lv_view.GetId(),0);
+			SetArg();
+			lv_view = GetControl(L"lv_view");
+			//lv_view.SetdwStyle(0);
 				
 			columnCount = 0;
-			SetListViewHeaderColumn("");
-			AttachEvent("lv_view", "NM_DBLCLK",OnListViewDoubleClicked);
+			SetListViewHeaderColumn(L"");
+			AttachEvent(L"lv_view", L"NM_DBLCLK", (FEvent)&DocSelectDlg::OnListViewDoubleClicked);
 			
-			if(GetParam())
+			if(GetWinParam())
 			{
-				xaserverarg arg = GetParam();
-				string src = arg.GetArgString("src");
+				xaserverarg arg = GetArg();
+				xstring src = arg.GetArgString(L"src");
 				Retrieve(src);
 			}
 			
@@ -242,5 +259,4 @@
 			
 			return 1;
 		}		
-	};
-]
\ No newline at end of file
+	};
\ No newline at end of file
diff --git a/jrj/project/business/Quote/xmQuoteBillList.cpp b/jrj/project/business/Quote/xmQuoteBillList.cpp
index 23ebca4..1678667 100644
--- a/jrj/project/business/Quote/xmQuoteBillList.cpp
+++ b/jrj/project/business/Quote/xmQuoteBillList.cpp
@@ -1,43 +1,57 @@
-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 <wobject/xdouble.hpp>
+#include <xcontrol/xlayersheet.hpp>
+#include <xcontrol/xdatetimepick.hpp>
 
-unit trade 
-[
-	class xmQuoteBillList :  public xframe
+
+#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
+#include "viewobject/view.base.hpp"
+
+using xml = KXMLDOMDocument;
+	class __declspec(dllexport) xmQuoteBillList :  public xframe
 	{
+	public:
 		xdwgrid	dw_list;
 
 		xnode	m_agentNode;	//Agent Condition
 		int hObject = 0;
 	
-		string QuoteNo;
-		string printStr;
-	
+		xstring QuoteNo;
+		xstring printStr;
+	public:
+		xmQuoteBillList(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
+	public:
+		static xmQuoteBillList* CreateInstance(void* implPtr, void* hWnd)
+		{
+			xmQuoteBillList* pWin = new xmQuoteBillList(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 OnRowChanged(ref TNotifyEvent evt,int p)
+		int OnRowChanged(TEvent* evt, int p)
 		{
-			ref DWNMHDR  hdr = trust(evt.pnmh as ref DWNMHDR);
+			DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
 			int row = hdr.row;
 			SetAgent();
 			return 1;
@@ -45,7 +59,7 @@
 
 
 		//焦点激活处理函数
-		int OnSetFocus(ref TEvent evt,int param)
+		int OnSetFocus(TEvent* evt, LPARAM param)
 		{
 			//重置工具条
 			SetAgent();
@@ -56,78 +70,78 @@
 		
 			
 		//命令发布函数
-		int OnCmdDispatch(string comdid)
+		int OnCmdDispatch(xstring comdid)
 		{
-			if(comdid=="xmImport")
+			if(comdid==L"xmImport")
 			{
-				if(GetParam())
+				if(GetWinParam())
 				{
-					xaserverarg arg = GetParam();
-					arg.AddArg("items",printStr);
+					xaserverarg arg = GetArg();
+					arg.AddArg(L"items",printStr);
 					
-					arg.AddArg("action","ok");
+					arg.AddArg(L"action",L"ok");
 				}
 				CloseWindow();
 				return 1;
 			}
-			if(comdid=="xmClose")
+			if(comdid==L"xmClose")
 			{
 				
 				CloseWindow();
 				return 1;
 			}
-			if(comdid=="xmSearch")
+			if(comdid==L"xmSearch")
 			{
 				
 				OnRetrieve(QuoteNo);
 				return 1;
 			}
-			if(comdid=="xmSelectAll") return SelectAll();
-			if(comdid=="xmUnSelectAll") return UnSelectAll();
+			if(comdid==L"xmSelectAll") return SelectAll();
+			if(comdid==L"xmUnSelectAll") return UnSelectAll();
 			
 			return 0;
 		}
 		
-		int OnDwClicked(ref TNotifyEvent evt,int p)
+		int OnDwClicked(TEvent* evt, int p)
 		{
-			ref DWNMHDR hdr = cast(evt.pnmh as ref DWNMHDR);
+			DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
 			char ch;
 			int row = hdr.row;
-			string col = hdr.colname;
+			xstring col = hdr.colname;
 			
-			string str = "";
-			if(dw_list.GetGuid(row) !="")
+			xstring str = L"";
+			if(dw_list.GetGuid(row) !=L"")
 			{
-				str = dw_list.GetItemString(row,"QuoteLineID");
+				str = dw_list.GetItemString(row,L"QuoteLineID");
 			}
 			
 			if(dw_list.IsRowSelected(row) & 0xff)
 			{
-				printStr = printStr.replace(" "+str,"");
+				printStr = printStr.replace(L" "+str,L"");
 			}else
 			{
-				printStr += " " + str;
+				printStr += L" " + str;
 			}
 			return 1;
 		}
 		//命令处理事件
-		int OnXCommand(ref TXCommandEvent evt,int param)
+		int OnXCommand(TEvent* evt, LPARAM param)
 		{
-			return OnCmdDispatch(evt.pStrID);
+			return OnCmdDispatch(evt->xcommand.pStrID);
 		}
 		
 		int SelectAll()
 		{
-			printStr="";
+			printStr=L"";
 			for(int row = 1; row <= dw_list.GetRowCount(); row++)
 			{
-				dw_list.SetItemString(row,"IsSend","1");
+				dw_list.SetItemString(row,L"IsSend",L"1");
 				dw_list.SelectRow(row,true);
-				string str = "";
-				if(dw_list.GetGuid(row) !="")
+				xstring str = L"";
+				if(dw_list.GetGuid(row) !=L"")
 				{
-					str = dw_list.GetItemString(row,"QuoteLineID");
-					printStr += " " + str;
+					str = dw_list.GetItemString(row,L"QuoteLineID");
+					printStr += L" " + str;
 				}
 			}
 			dw_list.Redraw();
@@ -136,10 +150,10 @@
 		
 		int UnSelectAll()
 		{
-			printStr="";
+			printStr=L"";
 			for(int row = 1; row <= dw_list.GetRowCount(); row++)
 			{
-				dw_list.SetItemString(row,"IsSend","0");
+				dw_list.SetItemString(row,L"IsSend",L"0");
 				dw_list.SelectRow(row,false);
 			}
 			dw_list.Redraw();
@@ -149,26 +163,27 @@
 		int OnAttachEvent()
 		{
 			//绑定工具条点击事件
-			AttachEvent("WM_XCOMMAND",OnXCommand);
+			AttachEvent(L"WM_XCOMMAND", (FEvent)&xmQuoteBillList::OnXCommand);
 			//获取焦点事件,用于重置工具条
-			AttachEvent("WM_SETFOCUS",OnSetFocus);
-			AttachEvent("dw_list","DWV_ROWFOCUSCHANGED",OnRowChanged);		
-			AttachEvent("dw_list","DWV_CLICKED",OnDwClicked);
+			AttachEvent(L"WM_SETFOCUS", (FEvent)&xmQuoteBillList::OnSetFocus);
+			AttachEvent(L"dw_list",L"DWV_ROWFOCUSCHANGED", (FEvent)&xmQuoteBillList::OnRowChanged);
+			AttachEvent(L"dw_list",L"DWV_CLICKED", (FEvent)&xmQuoteBillList::OnDwClicked);
+			return 1;
 			
 		}
 		
 		
-		int  OnRetrieve(string QuoteNo)
+		int  OnRetrieve(xstring QuoteNo)
 		{
-			xml x = new xml;
-			x.setNativePointer(xml::CreateInstance());
-			xaserverarg arg = new xaserverarg;
-			arg.setNativePointer(arg.CreateInstance());
-			arg.AddArg("QuoteNo",QuoteNo);
+			xml x ;
 			
-			if (getUrl("/sale/data/ProductLibrary3/QuoteBillList",arg.GetString(),x)!=1)
+			xaserverarg arg ;
+			
+			arg.AddArg(L"QuoteNo",QuoteNo);
+			
+			if (getUrl(L"/sale/data/ProductLibrary3/QuoteBillList",arg.GetString(),x)!=1)
 			{
-				trace(x.GetXmlDoc().text);
+				trace(x.text());
 				return -1;
 			}else	
 			{
@@ -182,15 +197,15 @@
 			
 		int onload()
 		{
-			dw_list = GetControl("dw_list");
-			dw_list.openUrl("/sale/view/Quote3/template/Quote/QuoteBillList");
+			dw_list = GetControl(L"dw_list");
+			dw_list.openUrl(L"/sale/view/Quote3/template/Quote/QuoteBillList");
 		
 			
-			if(GetParam())
+			if(GetWinParam())
 			{
-				xaserverarg arg = GetParam();
-				QuoteNo=arg.GetArgString("QuoteNo");
-				OnRetrieve(arg.GetArgString("QuoteNo"));
+				xaserverarg arg = GetArg();
+				QuoteNo=arg.GetArgString(L"QuoteNo");
+				OnRetrieve(arg.GetArgString(L"QuoteNo"));
 			}
 			OnRetrieve(QuoteNo);
 			SelectAll();
@@ -204,5 +219,4 @@
 			
 			return 1;
 		}		
-	};
-]
\ No newline at end of file
+	};
\ No newline at end of file

--
Gitblit v1.9.3