#pragma once
|
|
#include "xview.hpp"
|
#include "kobject/kcontrol.hpp"
|
#include "kobject/kwin.hpp"
|
#include "win32/win.hpp"
|
#include "wobject/xnode.hpp"
|
#include "wobject/xurl.hpp"
|
|
using kwin=Hxsoft::XFrame::IXFWin;
|
using kcontrol = Hxsoft::XFrame::IXFControl;
|
using knode = Hxsoft::XFrame::IXNode;
|
|
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()
|
{
|
return (Hxsoft::XFrame::IXFWin*)GetNativePtr();
|
}
|
public:
|
bool AttachEvent(const wchar_t* ctrlname,const wchar_t* msg, FEvent fnEvt, xwin* pthis)
|
{
|
return getKWin()->AttachEvent((LPTSTR)ctrlname,(LPTSTR)msg,*(Hxsoft::XFrame::FEvent*)&fnEvt,pthis);
|
}
|
|
bool AttachEvent(const wchar_t* msg, FEvent fnEvt, xwin* pthis)
|
{
|
return getKWin()->AttachEvent((LPTSTR)msg,*(Hxsoft::XFrame::FEvent*)&fnEvt,pthis);
|
}
|
|
bool AttachEvent(const wchar_t* ctrlname,const wchar_t* msg, FEvent fnEvt)
|
{
|
return getKWin()->AttachEvent((LPTSTR)ctrlname,(LPTSTR)msg,*(Hxsoft::XFrame::FEvent*)&fnEvt,this);
|
}
|
|
bool AttachEvent(const wchar_t* msg, FEvent fnEvt)
|
{
|
return getKWin()->AttachEvent((LPTSTR)msg,*(Hxsoft::XFrame::FEvent*)&fnEvt,this);
|
}
|
|
kcontrol* GetControl(const wchar_t* ctrlname)
|
{
|
return getKWin()->GetControl(ctrlname);
|
}
|
|
string GetServerUrl()
|
{
|
return getKWin()->GetServerUrl();
|
}
|
|
xwin* OpenWindow(string url)
|
{
|
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);
|
if(!w) return 0; //response
|
return (xwin*)GetPropW(w->GetHWND(),L"AttachObject");
|
}
|
xwin* OpenWindow(string url, xaserver& arg)
|
{
|
return OpenWindow(url, (LPARAM)&arg);
|
}
|
|
int trace(string info)
|
{
|
return 1;
|
}
|
|
knode * GetAgentNode(string path)
|
{
|
return getKWin()->GetAgentNode(path);
|
}
|
|
HWND GetHWND()
|
{
|
return getKWin()->GetHWND();
|
}
|
|
xnode SetAgentNode(xnode node, string val)
|
{
|
return xnode(getKWin()->SetAgentNodeContent((knode*)node.getNativePointer(), val));
|
}
|
|
xnode SetAgentNode(xnode node,xnode val)
|
{
|
return xnode(getKWin()->SetAgentNodeContent((knode*)node.getNativePointer(), (knode*)val.getNativePointer()));
|
}
|
|
LPARAM GetWinParam()
|
{
|
return (LPARAM)getKWin()->GetParam();
|
}
|
bool SetWinParam(LPARAM pParam)
|
{
|
return getKWin()->SetParam((void*)pParam);
|
}
|
LPARAM GetFrameParam()
|
{
|
return (LPARAM)getKWin()->GetFrameParam();
|
}
|
bool SetFrameParam(LPARAM pParam)
|
{
|
return getKWin()->SetFrameParam((void*)pParam);
|
}
|
int Redraw()
|
{
|
return getKWin()->Redraw();
|
}
|
|
int openUrl(xstring aurl, xaserverarg* 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
|
{
|
xaserverarg* arg = (xaserverarg*)para;
|
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 (config != L"")arg->AddArg(L"config", config);
|
|
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();
|
}
|
|
int openUrl(xstring aurl)
|
{
|
xaserverarg* arg = new xaserverarg();
|
return openUrl(aurl, arg);
|
}
|
|
KXMLDOMElement GetElement()
|
{
|
return getKWin()->GetElement();
|
}
|
|
xwin GetFrameWindow()
|
{
|
kwin* kw = getKWin()->GetFrameWindow();
|
return xwin(kw, kw->GetHWND());
|
}
|
|
void SwitchLayer(LPCTSTR pStrLayerSheet, LPCTSTR pStrLayerFrame)
|
{
|
return getKWin()->SwitchLayer((LPTSTR)pStrLayerSheet, (LPTSTR)pStrLayerFrame);
|
}
|
};
|