From 25e64cc13f2ce988cb1802c0b0671557e588d076 Mon Sep 17 00:00:00 2001
From: xj qian <qianxj15@sina.com>
Date: 星期四, 27 六月 2024 22:38:58 +0800
Subject: [PATCH] test

---
 jrj/project/business/HR/AdministrativeDepartment.cpp |  279 ++++++++++++++++++++++++++++---------------------------
 1 files changed, 143 insertions(+), 136 deletions(-)

diff --git a/jrj/project/business/HR/AdministrativeDepartment.cpp b/jrj/project/business/HR/AdministrativeDepartment.cpp
index d2f3c64..07fe927 100644
--- a/jrj/project/business/HR/AdministrativeDepartment.cpp
+++ b/jrj/project/business/HR/AdministrativeDepartment.cpp
@@ -8,100 +8,108 @@
 #include "viewobject/view.base.hpp"
 
 using xml = KXMLDOMDocument;
-	class ViewAdministrativeDepartmentList : public listwin
+	class  __declspec(dllexport) ViewAdministrativeDepartmentList : public listwin
 	{
+	public:
 		xdwgrid		dw_list;
 		xtreeview	tv_folder;//hxsoft.com -> Developer -> wface -> vcontrol
-		string rows;
-		string urlTree;
-		string myDataUrl;
+		xstring rows;
+		xstring urlTree;
+		xstring myDataUrl;
 		int changeddlb;
 
 		xnode	m_agentNode;	//Agent Condition
-
+	public:
+		ViewAdministrativeDepartmentList(void* implPtr, HWND hWnd) :listwin(implPtr, hWnd) {}
+	public:
+		static ViewAdministrativeDepartmentList* CreateInstance(void* implPtr, void* hWnd)
+		{
+			ViewAdministrativeDepartmentList* pWin = new ViewAdministrativeDepartmentList(implPtr, (HWND)hWnd);
+			return pWin;
+		}
 		int SetAgent()
 		{
-			string xfNodeAgentArea = "agentarea";
+			xstring xfNodeAgentArea = L"agentarea";
 			xnode anode = GetAgentNode(xfNodeAgentArea);
 			if (m_agentNode)
 			{
-				SetAgentNodeContent(anode, m_agentNode);
+				SetAgentNode(anode, m_agentNode);
 			}
 			else
 			{
-				msxml::IXMLDOMElement xframeElement = GetElement();
-				msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/" + xfNodeAgentArea + "[1]/*");
+				KXMLDOMElement xframeElement = GetElement();
+				KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/" + xfNodeAgentArea + L"[1]/*");
 				if (agent)
 				{
-					string s = agent.xml;
-					m_agentNode = SetAgentNodeContent(anode, s);
+					xstring s = agent.xml();
+					m_agentNode = SetAgentNode(anode, s);
 				}
 			}
 			return 1;
 		}
 
 		//展开放进树里面
-		int ExpandCatChildFolder(int hItem, msxml::IXMLDOMElement ele, int image)
+		int ExpandCatChildFolder(HTREEITEM hItem, KXMLDOMElement ele, int image)
 		{
 			/*在具体应用时可以用DOMDocument的Load方法来装载XML文档
 			用IXMLDOMNode 的selectNodes(查询的结果有多个,得到存放搜索结果的链表)
 			或selectSingleNode(查询的结果有一个,在有多个的情况下返回找到的第一个节点)方法进行查询,
 			用createNode和appendChild方法来创建节点和追加节点,
 			用IXMLDOMElement的setAttribute和getAttribute方法来设置和获得节点的属性。*/
-			msxml::IXMLDOMNodeList nlist = ele.SelectNodes("item");
-			int len = nlist.length;
+			KXMLDOMNodeList nlist = ele.selectNodes(L"item");
+			int len = nlist.length();
 			if (len > 0)
 				tv_folder.SetItemChild(hItem, 1);
 			for (int i = 0; i < len; i++)
 			{
-				msxml::IXMLDOMElement e = nlist.item(i);
-				string name = e.getAttribute("name");
-				int h = tv_folder.InsertChildItem(hItem, name, trust(e as int), image);//trust(e as int)将e放入树结构里面的data属性中
+				KXMLDOMElement& e = *new KXMLDOMElement(nlist.item(i));
+				xstring name = e.getAttribute(L"name");
+				HTREEITEM h = tv_folder.InsertChildItem(hItem, name, (LPARAM)&e, image);//trust(e as int)将e放入树结构里面的data属性中
 				ExpandCatChildFolder(h, e, 35);
 			}
 			return 1;
 		}
 
 		//展开文件夹明细
-		int ExpandFolderItem(int hItem, string parentid)
+		int ExpandFolderItem(HTREEITEM hItem, xstring parentid)
 		{
-			xml x = ViewObject::RetrieveData(urlTree, "status", "有效", "parentid", parentid);//获取后台数据
+			xml x = ViewObject::RetrieveData(urlTree, L"status", L"有效", L"parentid", parentid);//获取后台数据
 			if (!x) {
 				return 0;
 			}
-			msxml::IXMLDOMNodeList nlist = x.GetXmlDoc().SelectNodes("data/Item");
-			int len = nlist.length;
+			KXMLDOMNodeList nlist = x.selectNodes(L"data/Item");
+			int len = nlist.length();
 			for (int i = 0; i < len; i++)
 			{
-				msxml::IXMLDOMElement e = nlist.item(i);
-				string name = e.selectSingleNode("name").text;
-				int h = tv_folder.InsertChildItem(hItem, name, trust(e as int), 35);
+				KXMLDOMElement& e = *new KXMLDOMElement(nlist.item(i));
+				xstring name = e.selectSingleNode(L"name").text();
+				HTREEITEM h = tv_folder.InsertChildItem(hItem, name, (LPARAM)&e, 35);
 				ExpandCatChildFolder(h, e, 35);
 			}
 			return 1;
 		}
 
 		//查找当前树项的顶级目录
-		int LookupTopFolder(int hItem)
+		HTREEITEM LookupTopFolder(HTREEITEM hItem)
 		{
-			int hRoot = tv_folder.GetRootItem();
+			HTREEITEM hRoot = tv_folder.GetRootItem();
 			while (tv_folder.GetParentItem(hItem)) hItem = tv_folder.GetParentItem(hItem);
 			return hItem;
 		}
 
 		//树展开
-		int OnTreeExpanding(ref TNotifyEvent evt, int p)
+		int OnTreeExpanding(TEvent* evt, int p)
 		{
-			ref NMTREEVIEW nmtv = evt.pnmh;
-			int hItem = nmtv.itemNew.hItem;
-			int hTopItem = LookupTopFolder(hItem);
-			string name = tv_folder.GetItemLabel(hTopItem);
-			int child = tv_folder.GetChildItem(hItem);
+			NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh;
+			HTREEITEM hItem = nmtv.itemNew.hItem;
+			HTREEITEM hTopItem = LookupTopFolder(hItem);
+			xstring name = tv_folder.GetItemLabel(hTopItem);
+			HTREEITEM child = tv_folder.GetChildItem(hItem);
 
-			msxml::IXMLDOMElement e = tv_folder.GetItemData(hItem);
-			string parentid = "";
-			if (name != "部门结构")
-				parentid = e.selectSingleNode("adid").text;
+			KXMLDOMElement e = tv_folder.GetItemData(hItem);
+			xstring parentid = L"";
+			if (name != L"部门结构")
+				parentid = e.selectSingleNode(L"adid").text();
 			trace(parentid);
 			if (!child) {
 				ExpandFolderItem(hItem, parentid);
@@ -112,26 +120,26 @@
 		//查询节点的列表数据
 		int OnPreRetrieve()
 		{
-			int hItem = tv_folder.GetSelectedItem();
+			HTREEITEM hItem = tv_folder.GetSelectedItem();
 			if (hItem <= 0) return 1;
 
 			//int 	hCursor = xutil::SetCursorWait();
-			msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
-			string name = e.getAttribute("name");
+			KXMLDOMElement& e = *(KXMLDOMElement*)tv_folder.GetItemData(hItem);
+			xstring name = e.getAttribute(L"name");
 			xml x = 0;
-			string parentid = "";
-			if (name != "部门结构")
-				parentid = e.selectSingleNode("adid").text;
+			xstring parentid = L"";
+			if (name != L"部门结构")
+				parentid = e.selectSingleNode(L"adid").text();
 			trace(parentid);
-			x = ViewObject::RetrieveData(myDataUrl, "parentid", parentid);
+			x = ViewObject::RetrieveData(myDataUrl, L"parentid", parentid);
 			if (x)
 			{
-				//trace(x.GetXml());
+				//trace(x.xml());
 				dw_list.Retrieve(x);
 				dw_list.Redraw();
 			}
 			else {
-				dw_list.ResetEx();
+				dw_list.Reset();
 				dw_list.Redraw();
 			}
 			dw_list.SetReadOnly(true);
@@ -139,20 +147,20 @@
 			return 1;
 		}
 
-		int OnTreeSelChanged(ref TNotifyEvent evt, int p)
+		int OnTreeSelChanged(TEvent* evt, int p)
 		{
 			if (changeddlb)
 				return 1;
-			int hItem = tv_folder.GetSelectedItem();
+			HTREEITEM hItem = tv_folder.GetSelectedItem();
 			if (hItem <= 0)
 				return 1;
-			int child = tv_folder.GetChildItem(hItem);
+			HTREEITEM child = tv_folder.GetChildItem(hItem);
 			if (!child) {
-				int 	hCursor = xutil::SetCursorWait();
-				msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
-				if (!e.getAttribute("name")) {
-					string adid = e.selectSingleNode("adid").text;
-					string parentid = adid;
+				HCURSOR 	hCursor = xutil::SetCursorWait();
+				KXMLDOMElement& e = *(KXMLDOMElement*)tv_folder.GetItemData(hItem);
+				if (!e.getAttribute(L"name")) {
+					xstring adid = e.selectSingleNode(L"adid").text();
+					xstring parentid = adid;
 					ExpandFolderItem(hItem, parentid);
 				}
 			}
@@ -160,7 +168,7 @@
 		}
 
 		//焦点激活处理函数
-		int OnSetFocus(ref TEvent evt, int param)
+		int OnSetFocus(TEvent* evt, LPARAM p)
 		{
 			//重置工具条
 			SetAgent();
@@ -169,18 +177,18 @@
 
 		int OnAdd()
 		{
-			int hItem = tv_folder.GetSelectedItem();
+			HTREEITEM hItem = tv_folder.GetSelectedItem();
 			if (hItem <= 0)
 				return 1;
-			int hCursor = xutil::SetCursorWait();
-			msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
-			string parentid = "";//父级id
-			if (!e.getAttribute("name"))
-				parentid = e.selectSingleNode("adid").text;
-			xaserverarg arg = new xaserverarg;
-			arg.setNativePointer(arg.CreateInstance());
-			arg.AddArg("parentid", parentid);
-			OpenWindow("dev:xpage[AdministrativeDepartmentFolder.vx]", cast(arg as int));
+			HCURSOR hCursor = xutil::SetCursorWait();
+			KXMLDOMElement& e = *(KXMLDOMElement*)tv_folder.GetItemData(hItem);
+			xstring parentid = L"";//父级id
+			if (!e.getAttribute(L"name"))
+				parentid = e.selectSingleNode(L"adid").text();
+			xaserverarg arg;
+			
+			arg.AddArg(L"parentid", parentid);
+			OpenWindow(L"dev:xpage[AdministrativeDepartmentFolder.vx]",arg);
 
 			return 1;
 		}
@@ -192,32 +200,32 @@
 			if(hItem <=0)
 				return 1;
 			int hCursor = xutil::SetCursorWait();
-			msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
+			KXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as KXMLDOMElement);
 
-			if(e.getAttribute("name"))
+			if(e.getAttribute(L"name"))
 				return 1;*/
 
 			int row = dw_list.GetRow();
 			if (row < 1)
 				return 1;
-			string parentid = "", adid = "";
-			/*msxml::IXMLDOMElement ele = dw_list.GetRowElement(row);
-			adid = ele.selectSingleNode("adid").text;*/
-			adid = dw_list.GetItemString(row, "adid");
-			parentid = dw_list.GetItemString(row, "parentid");
+			xstring parentid = L"", adid = L"";
+			/*KXMLDOMElement ele = dw_list.GetRowElement(row);
+			adid = ele.selectSingleNode(L"adid").text();*/
+			adid = dw_list.GetItemString(row, L"adid");
+			parentid = dw_list.GetItemString(row, L"parentid");
 
-			xaserverarg arg = new xaserverarg;
-			arg.setNativePointer(arg.CreateInstance());
-			/*string parentid = "", adid = "";//父级id
+			xaserverarg arg;
+			
+			/*xstring parentid = L"", adid = L"";//父级id
 
-			if(!e.getAttribute("name")){
+			if(!e.getAttribute(L"name")){
 
-				parentid = e.selectSingleNode("adid").text;
-				adid = e.selectSingleNode("adid").text;
+				parentid = e.selectSingleNode(L"adid").text();
+				adid = e.selectSingleNode(L"adid").text();
 			}*/
-			arg.AddArg("parentid", parentid);
-			arg.AddArg("adid", adid);
-			OpenWindow("dev:xpage[AdministrativeDepartmentFolder.vx]", cast(arg as int));
+			arg.AddArg(L"parentid", parentid);
+			arg.AddArg(L"adid", adid);
+			OpenWindow(L"dev:xpage[AdministrativeDepartmentFolder.vx]",arg);
 			return 1;
 		}
 
@@ -227,32 +235,32 @@
 			if(hItem <=0) return 1;
 
 			int 	hCursor = xutil::SetCursorWait();
-			msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
-			string name = e.getAttribute("name");
-			string adid = "";
-			if(name != "部门结构")
-				adid = e.selectSingleNode("adid").text;*/
+			KXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as KXMLDOMElement);
+			xstring name = e.getAttribute(L"name");
+			xstring adid = L"";
+			if(name != L"部门结构")
+				adid = e.selectSingleNode(L"adid").text();*/
 
 			int row = dw_list.GetRow();
 			if (row < 1)
 				return 1;
-			string adid = "";
-			/*msxml::IXMLDOMElement ele = dw_list.GetRowElement(row);
-			adid = ele.selectSingleNode("adid").text;*/
-			adid = dw_list.GetItemString(row, "adid");
+			xstring adid = L"";
+			/*KXMLDOMElement ele = dw_list.GetRowElement(row);
+			adid = ele.selectSingleNode(L"adid").text();*/
+			adid = dw_list.GetItemString(row, L"adid");
 
 			xml x = new xml;
-			x.setNativePointer(xml::CreateInstance());
-			xaserverarg arg = new xaserverarg;
-			arg.setNativePointer(arg.CreateInstance());
-			arg.AddArg("adid", adid);
-			if (getUrl("/sale/data/AdministrativeDepartment/ad_delete", arg.GetString(), x) != 1)
+			
+			xaserverarg arg;
+			
+			arg.AddArg(L"adid", adid);
+			if (getUrl(L"/sale/data/AdministrativeDepartment/ad_delete", arg.GetString(), x) != 1)
 			{
-				string error = x.GetXmlDoc().text;
-				alert("err:" + error);
+				xstring error = x.text();
+				alert(L"err:" + error);
 				return 1;
 			}
-			alert(x.GetXmlDoc().text);
+			alert(x.text());
 			dw_list.DeleteRow(row);
 			return 1;
 		}
@@ -264,38 +272,38 @@
 		}
 
 		//命令发布函数
-		int OnCmdDispatch(string comdid)
+		int OnCmdDispatch(xstring comdid)
 		{
-			if (comdid == "xmUpdate")
+			if (comdid == L"xmUpdate")
 				return OnUpdate();
-			else if (comdid == "xmAdd")
+			else if (comdid == L"xmAdd")
 				return OnAdd();
-			else if (comdid == "xmDelete")
+			else if (comdid == L"xmDelete")
 				return OnDelete();
-			else if (comdid == "xmRefresh")
+			else if (comdid == L"xmRefresh")
 				return OnRefresh();
 			return 0;
 		}
 
 		//命令处理事件
-		int OnXCommand(ref TXCommandEvent evt, int param)
+		int OnXCommand(TEvent* evt, LPARAM p)
 		{
-			return OnCmdDispatch(evt.pStrID);
+			return OnCmdDispatch(evt->xcommand.pStrID);
 		}
 
 		int OnAttachEvent()
 		{
-			AttachEvent("tv_folder", "TVN_SELCHANGED", OnTreeSelChanged); //树选择
-			AttachEvent("tv_folder", "TVN_ITEMEXPANDING", OnTreeExpanding); //树展开
+			AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&ViewAdministrativeDepartmentList::OnTreeSelChanged); //树选择
+			AttachEvent(L"tv_folder", L"TVN_ITEMEXPANDING", (FEvent)&ViewAdministrativeDepartmentList::OnTreeExpanding); //树展开
 
-			//AttachEvent("dw_list","DWV_ROWFOCUSCHANGED",OnRowChanged);
-			//AttachEvent("cbx_1","CBN_SELCHANGE",OnSelectDdlb);
-			//AttachEvent("cbx_datashow","CBN_SELCHANGE",OnSelectDataShowDdlb);
+			//AttachEvent(L"dw_list",L"DWV_ROWFOCUSCHANGED",OnRowChanged);
+			//AttachEvent(L"cbx_1",L"CBN_SELCHANGE",OnSelectDdlb);
+			//AttachEvent(L"cbx_datashow",L"CBN_SELCHANGE",OnSelectDataShowDdlb);
 
 			//绑定工具条点击事件
-			AttachEvent("WM_XCOMMAND", OnXCommand);
+			AttachEvent(L"WM_XCOMMAND", (FEvent)&ViewAdministrativeDepartmentList::OnXCommand);
 			//获取焦点事件,用于重置工具条
-			AttachEvent("WM_SETFOCUS", OnSetFocus);
+			AttachEvent(L"WM_SETFOCUS", (FEvent)&ViewAdministrativeDepartmentList::OnSetFocus);
 		}
 
 		/*
@@ -303,13 +311,13 @@
 		int  OnRetrieve()
 		{
 			xml x = new xml;
-			x.setNativePointer(xml::CreateInstance());
-			xaserverarg arg = new xaserverarg;
-			arg.setNativePointer(arg.CreateInstance());
-			//arg.AddArg("xxx","xxx");
+			
+			xaserverarg arg;
+			
+			//arg.AddArg(L"xxx",L"xxx");
 			if (getUrl(myDataUrl,arg.GetString(),x)!=1)
 			{
-				trace(x.GetXmlDoc().text);
+				trace(x.text());
 				return -1;
 			}else
 			{
@@ -321,20 +329,20 @@
 		*/
 
 		//展开子文件
-		int  ExpandChildFolder(int hItem, msxml::IXMLDOMElement pElement)
+		int  ExpandChildFolder(HTREEITEM hItem, KXMLDOMElement pElement)
 		{
-			msxml::IXMLDOMNodeList nlist = pElement.SelectNodes("Item");
-			int len = nlist.length;
+			KXMLDOMNodeList nlist = pElement.selectNodes(L"Item");
+			int len = nlist.length();
 			for (int i = 0; i < len; i++)
 			{
-				msxml::IXMLDOMElement e = nlist.item(i);
-				string name = e.getAttribute("name");
-				string sImage = e.getAttribute("image");
-				string child = e.getAttribute("child");
+				KXMLDOMElement& e = *new KXMLDOMElement(nlist.item(i));
+				xstring name = e.getAttribute(L"name");
+				xstring sImage = e.getAttribute(L"image");
+				xstring child = e.getAttribute(L"child");
 				int image = 18;
 				if (sImage) image = sImage.toInt();
-				int h = tv_folder.InsertChildItem(tv_folder.GetId(), hItem, name, trust(e as int), image);
-				if (child != "no")
+				HTREEITEM h = tv_folder.InsertChildItem(hItem, name, (LPARAM) & e, image);
+				if (child != L"no")
 					tv_folder.SetItemChild(h, 1);
 				ExpandChildFolder(h, e);
 			}
@@ -344,8 +352,8 @@
 		//初始化文件夹
 		int  InitialFolder()
 		{
-			msxml::IXMLDOMElement xframeElement = GetElement();
-			msxml::IXMLDOMElement e = xframeElement.selectSingleNode("//xtree[@name='tv_folder']/initial");
+			KXMLDOMElement xframeElement = GetElement();
+			KXMLDOMElement e = xframeElement.selectSingleNode(L"//xtree[@name='tv_folder']/initial");
 			if (e)
 				ExpandChildFolder(0, e);
 			return 1;
@@ -353,14 +361,14 @@
 
 		int onload()
 		{
-			dw_list = GetControl("dw_list");
-			dw_list.openUrl("/sale/view/AdministrativeDepartment/template/adlist");
-			dw_list.SetColumnState("adid", false);
-			dw_list.SetColumnState("parentid", false);
+			dw_list = GetControl(L"dw_list");
+			dw_list.openUrl(L"/sale/view/AdministrativeDepartment/template/adlist");
+			dw_list.SetColumnState(L"adid", false);
+			dw_list.SetColumnState(L"parentid", false);
 
-			myDataUrl = "/sale/data/AdministrativeDepartment/ad_list";
-			urlTree = "/sale/data/AdministrativeDepartment/ad_sidelist";
-			tv_folder = GetControl("tv_folder");
+			myDataUrl = L"/sale/data/AdministrativeDepartment/ad_list";
+			urlTree = L"/sale/data/AdministrativeDepartment/ad_sidelist";
+			tv_folder = GetControl(L"tv_folder");
 			tv_folder.SetLineAtRoot(true);
 			InitialFolder();
 			OnAttachEvent();
@@ -374,5 +382,4 @@
 
 			return 1;
 		}
-	};
-]
\ No newline at end of file
+	};
\ No newline at end of file

--
Gitblit v1.9.3