| | |
| | | #include "xcontrol/xcombobox.hpp" |
| | | #include "xcontrol/xlayersheet.hpp" |
| | | |
| | | using xml = KXMLDOMDocument; |
| | | class __declspec(dllexport) vindexform: public xwin |
| | | { |
| | | public: |
| | |
| | | xcombobox cbx_panelNo; |
| | | xcombobox cbx_tab; |
| | | |
| | | |
| | | xcombobox memuId; //页签数组 |
| | | xcombobox tabNo; //页签顺序数组 |
| | | xcombobox panelNo; //页签数组 |
| | | xcombobox panelName; //页签顺序数组 |
| | | |
| | | int m_npHwnd; //菜单树窗口句柄 |
| | | int m_nHwnd; //菜单树窗口句柄 |
| | | int m_cursheet; //当前页签 |
| | | int menuShow; |
| | | |
| | | int m_npHwnd2; //openwindow |
| | | int m_startwin; |
| | | |
| | | public: |
| | | vindexform(void* implPtr,HWND hWnd):xwin(implPtr,hWnd){} |
| | | public: |
| | |
| | | return new vindexform(implPtr,(HWND)hWnd); |
| | | } |
| | | public: |
| | | |
| | | |
| | | xstring getHomeConfig(xstring att) |
| | | { |
| | | xml x ; |
| | | x.load(L"cache\\config.xml"); |
| | | //alert(x.GetXml()); |
| | | if (x.xml() == L"") return L""; |
| | | KXMLDOMElement e = x.documentElement(); |
| | | if (e.selectSingleNode(L"home")) |
| | | { |
| | | KXMLDOMElement e1 = e.selectSingleNode(L"home"); |
| | | if (e1.selectSingleNode(L"@" + att)) |
| | | return e1.selectSingleNode(L"@" + att).text(); |
| | | } |
| | | return L""; |
| | | } |
| | | |
| | | int setHomeConfig(xstring att, xstring value) |
| | | { |
| | | xml x ; |
| | | x.load(L"cache\\config.xml"); |
| | | if (x.xml() == L"") |
| | | { |
| | | //alert(L"<config><home "+att+L"=L"+value+L"/></config>"); |
| | | x.loadXML(L"<config><home " + att + L"='" + value + L"'/></config>"); |
| | | } |
| | | else |
| | | { |
| | | KXMLDOMElement e = x.documentElement(); |
| | | 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); |
| | | } |
| | | //alert(x.GetXml()); |
| | | xutil::SaveToFile(L"cache\\config.xml", x.xml(), L"", L"", (LPTSTR)L""); |
| | | return 1; |
| | | } |
| | | |
| | | int OnDWClick(TEvent* evt, int p) |
| | | { |
| | | alert(L"clicked"); |
| | |
| | | |
| | | return 1; |
| | | } |
| | | int OnMenuAgent(xstring f) |
| | | { |
| | | int LayerFlow_None = 0x00000001; |
| | | int LayerFlow_UnLayer = 0x00000100; |
| | | int LayerFlow_NS = 0x00000004; |
| | | int LayerFlow_Control = 0x00000010; |
| | | int GWL_STYLE = -16; |
| | | int WS_POPUP = 0x80000000; |
| | | int WS_CHILD = 0x40000000; |
| | | int WS_MAXIMIZE = 0x00010000; |
| | | int SW_MAXIMIZE = 3; |
| | | int HWND_TOPMOST = -1; |
| | | int HWND_NOTOPMOST = -2; |
| | | int SWP_NOSIZE = 0x0001; |
| | | int SWP_NOMOVE = 0x0002; |
| | | int SWP_SHOWWINDOW = 0x0040; |
| | | SetWindowPos(m_nHwnd, HWND_TOPMOST, -1000, -1000, 0, 0, SWP_NOSIZE | SWP_SHOWWINDOW); |
| | | int style = GetWindowLong(m_nHwnd, GWL_STYLE); |
| | | xnode anode = GetAgentNode(L"menuAgent"); |
| | | xnode bnode = GetAgentNode(L"xmMenu"); |
| | | int isshow = menuShow; |
| | | if (isshow == -1) |
| | | { |
| | | anode.SetLayerFlow(LayerFlow_NS | LayerFlow_Control); |
| | | bnode.SetLayerFlow(LayerFlow_None | LayerFlow_UnLayer); |
| | | |
| | | style = style - WS_POPUP; |
| | | style = style + WS_CHILD; |
| | | xwin::SetWindowLong(m_nHwnd, GWL_STYLE, style); |
| | | |
| | | m_npHwnd = xwin::GetParent(m_nHwnd); |
| | | xcontrol xc = GetControl(L"menuAgent"); |
| | | xwin::SetParent(m_nHwnd, xc.GetId()); |
| | | xwin::ShowWindow(m_nHwnd, SW_MAXIMIZE); |
| | | |
| | | ///AttachEvent(L"WM_SIZE",OnMenuSizeChanged); |
| | | //AttachEvent(L"WM_PAINT",OnMenuSizeChanged); |
| | | //AttachEvent(L"WM_WINDOWPOSCHANGED",OnMenuSizeChanged); |
| | | } |
| | | else |
| | | { |
| | | bnode.SetLayerFlow(LayerFlow_NS | LayerFlow_Control); |
| | | anode.SetLayerFlow(LayerFlow_None | LayerFlow_UnLayer); |
| | | |
| | | style = style + WS_POPUP; |
| | | style = style - WS_CHILD; |
| | | xwin::SetWindowLong(m_nHwnd, GWL_STYLE, style); |
| | | xwin::SetParent(m_nHwnd, m_npHwnd); |
| | | OnMenu(L""); |
| | | } |
| | | menuShow = -1 - isshow; |
| | | xcombobox::SetCurSel(memuId.GetId(), menuShow); |
| | | if (f != L"") |
| | | setHomeConfig(L"menuposition", menuShow.toString()); |
| | | return 1; |
| | | } |
| | | |
| | | int ResetMenu() |
| | | { |
| | | //if(m_nHwnd) xwin::CloseWindow(m_nHwnd); |
| | | m_nHwnd = 0; |
| | | |
| | | menuShow = -1; |
| | | xstring f = getHomeConfig(L"menuposition"); |
| | | if (f == L"0") |
| | | { |
| | | OnMenu(L""); |
| | | OnMenuAgent(L""); |
| | | } |
| | | |
| | | xaserverarg arg; |
| | | |
| | | int h = GetHWND(); |
| | | arg.AddArg(L"hwnd", xstring(h)); |
| | | |
| | | OpenWindow(L"dev:xpage[vindexforold.vx]", arg); |
| | | |
| | | return 1; |
| | | } |
| | | |
| | | int ReSetInfo() |
| | | { |
| | | |
| | | xcombobox::ResetContent(memuId.GetId()); |
| | | xcombobox::ResetContent(tabNo.GetId()); |
| | | xcombobox::ResetContent(panelNo.GetId()); |
| | | xcombobox::ResetContent(panelName.GetId()); |
| | | |
| | | int hItem = mainsheet.GetSheetCount(); |
| | | while (hItem > 1) |
| | | { |
| | | //mainsheet.DeleteSheet(hItem - 1); |
| | | SendMessage(GetHWND(), 0x401, L"xmSheetClose", 0); |
| | | hItem = mainsheet.GetSheetCount(); |
| | | } |
| | | |
| | | xml x; |
| | | |
| | | xaserverarg arg; |
| | | |
| | | arg.AddArg(L"Assignment", m_Assignment); |
| | | //alert(arg.GetString()); |
| | | if (xaserver::ExecXQuery(GetServerUrl(), L"[GetSysInfo.xq]", arg.GetString(), x) != 1) |
| | | { |
| | | //trace(x.GetXml()); |
| | | return -1; |
| | | } |
| | | if (x.xml() == L"") return -1; |
| | | KXMLDOMElement e = x.documentElement(); |
| | | if (/*m_Assignment == L"" &&*/ e.selectSingleNode(L"AssignmentID")) |
| | | { |
| | | xstring sInfoEx = e.selectSingleNode(L"AssignmentID").text(); |
| | | m_Assignment = sInfoEx; |
| | | } |
| | | |
| | | if (m_Assignment == L"") |
| | | alert(L"获取用户数据失败,请重新登录!"); |
| | | else |
| | | xaserver::SetUserId(m_Assignment); |
| | | |
| | | xcombobox::AddItem(memuId.GetId(), L"开始"); |
| | | xcombobox::AddItem(tabNo.GetId(), L"-1"); |
| | | //OpenWindow(L"dev:xpage[vstart.vx]"); |
| | | xcontrol xc = GetControl(L"statusbar0"); |
| | | xc.SetText(L"正在初始化系统,请稍候...."); |
| | | HCURSOR hCursor = xutil::SetCursorWait(); |
| | | if (e.selectSingleNode(L"name")) |
| | | { |
| | | xstring sInfo = e.selectSingleNode(L"name").text(); |
| | | xc.SetText(sInfo + L" 系统版本:" + xaserver::GetVersion()); |
| | | } |
| | | |
| | | ResetMenu(); |
| | | xutil::RestoreCursor(hCursor); |
| | | return 1; |
| | | } |
| | | |
| | | int OnChangeLogin() |
| | | { |
| | | xml x; |
| | | |
| | | xaserverarg arg ; |
| | | |
| | | arg.AddArg(L"userno", xaserver::GetUserNo()); |
| | | if (xaserver::ExecXQuery(GetServerUrl(), L"[GetSysAssignment.xq]", arg.GetString(), x) != 1) |
| | | { |
| | | trace(x.xml()); |
| | | return -1; |
| | | } |
| | | if (x.xml() == L"") return -1; |
| | | KXMLDOMElement e = x.documentElement(); |
| | | KXMLDOMNodeList li = e.selectNodes(L"item"); |
| | | int i; |
| | | int s = li.length(); |
| | | xstring sInfo = m_Assignment; |
| | | if (s > 0) |
| | | { |
| | | int m = xwin::CreatePopupMenu(); |
| | | int MF_STRING = 0x00000000; |
| | | int MF_DISABLED = 0x00000002; |
| | | int TPM_RIGHTBUTTON = 0x0002; |
| | | int TPM_RETURNCMD = 0x0100; |
| | | int MF_CHECKED = 0x8; |
| | | for (i = 0; i < s; i++) |
| | | { |
| | | KXMLDOMElement xitem = li.item(i); |
| | | 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); |
| | | else |
| | | xwin::AppendMenu(m, MF_STRING, i + 1, name); |
| | | } |
| | | xrect xr; |
| | | xpoint pt; |
| | | xwin::GetCursorPos(pt); |
| | | int res = xwin::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(); |
| | | if (m_Assignment == sInfoEx) return 0; |
| | | m_Assignment = sInfoEx; |
| | | ReSetInfo(); |
| | | /*if(m_nHwnd) |
| | | { |
| | | win32::CloseWindow(m_nHwnd); |
| | | }*/ |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | int OnAllCaption() |
| | | { |
| | | int m = xwin::CreatePopupMenu(); |
| | | int MF_STRING = 0x00000000; |
| | | int MF_DISABLED = 0x00000002; |
| | | int TPM_RIGHTBUTTON = 0x0002; |
| | | int TPM_RETURNCMD = 0x0100; |
| | | int MF_CHECKED = 0x8; |
| | | |
| | | int k = mainsheet.GetSheetIndex(); |
| | | //int cs = xcombobox::GetCount(memuId.GetId()); |
| | | int cs = mainsheet.GetSheetCount(); |
| | | int i; |
| | | for (i = 0; i < cs; i++) { |
| | | //string str = xcombobox::GetLBText(memuId.GetId(), i); |
| | | xstring str = mainsheet.GetSheetText(i); |
| | | if (i == k) |
| | | xwin::AppendMenu(m, MF_STRING | MF_CHECKED, i + 1, str); |
| | | else |
| | | xwin::AppendMenu(m, MF_STRING, i + 1, str); |
| | | } |
| | | xrect xr; |
| | | xpoint pt; |
| | | xwin::GetCursorPos(pt); |
| | | int res = xwin::TrackPopupMenu(m, TPM_RIGHTBUTTON | TPM_RETURNCMD, pt.x, pt.y, 0, this.GetHWND(), xr); |
| | | if (res == 0) return 0; |
| | | int nSheet = mainsheet.GetSheetIndex(); |
| | | if (nSheet == (res - 1)) return 0; |
| | | mainsheet.SelectSheet(res - 1); |
| | | return 0; |
| | | } |
| | | int OnChangeSheet(xstring sheet) |
| | | { |
| | | if (sheet == L"") return 0; |
| | | int nIndex = sheet.toInt(); |
| | | int curIndex = mainsheet.GetSheetIndex(); |
| | | if (nIndex == curIndex) |
| | | return 0; |
| | | mainsheet.SelectSheet(nIndex); |
| | | return 1; |
| | | } |
| | | int OnMenuSizeChanged(TEvent* evt, int p) |
| | | { |
| | | /*xrect xr33; |
| | | xcontrol xc = GetControl(L"menuAgent"); |
| | | xwin::GetWindowRect(xc.GetId(), xr33); |
| | | int l = xr33.left; |
| | | int b = xr33.right; |
| | | int xx = b - l;*/ |
| | | //alert(xx.toString()); |
| | | int isshow = menuShow; |
| | | if (isshow == 0) |
| | | { |
| | | int SW_MAXIMIZE = 3; |
| | | xcontrol xc = GetControl(L"menuAgent"); |
| | | xwin::SetParent(m_nHwnd, xc.GetId()); |
| | | xwin::ShowWindow(m_nHwnd, SW_MAXIMIZE); |
| | | } |
| | | return 1; |
| | | } |
| | | int OnOpen(xstring pa) |
| | | { |
| | | //xwin::SendMessage(m_npHwnd2, 0x401, pa, 0); |
| | | //return 1; |
| | | /*if(xaserver::GetUserNo() == L"admin") |
| | | { |
| | | OpenWindow(L"dev:xpage[vstart.vx]"); |
| | | 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); |
| | | else |
| | | openUrl(vx, p); |
| | | return 1; |
| | | } |
| | | OpenWindow(L"dev:xpage[vindexforold.vx]", p); |
| | | return 1; |
| | | } |
| | | int OnOpenForOld(xstring pa) |
| | | { |
| | | m_npHwnd2 = pa.toInt(); |
| | | |
| | | int GWL_STYLE = -16; |
| | | int WS_POPUP = 0x80000000; |
| | | int WS_CHILD = 0x40000000; |
| | | int SW_MAXIMIZE = 3; |
| | | int style = xwin::GetWindowLong(m_npHwnd2, GWL_STYLE); |
| | | style = style - WS_POPUP; |
| | | style = style + WS_CHILD; |
| | | xwin::SetWindowLong(m_npHwnd2, GWL_STYLE, style); |
| | | |
| | | xcontrol xc = GetControl(L"openforold"); |
| | | xwin::SetParent(m_npHwnd2, xc.GetId()); |
| | | |
| | | xwin::ShowWindow(m_npHwnd2, SW_MAXIMIZE); |
| | | return 1; |
| | | } |
| | | |
| | | int OnHelp() |
| | | { |
| | | OpenWindow(L"dev:xpage[trade.help3.vx]"); |
| | | return 1; |
| | | } |
| | | int OnCmdDispatch(xstring comdid) |
| | | { |
| | | if (comdid == L"xmMenu") OnMenu(0); |
| | | //else if (comdid.find(L"menuid:", 0) >= 0) |
| | | // return OnMenu((HWND)comdid.mid(comdid.find(L":", 0) + 1, comdid.length()).toInt()); |
| | | #if 0 |
| | | |
| | | if (comdid ==L "xmAssignment") OnChangeLogin(); |
| | | else if (comdid == L"xmAllCaption") OnAllCaption(); |
| | | else if (comdid == L"xmMenu") OnMenu(L""); |
| | | else if (comdid == L"xmHelp") return OnHelp(); |
| | | else if (comdid.find("menuid:", 0) >= 0) OnMenu(comdid.mid(comdid.find(":", 0) + 1, comdid.length())); |
| | | else if (comdid.find("menuAgent:", 0) >= 0) OnMenuAgent(comdid.mid(comdid.find(":", 0) + 1, comdid.length())); |
| | | else if (comdid.find("changesheet:", 0) >= 0) OnChangeSheet(comdid.mid(comdid.find(":", 0) + 1, comdid.length())); |
| | | else if (comdid.find("openforoldid:", 0) >= 0) OnOpenForOld(comdid.mid(comdid.find(":", 0) + 1, comdid.length())); |
| | | else if (comdid.find("open:", 0) >= 0) OnOpen(comdid.mid(comdid.find(":", 0) + 1, comdid.length())); |
| | | else if (comdid == "xmRefreshTask") |
| | | 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 == L"xmRefreshTask") |
| | | { |
| | | SendMessage(m_startwin, 0x401, comdid, 0); |
| | | return 1; |
| | | } |
| | | #endif |
| | | |
| | | return 0; |
| | | } |
| | | |
| | |
| | | int OnAttachListon() |
| | | { |
| | | AttachEvent(L"WM_XCOMMAND",(FEvent)&vindexform::OnXCommand,this); |
| | | //AttachEvent("mdilayer", "LYSN_SELECTEDSHEET",OnSheetChanged); |
| | | ////AttachEvent("mdilayer", "LYSN_CLOSESHEET",OnCloseSheet); |
| | | //AttachEvent(L"mdilayer", L"LYSN_SELECTEDSHEET",OnSheetChanged); |
| | | ////AttachEvent(L"mdilayer", L"LYSN_CLOSESHEET",OnCloseSheet); |
| | | return 1; |
| | | } |
| | | |
| | | int OnSheetChanged(TEvent* evt, int p) |
| | | { |
| | | ref LYSNMHDR nmtv = trust(evt.pnmh as ref LYSNMHDR); |
| | | int sheet = nmtv.nSheet; |
| | | int s = mainsheet.GetSheetCount(); |
| | | //trace(s); |
| | | int cs = xcombobox::GetCount(memuId.GetId()); |
| | | int cursheet = m_cursheet; |
| | | |
| | | if (s > cs) { |
| | | xcombobox::AddItem(memuId.GetId(), L"自由窗口"); |
| | | xcombobox::AddItem(tabNo.GetId(), cursheet.toString()); |
| | | } |
| | | if (s < cs) { |
| | | xcombobox::DeleteItem(memuId.GetId(), cursheet); |
| | | int i = 0; |
| | | xstring value = xcombobox::GetLBText(tabNo.GetId(), cursheet); |
| | | for (i = 0; i < cs; i++) |
| | | { |
| | | xstring tabId = xcombobox::GetLBText(tabNo.GetId(), i); |
| | | if (tabId == cursheet.toString()) |
| | | { |
| | | xcombobox::DeleteItem(tabNo.GetId(), i); |
| | | xcombobox::InsertString(tabNo.GetId(), i, value); |
| | | } |
| | | } |
| | | xcombobox::DeleteItem(tabNo.GetId(), 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) |
| | | { |
| | | int WM_CLOSE = 0x0010; |
| | | xwin::PostMessage(hPicture, WM_CLOSE, 0, 0); |
| | | } |
| | | } |
| | | |
| | | m_cursheet = mainsheet.GetSheetIndex(); |
| | | return 1; |
| | | } |
| | | |
| | | int OnCloseSheet(TEvent* evt, int p) |
| | | { |
| | | ref LYSNMHDR nmtv = trust(evt.pnmh as ref LYSNMHDR); |
| | | int sheet = nmtv.nSheet; |
| | | //alert(L"xxxx"); |
| | | return 1; |
| | | } |
| | | |
| | | int SetUserID() |
| | | { |
| | | Hxsoft::XFrame::KXMLDOMDocument x; |
| | |
| | | return 1; |
| | | } |
| | | |
| | | int OnInitial() |
| | | { |
| | | xstring userno = xaserver::GetUserNo(); |
| | | if (userno == L"admin" /*|| userno==L"00206" || userno==L"00206" || userno==L"00201" ||userno==L"00101" */) |
| | | { |
| | | xnode anode = GetAgentNode(L"dev"); |
| | | int LayerFlow_WE = 0x00000002; |
| | | int LayerFlow_Control = 0x00000010; |
| | | |
| | | anode.SetLayerFlow(LayerFlow_WE | LayerFlow_Control); |
| | | } |
| | | m_Assignment = L""; |
| | | |
| | | return 1; |
| | | } |
| | | |
| | | int Initial() |
| | | { |
| | | SetUserID(); |