xj qian
2024-07-22 62a635fd585aa1bafb83c2aea1ac29a508a77ae2
jrj/xframe/wobject/xwin.hpp
@@ -16,7 +16,7 @@
public:\
   ty(void* impl,HWND hWnd):pty(impl,hWnd){}\
public:\
   ty * CreateInstance(void* impl,void* hWnd)\
   static ty * CreateInstance(void* impl,void* hWnd)\
   {\
      return new ty(impl,(HWND)hWnd);\
   }
@@ -122,6 +122,11 @@
      return xnode(getKWin()->SetAgentNodeContent((knode*)node.getNativePointer(), (knode*)val.getNativePointer()));
   }
   Hxsoft::XFrame::IXPage* GetXPage()
   {
      return getKWin()->GetXPage();
   }
   LPARAM GetWinParam()
   {
      return (LPARAM)getKWin()->GetParam();
@@ -185,6 +190,41 @@
      return -1;
   }
   int openUrl(xstring aurl, LPARAM para)
   {
      KXMLDOMDocument x;
      xurl::get(GetServerUrl(), aurl, L"", x);
      KXMLDOMNode n = x.selectSingleNode(L"//resource/@src");
      if (n)
      {
         string xq = n.text();
         OpenWindow(xq, (LPARAM)para);
         return 1;
      }
      else
      {
         n = x.selectSingleNode(L"//resource[@vface!='' and @view!='']");
         if (n)
         {
            xstring vface = n.selectSingleNode(L"@vface").text();
            xstring view = n.selectSingleNode(L"@view").text();
            xstring config = n.selectSingleNode(L"@config").text();
            if (vface == L"." || vface == L"")
            {
               string v = n.selectSingleNode(L"@url").text();
               xstring burl = xstring(aurl).mid(0, xstring(aurl).find(v, 0));
               return openUrl(burl + view, para);
            }
            else
               return openUrl(vface + L"/" + view, para);
         }
      }
      return -1;
   }
   int CloseWindow()
   {
      return getKWin()->CloseWindow();