xj qian
2024-07-17 0b8444d0eef50d1ee4e0d0b51e174fa5b447d802
jrj/project/vindexform.cpp
@@ -13,7 +13,7 @@
using xml = KXMLDOMDocument;
class __declspec(dllexport) vindexform: public xframe
class __declspec(dllexport) vindexform: public xwin
{
public:
   string m_Assignment;
@@ -36,7 +36,7 @@
   int menuShow;
   HWND m_npHwnd2; //openwindow
   int m_startwin;
   HWND m_startwin;
public:
   vindexform(void* implPtr,HWND hWnd):xwin(implPtr,hWnd){}
@@ -99,7 +99,58 @@
      alert(L"clicked");
      return 1;
   }
   int OnMenu(HWND hMenu)
   {
      if (!hMenu)
      {
         HWND hw = m_hMenu;
         bool f = IsWindow(hw);
         if (hw == 0 && f <= 0)
         {
            xaserverarg* arg = new xaserverarg();
            HWND hWnd = GetHWND();
            arg->SetParam(L"hwnd", (LPARAM)hWnd);
            arg->SetParam(L"memuId", (LPARAM)cbx_menu.getNativePointer());
            arg->SetParam(L"tabNo", (LPARAM)cbx_tab.getNativePointer());
            arg->SetParam(L"panelNo", (LPARAM)cbx_panelNo.getNativePointer());
            arg->SetParam(L"panelName", (LPARAM)cbx_panelName.getNativePointer());
            xwin* pwin = OpenWindow(L"dev:xpage[vindexmenu.vx]", (LPARAM)arg);
            m_hMenu = pwin->GetHWND();
            hw = m_hMenu;
            //return 1;
         }
         HWND HWND_TOPMOST = (HWND)-1;
         HWND HWND_NOTOPMOST = (HWND)-2;
         int SWP_NOSIZE = 0x0001;
         int SWP_NOMOVE = 0x0002;
         int SWP_SHOWWINDOW = 0x0040;
         SetWindowPos(hw, HWND_TOPMOST, -1000, -1000, 0, 0, SWP_NOSIZE | SWP_SHOWWINDOW);
      }
      else
      {
         m_hMenu = hMenu;
      }
      xrect xr;
      xcontrol xc = GetControl(L"xmMenu");
      GetWindowRect(xc.GetHWND(), xr);
      int l = xr.left;
      int b = xr.bottom;
      xrect r;
      xc = GetControl(L"split");
      GetWindowRect(xc.GetHWND(), r);
      int t2 = r.top;
      int b2 = r.bottom;
      MoveWindow(m_hMenu, l - 7, b, 220, b2 - t2, true);
      return 1;
   }
   int OnMenu1(xstring hMenu)
   {
      if (!hMenu)
      {
@@ -129,7 +180,7 @@
      }
      else
      {
         m_hMenu = hMenu;
         m_hMenu = (HWND)hMenu.toInt64();
      }
      xrect xr;
@@ -322,10 +373,10 @@
            else
               AppendMenu(m, MF_STRING, i + 1, name);
         }
         xrect xr;
         RECT xr;
         xpoint pt;
         GetCursorPos(pt);
         int res = TrackPopupMenu(m, TPM_RIGHTBUTTON | TPM_RETURNCMD, pt.x, pt.y, 0, GetHWND(), xr);
         int res = TrackPopupMenu(m, TPM_RIGHTBUTTON | TPM_RETURNCMD, pt.x, pt.y, 0, GetHWND(), &xr);
         if (res == 0) return 0;
         KXMLDOMElement ele = li.item(res - 1);
         xstring sInfoEx = ele.selectSingleNode(L"AssignmentID").text();
@@ -361,10 +412,10 @@
         else
            AppendMenu(m, MF_STRING, i + 1, str);
      }
      xrect xr;
      RECT xr;
      xpoint pt;
      GetCursorPos(pt);
      int res = TrackPopupMenu(m, TPM_RIGHTBUTTON | TPM_RETURNCMD, pt.x, pt.y, 0, GetHWND(), xr);
      int res = TrackPopupMenu(m, TPM_RIGHTBUTTON | TPM_RETURNCMD, pt.x, pt.y, 0, GetHWND(), &xr);
      if (res == 0) return 0;
      int nSheet = mainsheet.GetSheetIndex();
      if (nSheet == (res - 1)) return 0;
@@ -400,6 +451,8 @@
      }
      return 1;
   }
#if 0
   int OnOpen(xstring pa)
   {
      //xwin::SendMessage(m_npHwnd2, 0x401, pa, 0);
@@ -411,7 +464,6 @@
      }*/
      xaserverarg arg ;
      xstring isnew = arg.GetArgString(L"_isNewModule");
      xstring vx = arg.GetArgString(L"_ModuelPage");
      if (isnew == L"Y")
@@ -422,9 +474,10 @@
            openUrl(vx, p);
         return 1;
      }
      OpenWindow(L"dev:xpage[vindexforold.vx]", p);
      //OpenWindow(L"dev:xpage[vindexforold.vx]", p);
      return 1;
   }
   int OnOpenForOld(xstring pa)
   {
      m_npHwnd2 = pa.toInt();
@@ -444,7 +497,7 @@
      ShowWindow(m_npHwnd2, SW_MAXIMIZE);
      return 1;
   }
#endif
   int OnHelp()
   {
      OpenWindow(L"dev:xpage[trade.help3.vx]");
@@ -458,16 +511,16 @@
      if (comdid ==L"xmAssignment") OnChangeLogin();
      else if (comdid == L"xmAllCaption") OnAllCaption();
      else if (comdid == L"xmMenu") OnMenu(L"");
      else if (comdid == L"xmMenu") OnMenu(0);
      else if (comdid == L"xmHelp") return OnHelp();
      else if (comdid.find(L"menuid:", 0) >= 0) OnMenu(comdid.mid(comdid.find(L":", 0) + 1, comdid.length()));
      //else if (comdid.find(L"menuid:", 0) >= 0) OnMenu(comdid.mid(comdid.find(L":", 0) + 1, comdid.length()));
      else if (comdid.find(L"menuAgent:", 0) >= 0) OnMenuAgent(comdid.mid(comdid.find(L":", 0) + 1, comdid.length()));
      else if (comdid.find(L"changesheet:", 0) >= 0) OnChangeSheet(comdid.mid(comdid.find(L":", 0) + 1, comdid.length()));
      else if (comdid.find(L"openforoldid:", 0) >= 0) OnOpenForOld(comdid.mid(comdid.find(L":", 0) + 1, comdid.length()));
      else if (comdid.find(L"open:", 0) >= 0) OnOpen(comdid.mid(comdid.find(L":", 0) + 1, comdid.length()));
      //else if (comdid.find(L"openforoldid:", 0) >= 0) OnOpenForOld(comdid.mid(comdid.find(L":", 0) + 1, comdid.length()));
      //else if (comdid.find(L"open:", 0) >= 0) OnOpen(comdid.mid(comdid.find(L":", 0) + 1, comdid.length()));
      else if (comdid == L"xmRefreshTask")
      {
         SendMessage(m_startwin, 0x401, comdid, 0);
         SendMessage(m_startwin, 0x401, (WPARAM)comdid.c_str(), 0);
         return 1;
      }
@@ -482,7 +535,7 @@
   int OnAttachListon()
   {
      AttachEvent(L"WM_XCOMMAND",(FEvent)&vindexform::OnXCommand,this);
      //AttachEvent(L"mdilayer", L"LYSN_SELECTEDSHEET",OnSheetChanged);
      //AttachEvent(L"mdilayer", L"LYSN_SELECTEDSHEET", (FEvent)&vindexform::OnSheetChanged);
      ////AttachEvent(L"mdilayer", L"LYSN_CLOSESHEET",OnCloseSheet);   
      return 1;
   }
@@ -519,8 +572,8 @@
      if (cursheet != mainsheet.GetSheetIndex())
      {
         int hPicture = FindWindowEx(0, 0, L"XFrameWndClass", L"__ProductPicture");
         if (hPicture > 0)
         HWND hPicture = FindWindowEx(0, 0, L"XFrameWndClass", L"__ProductPicture");
         if (hPicture)
         {
            int WM_CLOSE = 0x0010;
            PostMessage(hPicture, WM_CLOSE, 0, 0);