From f7f68dbf94f9da14863f155d88cdaec47352ba99 Mon Sep 17 00:00:00 2001 From: LiFan <2308045698@qq.com> Date: 星期三, 24 七月 2024 10:28:02 +0800 Subject: [PATCH] update --- jrj/project/vindexform.cpp | 197 ++++++++++++++++++++++++++++++++----------------- 1 files changed, 128 insertions(+), 69 deletions(-) diff --git a/jrj/project/vindexform.cpp b/jrj/project/vindexform.cpp index 1d2dbfd..199aa6b 100644 --- a/jrj/project/vindexform.cpp +++ b/jrj/project/vindexform.cpp @@ -9,32 +9,29 @@ #include "wobject/xaserver.hpp" #include "xcontrol/xcombobox.hpp" #include "xcontrol/xlayersheet.hpp" + #include "vbusiness/vframe/frame.vframe.vbusiness.hpp" + using xml = KXMLDOMDocument; class __declspec(dllexport) vindexform: public xwin { public: - string m_Assignment; + xstring m_Assignment; HWND m_hMenu; xlayersheet mainsheet; - xcombobox cbx_menu; - xcombobox cbx_panelName; - xcombobox cbx_panelNo; - xcombobox cbx_tab; + xcombobox cbx_menu; //椤电鏁扮粍 + xcombobox cbx_panelName; //椤电椤哄簭鏁扮粍 + xcombobox cbx_panelNo; //椤电鏁扮粍 + xcombobox cbx_tab; //椤电椤哄簭鏁扮粍 - xcombobox memuId; //椤电鏁扮粍 - xcombobox tabNo; //椤电椤哄簭鏁扮粍 - xcombobox panelNo; //椤电鏁扮粍 - xcombobox panelName; //椤电椤哄簭鏁扮粍 - HWND m_npHwnd; //鑿滃崟鏍戠獥鍙e彞鏌� HWND m_nHwnd; //鑿滃崟鏍戠獥鍙e彞鏌� int m_cursheet; //褰撳墠椤电 int menuShow; HWND m_npHwnd2; //openwindow - int m_startwin; + HWND m_startwin; public: vindexform(void* implPtr,HWND hWnd):xwin(implPtr,hWnd){} @@ -74,16 +71,19 @@ else { KXMLDOMElement e = x.documentElement(); - if (e.selectSingleNode(L"home")) + if (e) { - KXMLDOMElement e1 = e.selectSingleNode(L"home"); - e1.setAttribute(att, value); - } - else - { - KXMLDOMElement e2 = x.createElement(L"home"); - e2.setAttribute(att, value); - e.appendChild(e2); + if (e.selectSingleNode(L"home")) + { + KXMLDOMElement e1 = e.selectSingleNode(L"home"); + e1.setAttribute(att, value); + } + else + { + KXMLDOMElement e2 = x.createElement(L"home"); + e2.setAttribute(att, value); + e.appendChild(e2); + } } //alert(e.xml); } @@ -97,7 +97,57 @@ alert(L"clicked"); return 1; } + int OnMenu(HWND hMenu) + { + if (!hMenu) + { + HWND hw = m_hMenu; + bool bwin = hw ? IsWindow(hw):false; + if (!bwin) + { + xaserverarg* arg = new xaserverarg(); + HWND hWnd = GetHWND(); + arg->SetParam(L"hwnd", (LPARAM)hWnd); + arg->SetParam(L"cbx_menu", (LPARAM)cbx_menu.getNativePointer()); + arg->SetParam(L"cbx_tab", (LPARAM)cbx_tab.getNativePointer()); + arg->SetParam(L"cbx_panelNo", (LPARAM)cbx_panelNo.getNativePointer()); + arg->SetParam(L"cbx_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) { @@ -109,8 +159,8 @@ 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"cbx_menu", (LPARAM)cbx_menu.getNativePointer()); + arg->SetParam(L"cbx_tab", (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); @@ -127,7 +177,7 @@ } else { - m_hMenu = hMenu; + m_hMenu = (HWND)hMenu.toInt64(); } xrect xr; @@ -197,7 +247,7 @@ OnMenu(NULL); } menuShow = -1 - isshow; - xcombobox::SetCurSel(memuId.GetHWND(), menuShow); + cbx_menu.SetCurSel(menuShow); if (f != L"") setHomeConfig(L"menuposition", xstring(menuShow)); return 1; @@ -205,9 +255,16 @@ int ResetMenu() { + ::DestroyWindow(m_hMenu); + m_hMenu = 0; + return 1; + //if(m_nHwnd) xwin::CloseWindow(m_nHwnd); m_nHwnd = 0; + OnMenu(NULL); + OnMenuAgent(L""); +#if 0 menuShow = -1; xstring f = getHomeConfig(L"menuposition"); if (f == L"0") @@ -216,6 +273,7 @@ OnMenuAgent(L""); } + xaserverarg arg; HWND h = GetHWND(); @@ -223,23 +281,23 @@ arg.SetParam(L"hwnd", h); OpenWindow(L"dev:xpage[vindexforold.vx]", arg); - +#endif return 1; } int ReSetInfo() { - memuId.ResetContent(); - tabNo.ResetContent(); - panelNo.ResetContent(); - panelName.ResetContent(); + cbx_menu.ResetContent(); + cbx_tab.ResetContent(); + cbx_panelNo.ResetContent(); + cbx_panelName.ResetContent(); int hItem = mainsheet.GetSheetCount(); while (hItem > 1) { //mainsheet.DeleteSheet(hItem - 1); - SendMessage(GetHWND(), 0x401, L"xmSheetClose", 0); + SendMessage(GetHWND(), 0x401, (WPARAM)L"xmSheetClose", 0); hItem = mainsheet.GetSheetCount(); } @@ -265,10 +323,10 @@ if (m_Assignment == L"") alert(L"鑾峰彇鐢ㄦ埛鏁版嵁澶辫触锛岃閲嶆柊鐧诲綍!"); else - xaserver::SetUID(m_Assignment); + xaserver::SetUID((LPWSTR)m_Assignment.c_str(true)); - xcombobox::AddItem(memuId.GetHWND(), L"寮�濮�"); - xcombobox::AddItem(tabNo.GetHWND(), L"-1"); + xcombobox::AddItem(cbx_menu.GetHWND(), L"寮�濮�"); + xcombobox::AddItem(cbx_tab.GetHWND(), L"-1"); //OpenWindow(L"dev:xpage[vstart.vx]"); xcontrol xc = GetControl(L"statusbar0"); xc.SetText(L"姝e湪鍒濆鍖栫郴缁燂紝璇风◢鍊�...."); @@ -304,7 +362,7 @@ xstring sInfo = m_Assignment; if (s > 0) { - HMENU m = xwin::CreatePopupMenu(); + HMENU m = CreatePopupMenu(); int MF_STRING = 0x00000000; int MF_DISABLED = 0x00000002; int TPM_RIGHTBUTTON = 0x0002; @@ -316,14 +374,14 @@ xstring id = xitem.selectSingleNode(L"AssignmentID").text(); xstring name = xitem.selectSingleNode(L"PositionName").text(); if (sInfo == id) - xwin::AppendMenu(m, MF_STRING | MF_CHECKED, i + 1, name); + AppendMenu(m, MF_STRING | MF_CHECKED, i + 1, name); else - xwin::AppendMenu(m, MF_STRING, i + 1, name); + 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(); @@ -340,7 +398,7 @@ int OnAllCaption() { - int m = xwin::CreatePopupMenu(); + HMENU m = CreatePopupMenu(); int MF_STRING = 0x00000000; int MF_DISABLED = 0x00000002; int TPM_RIGHTBUTTON = 0x0002; @@ -348,21 +406,21 @@ int MF_CHECKED = 0x8; int k = mainsheet.GetSheetIndex(); - //int cs = xcombobox::GetCount(memuId.GetId()); + //int cs = xcombobox::GetCount(cbx_menu.GetId()); int cs = mainsheet.GetSheetCount(); int i; for (i = 0; i < cs; i++) { - //string str = xcombobox::GetLBText(memuId.GetId(), i); + //xstring str = xcombobox::GetLBText(cbx_menu.GetId(), i); xstring str = mainsheet.GetSheetText(i); if (i == k) - xwin::AppendMenu(m, MF_STRING | MF_CHECKED, i + 1, str); + AppendMenu(m, MF_STRING | MF_CHECKED, i + 1, str); else - xwin::AppendMenu(m, MF_STRING, i + 1, str); + AppendMenu(m, MF_STRING, i + 1, str); } - xrect xr; + RECT xr; xpoint pt; GetCursorPos(pt); - int res = xwin::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; @@ -398,6 +456,8 @@ } return 1; } + +#if 0 int OnOpen(xstring pa) { //xwin::SendMessage(m_npHwnd2, 0x401, pa, 0); @@ -408,22 +468,21 @@ return 1; }*/ - int p = pa.toInt(); xaserverarg arg ; - xstring isnew = arg.GetArgString(L"_isNewModule"); xstring vx = arg.GetArgString(L"_ModuelPage"); if (isnew == L"Y") { if (vx.find(L".vx", 0) > 0 || vx.find(L".xpage", 0) > 0) - OpenWindow(L"dev:xpage[" + vx + L"]", p); + OpenWindow(L"dev:xpage[" + vx + L"]", arg); else 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(); @@ -443,7 +502,7 @@ ShowWindow(m_npHwnd2, SW_MAXIMIZE); return 1; } - +#endif int OnHelp() { OpenWindow(L"dev:xpage[trade.help3.vx]"); @@ -457,16 +516,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; } @@ -481,7 +540,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; } @@ -491,35 +550,35 @@ int sheet = nmtv.nSheet; int s = mainsheet.GetSheetCount(); //trace(s); - int cs = xcombobox::GetCount(memuId.GetHWND()); + int cs = xcombobox::GetCount(cbx_menu.GetHWND()); int cursheet = m_cursheet; if (s > cs) { - xcombobox::AddItem(memuId.GetHWND(), L"鑷敱绐楀彛"); - xcombobox::AddItem(tabNo.GetHWND(), xstring(cursheet)); + xcombobox::AddItem(cbx_menu.GetHWND(), L"鑷敱绐楀彛"); + xcombobox::AddItem(cbx_tab.GetHWND(), xstring(cursheet)); } if (s < cs) { - xcombobox::DeleteItem(memuId.GetHWND(), cursheet); + xcombobox::DeleteItem(cbx_menu.GetHWND(), cursheet); int i = 0; - xstring value = xcombobox::GetLBText(tabNo.GetHWND(), cursheet); + xstring value = xcombobox::GetLBText(cbx_tab.GetHWND(), cursheet); for (i = 0; i < cs; i++) { - xstring tabId = xcombobox::GetLBText(tabNo.GetHWND(), i); + xstring tabId = xcombobox::GetLBText(cbx_tab.GetHWND(), i); if (tabId == xstring(cursheet)) { - xcombobox::DeleteItem(tabNo.GetHWND(), i); - xcombobox::InsertString(tabNo.GetHWND(), i, value); + xcombobox::DeleteItem(cbx_tab.GetHWND(), i); + xcombobox::InsertString(cbx_tab.GetHWND(), i, value); } } - xcombobox::DeleteItem(tabNo.GetHWND(), cursheet); + xcombobox::DeleteItem(cbx_tab.GetHWND(), cursheet); if (sheet != value.toInt()) mainsheet.SelectSheet(value.toInt()); } if (cursheet != mainsheet.GetSheetIndex()) { - int hPicture = xwin::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); @@ -553,14 +612,14 @@ Hxsoft::XFrame::KXMLDOMElement e = x.documentElement(); if((xstring)m_Assignment == L"" && e.selectSingleNode(L"AssignmentID")) { - string sInfoEx = e.selectSingleNode(L"AssignmentID").text(); + xstring sInfoEx = e.selectSingleNode(L"AssignmentID").text(); m_Assignment = sInfoEx; } if((xstring)m_Assignment == L"") alert(L"鑾峰彇鐢ㄦ埛鏁版嵁澶辫触锛岃閲嶆柊鐧诲綍!"); else - xaserver::SetUID((LPWSTR)m_Assignment); + xaserver::SetUID((LPWSTR)m_Assignment.c_str(true)); return 1; } -- Gitblit v1.9.3