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 | 150 ++++++++++++++++++++++++++++++++++--------------- 1 files changed, 103 insertions(+), 47 deletions(-) diff --git a/jrj/project/vindexform.cpp b/jrj/project/vindexform.cpp index 72ce110..199aa6b 100644 --- a/jrj/project/vindexform.cpp +++ b/jrj/project/vindexform.cpp @@ -16,20 +16,15 @@ 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; //褰撳墠椤电 @@ -76,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); } @@ -99,7 +97,57 @@ alert(L"clicked"); return 1; } - int OnMenu(xstring hMenu) + + 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) { @@ -111,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); @@ -199,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; @@ -207,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") @@ -218,6 +273,7 @@ OnMenuAgent(L""); } + xaserverarg arg; HWND h = GetHWND(); @@ -225,17 +281,17 @@ 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) @@ -267,10 +323,10 @@ if (m_Assignment == L"") alert(L"鑾峰彇鐢ㄦ埛鏁版嵁澶辫触锛岃閲嶆柊鐧诲綍!"); else - xaserver::SetUID((LPWSTR)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湪鍒濆鍖栫郴缁燂紝璇风◢鍊�...."); @@ -350,11 +406,11 @@ 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) AppendMenu(m, MF_STRING | MF_CHECKED, i + 1, str); @@ -460,9 +516,9 @@ 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())); @@ -484,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; } @@ -494,27 +550,27 @@ 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()); } @@ -556,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