LiFan
2024-07-05 9e409d6e1e2cb1d35cf26f3fd2bd9048c624280f
jrj/xframe/wobject/xwin.hpp
@@ -11,8 +11,34 @@
using kcontrol = Hxsoft::XFrame::IXFControl;
using knode = Hxsoft::XFrame::IXNode;
#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:
   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()
   {
      if(GetWinParam()) SetArg(GetWinParam());
   }
public:
   xwin(void * impl, HWND hWnd):xview(impl,hWnd){}
public:
@@ -53,16 +79,16 @@
   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");
   }
@@ -96,14 +122,20 @@
      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);
   }
   xstring GetParamString()
   {
      if (!GetWinParam())return xstring();
      return xstring(GetWinParam(), true);
   }
   LPARAM GetFrameParam()
   {
      return (LPARAM)getKWin()->GetFrameParam();