| | |
| | | #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"); |
| | | } |
| | |
| | | xnode SetAgentNode(xnode node,xnode val) |
| | | { |
| | | 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 -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(); |
| | | } |
| | | }; |