From da2dab05bfc057f9a31599710cf52fc523092055 Mon Sep 17 00:00:00 2001
From: xj qian <qianxj15@sina.com>
Date: 星期三, 26 六月 2024 15:21:37 +0800
Subject: [PATCH] update arg

---
 jrj/xframe/vbusiness/vframe/frame.vframe.vbusiness.hpp   |    4 +
 jrj/xframe/vbusiness/vframe/maint.vframe.vbusiness.hpp   |   33 ++++++-----
 jrj/project/business/Customer3.maint.cpp                 |   33 ++++-------
 jrj/xframe/vbusiness/vframe/listwin.vframe.vbusiness.hpp |    8 +-
 jrj/project/business/Quote3.maint.cpp                    |    0 
 jrj/project/vindexmenu.cpp                               |    6 +
 jrj/xframe/wobject/xaserverarg.hpp                       |    7 ++
 jrj/xframe/wobject/xwin.hpp                              |   20 ++++++
 jrj/project/business/SO3.maint.cpp                       |   18 +++---
 9 files changed, 74 insertions(+), 55 deletions(-)

diff --git a/jrj/project/business/Customer3.maint.cpp b/jrj/project/business/Customer3.maint.cpp
index 3be41ae..b18b5c3 100644
--- a/jrj/project/business/Customer3.maint.cpp
+++ b/jrj/project/business/Customer3.maint.cpp
@@ -970,18 +970,13 @@
 			
 		if(value == L"人员")
 		{
-			xaserverarg& arg2 =* new xaserverarg;
-				
+			xaserverarg arg = GetArg();
+			OpenWindow(L"dev:xpage[UserGroupPersonSelect.vx]", arg);
 			
-			xaserverarg& parg2 = *(xaserverarg*)GetParam();
-
-			OpenWindow(L"dev:xpage[UserGroupPersonSelect.vx]", (LPARAM)&arg2);
-			
-			if(arg2.GetArgString(L"comdid")==L"xmOk")
+			if(arg.GetArgString(L"comdid")==L"xmOk")
 			{
-				xstring data = arg2.GetArgString(L"data");
+				xstring data = arg.GetArgString(L"data");
 				xml x2;
-				
 				x2.loadXML(data);
 				KXMLDOMNodeList nodes = x2.selectNodes(L"/root/item");
 				trace(x2.xml());
@@ -1020,7 +1015,7 @@
 		xstring value = hdr->data;
 		int row = hdr->row;
 		//alert(value);
-		xaserverarg& arg=*new xaserverarg;
+		xaserverarg arg;
 						
 		
 		if(value == L"附件上传")
@@ -1033,20 +1028,18 @@
 			
 			arg.AddArg(L"entityid",dw.GetGuid(dw.GetRow()));
 			
-			OpenWindow(L"dev:xpage[maint.Document.Customer.v3.vx]",(LPARAM)&arg);
+			OpenWindow(L"dev:xpage[maint.Document.Customer.v3.vx]",arg);
 			return 1;
 		}
 			
 		if(value == L"人员")
 		{
-			xaserverarg& arg2 = *new xaserverarg;
+			xaserverarg arg;
+			OpenWindow(L"dev:xpage[UserGroupPersonSelectEx.vx]", arg);
 			
-			xaserverarg parg2 = *(xaserverarg*)GetParam();
-			OpenWindow(L"dev:xpage[UserGroupPersonSelectEx.vx]", (LPARAM)&arg2);
-			
-			if(arg2.GetArgString(L"comdid")==L"xmOk")
+			if(arg.GetArgString(L"comdid")==L"xmOk")
 			{
-				xstring data = arg2.GetArgString(L"data");
+				xstring data = arg.GetArgString(L"data");
 				xml x2;
 				
 				x2.loadXML(data);
@@ -1216,11 +1209,9 @@
 		
 		
 		
-		if (GetParam())
+		if (GetWinParam())
 		{
-			xaserverarg& args = *(xaserverarg * )GetParam();
-			
-
+			xaserverarg args = GetArg();
 			if (args.GetArgString(L"PartyID") != L"")
 			{
 				CustomerBase(m_EntityID);
diff --git a/jrj/project/business/Quote3.maint.cpp b/jrj/project/business/Quote3.maint.cpp
index 49f28d5..39cd6ed 100644
--- a/jrj/project/business/Quote3.maint.cpp
+++ b/jrj/project/business/Quote3.maint.cpp
Binary files differ
diff --git a/jrj/project/business/SO3.maint.cpp b/jrj/project/business/SO3.maint.cpp
index 53b8fa6..0a1efb7 100644
--- a/jrj/project/business/SO3.maint.cpp
+++ b/jrj/project/business/SO3.maint.cpp
@@ -1001,12 +1001,12 @@
 		}*/
 		xstring SONo;
 		xstring CustomerID;
-		xaserverarg* arg = 0;
-		if (GetParam())
+		xaserverarg arg;
+		if (GetWinParam())
 		{
-			arg = (xaserverarg *)GetParam();
-			SONo = arg->GetArgString(L"SONo");
-			if (SONo == L"") SONo = arg->GetArgString(L"EntityNo");
+			arg = GetArg();
+			SONo = arg.GetArgString(L"SONo");
+			if (SONo == L"") SONo = arg.GetArgString(L"EntityNo");
 		}
 		if (SONo != L"")
 		{
@@ -1046,8 +1046,8 @@
 
 			if (CustomerID != L"")
 			{
-				dw_base.ItemChangeTo(1, L"CustomerID", arg->GetArgString(L"CustomerID"));
-				dw_base.SetItemDisplayString(1, L"CustomerID", arg->GetArgString(L"CustomerName"));
+				dw_base.ItemChangeTo(1, L"CustomerID", arg.GetArgString(L"CustomerID"));
+				dw_base.SetItemDisplayString(1, L"CustomerID", arg.GetArgString(L"CustomerName"));
 				xstring dwname = L"dw_base";
 				xstring colname = L"CustomerID";
 				xstring value = CustomerID;
@@ -1065,9 +1065,9 @@
 	{
 		SetAgent();
 
-		if (GetParam())
+		if (GetWinParam())
 		{
-			xaserverarg& arg = *(xaserverarg * )GetParam();
+			xaserverarg arg = GetArg();
 			HCURSOR hCursor = xutil::SetCursorWait();
 			xstring SONo = arg.GetArgString(L"SONo");
 			if (SONo == L"") SONo = arg.GetArgString(L"EntityNo");
diff --git a/jrj/project/vindexmenu.cpp b/jrj/project/vindexmenu.cpp
index 6e711c9..0f135ac 100644
--- a/jrj/project/vindexmenu.cpp
+++ b/jrj/project/vindexmenu.cpp
@@ -458,9 +458,9 @@
 
 	int OnInitial()
 	{			
-		if(GetParam())
+		if(GetWinParam())
 		{
-			xaserverarg& arg = *(xaserverarg*)GetParam();
+			xaserverarg arg = GetArg();
 			m_nHwnd = (HWND)arg.GetParam(L"hwnd");
 			cbx_menu = (void*)arg.GetParam(L"memuId");
 			cbx_tab = (void*)arg.GetParam(L"tabNo");
@@ -475,6 +475,8 @@
 		
 	int onload()
 	{
+		SetArg();
+
 		m_bCanDestroy = 1;		
 		
 		tv_menu1 = GetControl(L"menu1");
diff --git a/jrj/xframe/vbusiness/vframe/frame.vframe.vbusiness.hpp b/jrj/xframe/vbusiness/vframe/frame.vframe.vbusiness.hpp
index fb87ba0..e7e2c89 100644
--- a/jrj/xframe/vbusiness/vframe/frame.vframe.vbusiness.hpp
+++ b/jrj/xframe/vbusiness/vframe/frame.vframe.vbusiness.hpp
@@ -6,7 +6,9 @@
 class xframe : public xwin
 {
 public:
-	xframe(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {}
+	xframe(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {
+		this->SetArg(this->GetWinParam());
+	}
 
 	static int getUrl(string url1, string para, KXMLDOMDocument x)
 	{
diff --git a/jrj/xframe/vbusiness/vframe/listwin.vframe.vbusiness.hpp b/jrj/xframe/vbusiness/vframe/listwin.vframe.vbusiness.hpp
index 899c8d3..828153e 100644
--- a/jrj/xframe/vbusiness/vframe/listwin.vframe.vbusiness.hpp
+++ b/jrj/xframe/vbusiness/vframe/listwin.vframe.vbusiness.hpp
@@ -147,14 +147,14 @@
 
 	int getURLParam()
 	{
-		if (GetParam())
+		if (GetWinParam())
 		{
-			xaserverarg* arg = (xaserverarg * )GetParam();
-			xstring config = arg->GetArgString(L"config");
+			xaserverarg arg = GetArg();
+			xstring config = arg.GetArgString(L"config");
 			KXMLDOMDocument x;
 			if (config == L"")
 			{
-				string configXml = arg->GetArgString(L"configxml");
+				string configXml = arg.GetArgString(L"configxml");
 				if (configXml == L"") return 1;
 				x.loadXML(configXml);
 			}
diff --git a/jrj/xframe/vbusiness/vframe/maint.vframe.vbusiness.hpp b/jrj/xframe/vbusiness/vframe/maint.vframe.vbusiness.hpp
index b912dc5..18eb1d6 100644
--- a/jrj/xframe/vbusiness/vframe/maint.vframe.vbusiness.hpp
+++ b/jrj/xframe/vbusiness/vframe/maint.vframe.vbusiness.hpp
@@ -66,23 +66,26 @@
 
 	int getURLParam()
 	{
-		//xpage xp = GetXPage();
-		//xstring aurl = xp.GetWkUrl();
-		xaserverarg* arg = (xaserverarg *)GetParam();
-		m_EntityID = arg->GetArgString(L"EntityID");
-		xstring config = arg->GetArgString(L"config");
-		KXMLDOMDocument x;
-		if (config == L"")
+		if (GetWinParam())
 		{
-			string configXml = arg->GetArgString(L"configxml");
-			if (configXml == L"") return 1;
-			x.loadXML(configXml);
+			//xpage xp = GetXPage();
+			//xstring aurl = xp.GetWkUrl();
+			xaserverarg arg = GetArg();
+			m_EntityID = arg.GetArgString(L"EntityID");
+			xstring config = arg.GetArgString(L"config");
+			KXMLDOMDocument x;
+			if (config == L"")
+			{
+				string configXml = arg.GetArgString(L"configxml");
+				if (configXml == L"") return 1;
+				x.loadXML(configXml);
+			}
+			else
+			{
+				getUrl(config, L"", x);
+			}
+			m_configDoc = x;
 		}
-		else
-		{
-			getUrl(config, L"", x);
-		}
-		m_configDoc = x;
 
 		return 1;
 	}
diff --git a/jrj/xframe/wobject/xaserverarg.hpp b/jrj/xframe/wobject/xaserverarg.hpp
index fa73996..d7a6fdf 100644
--- a/jrj/xframe/wobject/xaserverarg.hpp
+++ b/jrj/xframe/wobject/xaserverarg.hpp
@@ -39,7 +39,7 @@
 	xaserverarg(kxaserverarg* impl) :xnative(impl) {}
 	xaserverarg():xnative(Hxsoft::XFrame::IXAServerArg::CreateInstance()){}
 	xaserverarg(xaserverarg& rhs) {
-		((kxaserverarg*)rhs.getNativePointer())->AddRef_();
+		if(rhs.GetKXAServerArg()) rhs.GetKXAServerArg()->AddRef_();
 		this->setNativePointer(rhs.GetNativePtr());
 	}
 	xaserverarg(xaserverarg&& rhs) {
@@ -69,6 +69,11 @@
 		return *this;
 	}
 
+	operator LPARAM()
+	{
+		return (LPARAM)this;
+	}
+
 public:
 	/*int AddArg(string argname,double val,string typ=NULL)// alias "?AddArg@IXAServerArg@XFrame@Hxsoft@@QAEHPB_WNO@Z";
 	{
diff --git a/jrj/xframe/wobject/xwin.hpp b/jrj/xframe/wobject/xwin.hpp
index 099e1b7..a1afa9b 100644
--- a/jrj/xframe/wobject/xwin.hpp
+++ b/jrj/xframe/wobject/xwin.hpp
@@ -14,6 +14,22 @@
 class xwin: public xview
 {
 public:
+	xaserverarg m_xaserverarg;
+public:
+	xaserverarg& GetArg() { return m_xaserverarg; }
+	void SetArg(LPARAM p)
+	{
+		m_xaserverarg = *(xaserverarg*)p;
+	}
+	void SetArg(xaserverarg & p)
+	{
+		m_xaserverarg = p;
+	}
+	void SetArg()
+	{
+		SetArg(GetWinParam());
+	}
+public:
 	xwin(void * impl, HWND hWnd):xview(impl,hWnd){}
 public:
 	kwin* getKWin()
@@ -96,11 +112,11 @@
 		return xnode(getKWin()->SetAgentNodeContent((knode*)node.getNativePointer(), (knode*)val.getNativePointer()));
 	}
 
-	LPARAM GetParam()
+	LPARAM GetWinParam()
 	{
 		return (LPARAM)getKWin()->GetParam();
 	}
-	bool  SetParam(LPARAM pParam)
+	bool  SetWinParam(LPARAM pParam)
 	{
 		return getKWin()->SetParam((void*)pParam);
 	}

--
Gitblit v1.9.3