|  |  | 
 |  |  | #include "win32/win.hpp" | 
 |  |  | #include "wobject/xnode.hpp" | 
 |  |  | #include "wobject/xurl.hpp" | 
 |  |  | #include "wobject/xpage.hpp" | 
 |  |  | #include "wobject/xnode.hpp" | 
 |  |  |  | 
 |  |  | using kwin=Hxsoft::XFrame::IXFWin; | 
 |  |  | using kcontrol = Hxsoft::XFrame::IXFControl; | 
 |  |  | using knode = Hxsoft::XFrame::IXNode; | 
 |  |  |  | 
 |  |  | #define export __declspec(dllexport)  | 
 |  |  | #define DeclWinObject_(ty,pty) class __declspec(dllexport) ty :  public pty | 
 |  |  | #define CreateWinObject_(ty,pty) \ | 
 |  |  | public:\ | 
 |  |  |    ty(void* impl,HWND hWnd):pty(impl,hWnd){}\ | 
 |  |  | public:\ | 
 |  |  |    static ty * CreateInstance(void* impl,void* hWnd)\ | 
 |  |  |    {\ | 
 |  |  |       return new ty(impl,(HWND)hWnd);\ | 
 |  |  |    } | 
 |  |  |  | 
 |  |  | class xwin: public xview | 
 |  |  | { | 
 |  |  | 
 |  |  |    } | 
 |  |  | public: | 
 |  |  |    xwin(void * impl, HWND hWnd):xview(impl,hWnd){} | 
 |  |  |    xwin(kwin* kw) :xview(kw ? kw : nullptr, kw ? kw->GetHWND() : 0) {} | 
 |  |  |    const xwin& operator =(kwin* kw) { this->SetNativePtr(kw ? kw : nullptr); this->SetHandle(kw ? kw->GetHWND() : 0); return *this; } | 
 |  |  | public: | 
 |  |  |    kwin* getKWin() | 
 |  |  |    { | 
 |  |  | 
 |  |  |  | 
 |  |  |    xwin* OpenWindow(string url) | 
 |  |  |    { | 
 |  |  |       int WS_OVERLAPPEDWINDOW = 0x00cf0000 ; | 
 |  |  |       kwin* w = kwin::OpenWindow(GetServerUrl(),url,getKWin(),0/*param*/,0/*CmdWind*/,0,WS_OVERLAPPEDWINDOW,0); | 
 |  |  |       int WS_OVERLAPPEDWINDOW_ = 0x00cf0000 ; | 
 |  |  |       kwin* w = kwin::OpenWindow(GetServerUrl(),url,getKWin(),0/*param*/,0/*CmdWind*/,0,WS_OVERLAPPEDWINDOW_,0); | 
 |  |  |       if(!w) return 0; //response | 
 |  |  |       return (xwin*)GetPropW(w->GetHWND(),L"AttachObject"); | 
 |  |  |    } | 
 |  |  |     | 
 |  |  |    xwin* OpenWindow(string url,LPARAM p) | 
 |  |  |    { | 
 |  |  |       int WS_OVERLAPPEDWINDOW = 0x00cf0000; | 
 |  |  |       kwin* w= kwin::OpenWindow(GetServerUrl(),url,getKWin(),p,0/*CmdWind*/,0/*dwStyleEx*/,WS_OVERLAPPEDWINDOW,0); | 
 |  |  |       int WS_OVERLAPPEDWINDOW_ = 0x00cf0000; | 
 |  |  |       kwin* w= kwin::OpenWindow(GetServerUrl(),url,getKWin(),p,0/*CmdWind*/,0/*dwStyleEx*/,WS_OVERLAPPEDWINDOW_,0); | 
 |  |  |       if(!w) return 0; //response | 
 |  |  |       return (xwin*)GetPropW(w->GetHWND(),L"AttachObject"); | 
 |  |  |    } | 
 |  |  | 
 |  |  |       return xnode(getKWin()->SetAgentNodeContent((knode*)node.getNativePointer(), (knode*)val.getNativePointer())); | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    xnode GetXNode() | 
 |  |  |    { | 
 |  |  |       return xnode(getKWin()->GetXNode()); | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    Hxsoft::XFrame::IXPage* GetXPage() | 
 |  |  |    { | 
 |  |  |       return getKWin()->GetXPage(); | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    LPARAM GetWinParam() | 
 |  |  |    { | 
 |  |  |       return (LPARAM)getKWin()->GetParam(); | 
 |  |  | 
 |  |  |    { | 
 |  |  |       return getKWin()->SetParam((void*)pParam); | 
 |  |  |    } | 
 |  |  |    xstring GetParamString() | 
 |  |  |    { | 
 |  |  |       if (!GetWinParam())return xstring(); | 
 |  |  |       return xstring(GetWinParam(), true); | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    LPARAM GetFrameParam() | 
 |  |  |    { | 
 |  |  |       return (LPARAM)getKWin()->GetFrameParam(); | 
 |  |  | 
 |  |  |       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(); | 
 |  |  | 
 |  |  |    { | 
 |  |  |       return getKWin()->SwitchLayer((LPTSTR)pStrLayerSheet, (LPTSTR)pStrLayerFrame); | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    xpage GetChildXPage(string name) | 
 |  |  |    { | 
 |  |  |       xnode tnode = GetXNode().GetNodeByName(name); | 
 |  |  |       if (!tnode) return 0; | 
 |  |  |       return tnode.GetXPage(); | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    kwin* GetChildWin(string name) | 
 |  |  |    { | 
 |  |  |       xpage tpage = GetChildXPage(name); | 
 |  |  |       if (!tpage) return nullptr; | 
 |  |  |       return tpage.GetWin(); | 
 |  |  |    } | 
 |  |  | }; |