ÿþ#include <wobject/xstring.hpp> #include <xcontrol/xtreeview.hpp> #include <xcontrol/xdwgrid.hpp> #include <wobject/xdouble.hpp> #include <xcontrol/xlayersheet.hpp> #include <xcontrol/ximageview.hpp> #include <xcontrol/ximage.hpp> #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" #include "viewobject/view.base.hpp" using xml = KXMLDOMDocument; class __declspec(dllexport) BigPictureViewProduct3 : public xwin { public: BigPictureViewProduct3(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {} public: static BigPictureViewProduct3* CreateInstance(void* implPtr, void* hWnd) { BigPictureViewProduct3* pWin = new BigPictureViewProduct3(implPtr, (HWND)hWnd); return pWin; } public: xstring m_Url; xstring m_Name; xml m_doc; int m_SeqNo; xstring getName() { xstring name = m_Url; xstring v = name.mid(30, 99); xml x; xaserverarg arg; arg.AddArg(L"file",v); if(xurl::get(L"/sale/data/product/pref/GetGoodsNoFromID",arg.GetString(),x)!=1) { trace(xstring(L"xxx", x.xml())); return L""; } if((xstring)x.xml() == L"") return L""; KXMLDOMElement e= x.documentElement(); return L""+xstring(e.text()); } int setImage() { xstring path= m_Url; xstring xbox = L"<vbox name='image' >"; xbox += L"<ximage style='background-color:#ffffff' name='pic' src='"+path+L"'/>"; xbox +=L"</vbox>"; xnode anode = GetAgentNode(L"image"); SetAgentNode(anode,xbox); xstring name = m_Name; if(name == L"") { name = getName(); m_Name = name; } xstring ss = L"<vbox name='goodso' width='150'><xlabel caption='"+name+L"'/></vbox>"; xnode bnode = GetAgentNode(L"goodso"); SetAgentNode(bnode, ss); return 1; } int getImage(int k) { xml x= m_doc; if(!x.xml()) return 1; m_Name = L""; KXMLDOMElement e = x.documentElement(); int no = m_SeqNo; if(no < 1) { xstring str = m_Url; xstring name = str; if(str.find(L"chanpin", 0) > 0) name = str.mid(str.find(L"chanpin", 0) + 7, str.length()); trace(e.xml()); //alert(name); KXMLDOMNodeList nlist = e.selectNodes(L"image[contains(PicPath, '"+name+L"')]"); int s = nlist.length(); //alert(s.toString()); if(s == 0) return 1; KXMLDOMElement ele = nlist.item(0); if(!ele.selectSingleNode(L"@seqNo")) return 1; xstring n = ele.selectSingleNode(L"@seqNo").text(); no = n.toInt() + k; } else { no = no + k; } //alert(no.toString()); if(no < 1) return 1; if(e.selectSingleNode(L"image[@seqNo='"+xstring(no)+L"']")) { if(e.selectSingleNode(L"image[@seqNo='"+ xstring(no) +L"']/PicPath")) { xstring src = e.selectSingleNode(L"image[@seqNo='"+ xstring(no)+L"']/PicPath").text(); if(src.length() > 60) src = src.right(44); else src=src.mid(src.find(L"Thumbs", 0)+6, 50); src = L"/business/products/chanpin"+ src; m_Url = src; m_SeqNo = no; } if(e.selectSingleNode(L"image[@seqNo='"+ xstring(no) +L"']/GoodsNo")) { xstring ss = e.selectSingleNode(L"image[@seqNo='"+ xstring(no) +L"']/GoodsNo").text(); m_Name = ss; } setImage(); } return 1; } int OnKeyDown(TEvent* evt, LPARAM p) { int k = evt->wParam; //T N if (k==33 || k==38 || k==37) { getImage(-1); } //T N else if (k == 32 || k==34 || k==40 || k==39) { getImage(1); } return 1; } int setDoc(xstring str) { xml x; if(x.loadXML(str)) { m_doc = x; AttachEvent(L"WM_KEYDOWN", (FEvent)&BigPictureViewProduct3::OnKeyDown); } return 1; } int OnCmdDispatch(xstring comdid) { HCURSOR hCursor = xutil::SetCursorWait(); if(comdid == L"save") { ximage xi = GetControl(L"pic"); //trace(m_Url); if(m_Name == L"") { xstring name = getName(); m_Name = name; } xi.SaveToFile(m_Name); } else if(comdid.right(4) == L".jpg") { m_Url = comdid; m_SeqNo = -99; setImage(); } else { setDoc(comdid); } xutil::RestoreCursor(hCursor); return 0; } //}TäNYt‹NöN int OnXCommand(TEvent* evt, LPARAM param) { return OnCmdDispatch(evt->xcommand.pStrID); } int onload() { SetArg(); m_Name = L""; m_SeqNo = -99; if (GetWinParam()){ xaserverarg arg=GetArg(); xstring path=arg.GetArgString(L"src"); m_Url = path; m_Name = arg.GetArgString(L"name"); setImage(); AttachEvent(L"WM_XCOMMAND", (FEvent)&BigPictureViewProduct3::OnXCommand); //AttachEvent(L"WM_KEYDOWN",OnKeyDown); } return 1; } };