From 2ae36e271599ea723348132dd7c8a7e139162d18 Mon Sep 17 00:00:00 2001 From: xj qian <qianxj15@sina.com> Date: 星期一, 01 七月 2024 13:16:02 +0800 Subject: [PATCH] update print preview --- jrj/xframe/wobject/xbase.hpp | 169 ++- jrj/xframe/vbusiness/vutil/publiccode.vutil.vbusiness.hpp | 6 jrj/xframe/wobject/xobject.hpp | 7 jrj/project/printview/Template.Print.ViewEx.cpp | 518 +++++------ jrj/project/printview/Maint.Template.PrintEx.cpp | 204 ++-- jrj/ext-jrj/ext-jrj.vcxproj.filters | 12 jrj/xframe/xcontrol/xcombobox.hpp | 168 ++-- jrj/xframe/wobject/xcontrol.hpp | 10 jrj/xframe/kobject/kexcel.hpp | 18 jrj/xframe/system/base.hpp | 7 jrj/xframe/vbusiness/vframe/frame.vframe.vbusiness.hpp | 14 jrj/xframe/xcontrol/xexcel.hpp | 44 + jrj/xframe/xcontrol/xhtml.hpp | 37 jrj/xframe/vbusiness/vframe/listex.vframe.vbusiness.hpp | 6 jrj/project/printview/Template.Print.Dialog.cpp | 1019 +++++++++++------------- jrj/xframe/win32/win.hpp | 12 jrj/.vscode/settings.json | 5 jrj/xframe/win32/xfile.hpp | 73 jrj/xframe/kobject/khtml.hpp | 16 jrj/xframe/wobject/xutil.hpp | 16 jrj/xframe/xcontrol/xtreeview.hpp | 13 jrj/xframe/wobject/xwin.hpp | 18 jrj/ext-jrj/ext-jrj.vcxproj | 54 jrj/xframe/vbusiness/vframe/responsewin.vframe.vbusiness.hpp | 14 jrj/xframe/kobject/kutil.hpp | 4 25 files changed, 1,277 insertions(+), 1,187 deletions(-) diff --git a/jrj/.vscode/settings.json b/jrj/.vscode/settings.json new file mode 100644 index 0000000..7337529 --- /dev/null +++ b/jrj/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "files.associations": { + "xstring": "cpp" + } +} \ No newline at end of file diff --git a/jrj/ext-jrj/ext-jrj.vcxproj b/jrj/ext-jrj/ext-jrj.vcxproj index ae7ae59..c0aabfc 100644 --- a/jrj/ext-jrj/ext-jrj.vcxproj +++ b/jrj/ext-jrj/ext-jrj.vcxproj @@ -116,7 +116,7 @@ <ClCompile> <WarningLevel>Level3</WarningLevel> <SDLCheck>true</SDLCheck> - <PreprocessorDefinitions>_DEBUG;EXTJRJ_EXPORTS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>_DEBUG;EXTJRJ_EXPORTS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;_XWIN;%(PreprocessorDefinitions)</PreprocessorDefinitions> <ConformanceMode>true</ConformanceMode> <PrecompiledHeader>NotUsing</PrecompiledHeader> <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile> @@ -126,7 +126,7 @@ <SubSystem>Windows</SubSystem> <GenerateDebugInformation>true</GenerateDebugInformation> <EnableUAC>false</EnableUAC> - <AdditionalDependencies>xarch.shape.lib;xarch.base.lib;xarch.util.lib;xarch.network.lib;xarch.xframe.lib;xarch.xcontrol.lib;xoffice.xcell.lib;xoffice.xgrid.lib;xoffice.xreport.lib;shlwapi.lib;xoffice.xflow.lib;%(AdditionalDependencies);$(CoreLibraryDependencies)</AdditionalDependencies> + <AdditionalDependencies>xarch.shape.lib;xarch.base.lib;xarch.util.lib;xarch.network.lib;xarch.xframe.lib;xarch.xcontrol.lib;xoffice.xcell.lib;xoffice.xgrid.lib;xoffice.xreport.lib;shlwapi.lib;xoffice.xflow.lib;comsuppw.lib;%(AdditionalDependencies);$(CoreLibraryDependencies)</AdditionalDependencies> <AdditionalLibraryDirectories>D:\xclient64</AdditionalLibraryDirectories> </Link> <PostBuildEvent> @@ -179,7 +179,9 @@ <ClInclude Include="..\xframe\kobject\kdwpages.hpp" /> <ClInclude Include="..\xframe\kobject\kdwtable.hpp" /> <ClInclude Include="..\xframe\kobject\kdwview.hpp" /> + <ClInclude Include="..\xframe\kobject\kexcel.hpp" /> <ClInclude Include="..\xframe\kobject\kflowchart.hpp" /> + <ClInclude Include="..\xframe\kobject\khtml.hpp" /> <ClInclude Include="..\xframe\kobject\klayersheet.hpp" /> <ClInclude Include="..\xframe\kobject\knode.hpp" /> <ClInclude Include="..\xframe\kobject\kpage.hpp" /> @@ -224,7 +226,9 @@ <ClInclude Include="..\xframe\xcontrol\xdwgrid.hpp" /> <ClInclude Include="..\xframe\xcontrol\xdwpages.hpp" /> <ClInclude Include="..\xframe\xcontrol\xdwtable.hpp" /> + <ClInclude Include="..\xframe\xcontrol\xexcel.hpp" /> <ClInclude Include="..\xframe\xcontrol\xflowchart.hpp" /> + <ClInclude Include="..\xframe\xcontrol\xhtml.hpp" /> <ClInclude Include="..\xframe\xcontrol\xlayersheet.hpp" /> <ClInclude Include="..\xframe\xcontrol\xreport.hpp" /> <ClInclude Include="..\xframe\xcontrol\xshtml.hpp" /> @@ -333,27 +337,47 @@ <ClCompile Include="..\project\business\Supplier3.list.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild> </ClCompile> - <ClCompile Include="..\project\business\Supplier\asklist.Owner.Supplier.cpp" /> - <ClCompile Include="..\project\business\Supplier\Inspection.Supplie.cpp" /> - <ClCompile Include="..\project\business\Supplier\list.Owner.Supplier.cpp" /> - <ClCompile Include="..\project\business\Supplier\maint.Document.Supplier.cpp" /> - <ClCompile Include="..\project\business\Supplier\maint.Document.SupplierEx.cpp" /> - <ClCompile Include="..\project\business\Supplier\maint.Document.SupplierSD.cpp" /> - <ClCompile Include="..\project\business\Supplier\maint.Owner.Supplier.cpp" /> - <ClCompile Include="..\project\business\Supplier\maintex.Owner.Supplier.cpp" /> - <ClCompile Include="..\project\business\Supplier\paymen.Supplie.cpp" /> - <ClCompile Include="..\project\business\Supplier\SupplierSource.cpp" /> + <ClCompile Include="..\project\business\Supplier\asklist.Owner.Supplier.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\project\business\Supplier\Inspection.Supplie.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\project\business\Supplier\list.Owner.Supplier.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\project\business\Supplier\maint.Document.Supplier.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\project\business\Supplier\maint.Document.SupplierEx.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\project\business\Supplier\maint.Document.SupplierSD.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\project\business\Supplier\maint.Owner.Supplier.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\project\business\Supplier\maintex.Owner.Supplier.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\project\business\Supplier\paymen.Supplie.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\project\business\Supplier\SupplierSource.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + </ClCompile> <ClCompile Include="..\project\printview\Maint.Template.PrintEx.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild> </ClCompile> <ClCompile Include="..\project\printview\Template.Print.Dialog.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild> </ClCompile> <ClCompile Include="..\project\printview\Template.Print.ViewEx.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild> </ClCompile> <ClCompile Include="..\project\start.vframe.vbusiness.cpp" /> <ClCompile Include="..\project\viewobject\view.base.hpp" /> diff --git a/jrj/ext-jrj/ext-jrj.vcxproj.filters b/jrj/ext-jrj/ext-jrj.vcxproj.filters index f1dbe90..050eaf0 100644 --- a/jrj/ext-jrj/ext-jrj.vcxproj.filters +++ b/jrj/ext-jrj/ext-jrj.vcxproj.filters @@ -291,6 +291,18 @@ <ClInclude Include="..\xframe\kobject\kflowchart.hpp"> <Filter>xframe\kobject</Filter> </ClInclude> + <ClInclude Include="..\xframe\kobject\khtml.hpp"> + <Filter>xframe\kobject</Filter> + </ClInclude> + <ClInclude Include="..\xframe\xcontrol\xhtml.hpp"> + <Filter>xframe\xcontrol</Filter> + </ClInclude> + <ClInclude Include="..\xframe\kobject\kexcel.hpp"> + <Filter>xframe\kobject</Filter> + </ClInclude> + <ClInclude Include="..\xframe\xcontrol\xexcel.hpp"> + <Filter>xframe\xcontrol</Filter> + </ClInclude> </ItemGroup> <ItemGroup> <ClCompile Include="dllmain.cpp"> diff --git a/jrj/project/printview/Maint.Template.PrintEx.cpp b/jrj/project/printview/Maint.Template.PrintEx.cpp index d96d72b..e060d3e 100644 --- a/jrj/project/printview/Maint.Template.PrintEx.cpp +++ b/jrj/project/printview/Maint.Template.PrintEx.cpp @@ -2,125 +2,125 @@ #include <xcontrol/xtreeview.hpp> #include <xcontrol/xdwgrid.hpp> #include <xcontrol/xlayersheet.hpp> +#include <xcontrol/xcell.hpp> #include "vbusiness/vframe/maint.vframe.vbusiness.hpp" #include "viewobject/view.base.hpp" using xml = KXMLDOMDocument; - -class __declspec(dllexport) MaintTemplatePrintWin : public xframe +class __declspec(dllexport) MaintTemplatePrintWin : public xframe +{ +public: + xcell cell; + xnode m_agentNode; //Agent Condition + xstring args; +public: + MaintTemplatePrintWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} +public: + static MaintTemplatePrintWin* CreateInstance(void* implPtr, void* hWnd) { - public: - xcell cell; - xnode m_agentNode; //Agent Condition - xstring args; - public: - MaintTemplatePrintWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} - public: - static MaintTemplatePrintWin* CreateInstance(void* implPtr, void* hWnd) + MaintTemplatePrintWin* pWin = new MaintTemplatePrintWin(implPtr, (HWND)hWnd); + return pWin; + } + int SetAgent() + { + xstring xfNodeAgentArea = L"agentarea"; + xnode anode = GetAgentNode(xfNodeAgentArea); + if (m_agentNode) { - MaintTemplatePrintWin* pWin = new MaintTemplatePrintWin(implPtr, (HWND)hWnd); - return pWin; + SetAgentNode(anode, m_agentNode); } - int SetAgent() + else { - xstring xfNodeAgentArea = L"agentarea"; - xnode anode = GetAgentNode(xfNodeAgentArea); - if(m_agentNode) + KXMLDOMElement xframeElement = GetElement(); + KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/" + xfNodeAgentArea + L"[1]/*"); + if (agent) { - SetAgentNode (anode,m_agentNode); + xstring s = agent.xml(); + m_agentNode = SetAgentNode(anode, s); } - else - { - KXMLDOMElement xframeElement = GetElement(); - KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/"+xfNodeAgentArea+L"[1]/*"); - if(agent) - { - xstring s = agent.xml(); - m_agentNode = SetAgentNode (anode,s); - } - } - return 1; } + return 1; + } - //焦点激活处理函数 - int OnSetFocus(TEvent* evt, LPARAM p) - { - //重置工具条 - SetAgent(); - return 1; - } -} + //焦点激活处理函数 + int OnSetFocus(TEvent* evt, LPARAM p) + { + //重置工具条 + SetAgent(); + return 1; + } - int SendCtrlCmd(xcontrol xc, xstring cmd) - { - win32::SendMessage(xc.GetId(),0x401,cmd,0); - return 1; - } + int SendCtrlCmd(xcontrol xc, xstring cmd) + { + SendMessage(xc.GetHWND(), 0x401, (WPARAM)cmd.c_str(), 0); + return 1; + } - //命令发布函数 - int OnCmdDispatch(xstring comdid) + //命令发布函数 + int OnCmdDispatch(xstring comdid) + { + if (comdid.left(3) == L"IK_") { - if(comdid.left(3) == L"IK_") - { - xstring cmd = comdid.mid(3, comdid.length()); - SendCtrlCmd(GetControl(L"cell"),cmd); - return 1; - } - else if(comdid==L"xmFileOpen") - { - cell.OpenFile(); - cell.Redraw(); - return 1; - } - else if(comdid==L"xmFileSave") - { - cell.SaveFile(); - return 1; - } - else if(comdid==L"xmFileSaveAs") - { - cell.SaveFileAs(); - return 1; - } - return 0; - } - - //命令处理事件 - int OnXCommand(TEvent* evt, LPARAM p) - { - return OnCmdDispatch(evt->xcommand.pStrID); - } - - int OnAttachEvent() - { - //绑定工具条点击事件 - AttachEvent(L"WM_XCOMMAND", (FEvent)&MaintTemplatePrintWin::OnXCommand); - //获取焦点事件,用于重置工具条 - AttachEvent(L"WM_SETFOCUS", (FEvent)&MaintTemplatePrintWin::OnSetFocus); - } - - int onload() - { - cell = GetControl(L"cell"); - SetAgent(); - - OnAttachEvent(); - - if(GetWinParam()) - { - args = GetParamString(); - cell.openUrl(L"/sale/data/SysPrintTemplate/getdevxsl",args); - } - else - args =L""; - + xstring cmd = comdid.mid(3, comdid.length()); + + SendCtrlCmd(cell.GetHWND(), cmd); return 1; } - - int onloaded() + else if (comdid == L"xmFileOpen") { - + cell.OpenFile(); + cell.Redraw(); return 1; - } - \ No newline at end of file + } + else if (comdid == L"xmFileSave") + { + cell.SaveFile(); + return 1; + } + else if (comdid == L"xmFileSaveAs") + { + cell.SaveFileAs(); + return 1; + } + return 0; + } + + //命令处理事件 + int OnXCommand(TEvent* evt, LPARAM p) + { + return OnCmdDispatch(evt->xcommand.pStrID); + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND", (FEvent)&MaintTemplatePrintWin::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&MaintTemplatePrintWin::OnSetFocus); + } + + int onload() + { + cell = GetControl(L"cell"); + SetAgent(); + + OnAttachEvent(); + + if (GetWinParam()) + { + args = GetParamString(); + cell.openUrl(L"/sale/data/SysPrintTemplate/getdevxsl", args); + } + else + args = L""; + + return 1; + } + + int onloaded() + { + + return 1; + } +}; \ No newline at end of file diff --git a/jrj/project/printview/Template.Print.Dialog.cpp b/jrj/project/printview/Template.Print.Dialog.cpp index e4624ec..3158b09 100644 --- a/jrj/project/printview/Template.Print.Dialog.cpp +++ b/jrj/project/printview/Template.Print.Dialog.cpp @@ -4,603 +4,519 @@ #include <xcontrol/xlayersheet.hpp> #include "vbusiness/vframe/maint.vframe.vbusiness.hpp" +#include "vbusiness/vframe/maint.vframe.vbusiness.hpp" +#include "vbusiness/vframe/responsewin.vframe.vbusiness.hpp" #include "viewobject/view.base.hpp" using xml = KXMLDOMDocument; -class __declspec(dllexport) TemplatePrintDialog : public responsewin +DeclWinObject_(TemplatePrintDialog, responsewin) { + CreateWinObject_(TemplatePrintDialog, responsewin) + public: - xaserverarg arg_param; - xstring m_EntityName; - xstring m_EntityID; - xstring m_EntityNo; - xstring m_Dir; - xstring m_filePath; - xstring strNode; - xdwgrid dw_list; - xdwgrid dw_doclist; - xole ole_1; - bool bupdate; + xaserverarg arg_param; + xstring m_EntityName; + xstring m_EntityID; + xstring m_EntityNo; + xstring m_Dir; + xstring m_filePath; + xstring strNode; + xdwgrid dw_list; + xdwgrid dw_doclist; + bool bupdate; public: - TemplatePrintDialog(void* implPtr, HWND hWnd) :maint(implPtr, hWnd) {} + TemplatePrintDialog(void* implPtr, HWND hWnd) :responsewin(implPtr, hWnd) {} public: static TemplatePrintDialog* CreateInstance(void* implPtr, void* hWnd) { - TemplatePrintDialog* pWin = new TemplatePrintDialog(implPtr, (HWND)hWnd); - return pWin; + return new TemplatePrintDialog(implPtr, (HWND)hWnd); } - int OnHtml() +public: + int OnRetrieve() + { + xstring username = publiccode::GetUser()->name; + if (username != L"admin" && m_Dir != username) { - xstring s1=L"<catalog>"+ - " <book id='bk101'>"+ - " <author>Gambardella, Matthew</author>"+ - " <title>XML Developer's Guide</title>"+ - " <genre>Computer</genre>"+ - " <price>44.95</price>"+ - " <publish_date>2000-10-01</publish_date>"+ - " <description>An in-depth look at creating applications "+ - " with XML.</description>"+ - " </book>"+ - " <book id='bk102'>"+ - " <author>Ralls, Kim</author>"+ - " <title>Midnight Rain</title>"+ - " <genre>Fantasy</genre>"+ - " <price>5.95</price>"+ - " <publish_date>2000-12-16</publish_date>"+ - " <description>A former architect battles corporate zombies, L"+ - " an evil sorceress, and her own childhood to become queen "+ - " of the world.</description>"+ - " </book>"+ - " </catalog>"; - xml x = new xml; - x.setNativePointer(xml::CreateInstance()); - x.LoadXml(s1); -//trace(x.GetXml()); + bupdate = false; + } + else + { + bupdate = true; + } + xml x; - //xstring s2=L"<?xml version='1.0'?>"+ - xstring s2= - "<xsl:stylesheet version='1.0'"+ - " xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >"+ - "<xsl:output method='xml' indent='yes'/>"+ - "<xsl:template match='catalog'>"+ - "<HTML>"+ - " <HEAD>"+ - " <TITLE>Books catalog - listing for Books.xml</TITLE>"+ - " </HEAD>"+ - " <BODY><FONT FACE='Verdana'>"+ - " <H3>My Books Catalog</H3>"+ - " <TABLE CELLPADDING='5' CELLSPACING='2'>"+ - " <xsl:for-each select='book'>"+ - " <TR>"+ - " <TD ALIGN='LEFT'><FONT SIZE='2'><B>ID:</B>  <xsl:value-of select='@id'/><BR/>"+ - " <B>Author:</B>  <xsl:value-of select='author'/><BR/>"+ - " <B>Title:</B>  <xsl:value-of select='title'/><BR/>"+ - " <B>Genre:</B>  <xsl:value-of select='genre'/><BR/>"+ - " <B>Price:</B>  <xsl:value-of select='price'/><BR/>"+ - " <B>Published on:</B>  <xsl:value-of select='publish_date'/><BR/>"+ - " <B>Description:</B>  <xsl:value-of select='description'/></FONT></TD>"+ - " </TR>"+ - " </xsl:for-each>"+ - "</TABLE>"+ - "</FONT>"+ - "</BODY>"+ - "</HTML>"+ - "</xsl:template>"+ - "</xsl:stylesheet>" ; - xml xsl = new xml; - xsl.setNativePointer(xml::CreateInstance()); - xsl.LoadXml(s2); -//trace(xsl.GetXml()); + xaserverarg arg; - xstring strHtml = x.GetXmlDoc().transformNode(xsl.GetXmlDoc()); - //strHtml = str.mid(21,99999); - ole_1.LoadHtml(strHtml); - //html_1.SetContent(strHtml); - //alert(strHtml); + arg.AddArg(L"Entity", m_EntityName); + arg.AddArg(L"Dir", m_Dir); + dw_list.Reset(); + if (xurl::get(L"/sale/data/SysPrintTemplate/listDialog", arg.GetString(), x) != 1) + { + trace(x.text()); + return -1; + } + else + { + xstring s = x.xml(); + dw_list.Retrieve(x); + } + dw_list.Redraw(); + //dw_list.SetReadOnly(true); + if (dw_list.GetRowCount() > 0) + dw_list.SelectRow(1, true); + return 1; + } - return 0; - } - - int OnRetrieve() - { - xstring username = publiccode::GetUser().name; - if(username != L"admin" && m_Dir != username ) - { - bupdate = false; - }else - { - bupdate = true; - } - xml x; - - xaserverarg arg; - - arg.AddArg(L"Entity",m_EntityName); - arg.AddArg(L"Dir",m_Dir); - dw_list.Reset(); - if (xurl::get(L"/sale/data/SysPrintTemplate/listDialog",arg.GetString(),x) != 1) - { - trace(x.text()); - return -1; - }else - { - xstring s = x.xml(); - dw_list.Retrieve(x); - } - dw_list.Redraw(); - //dw_list.SetReadOnly(true); - if (dw_list.GetRowCount()>0) - dw_list.SelectRow(1,true); - return 1; - } - - int OnNewTempl() - { - OpenWindow(L"dev:xpage[Maint.Template.Print.vx]"); - return 1; - } - - int OnMaintTempl() - { - int row = dw_list.GetRow(); - if(row<0 || row>dw_list.GetRowCount()) - { - alert(L"请选择要维护的模板!"); - return 1; - } - else - { - KXMLDOMElement ele = dw_list.GetRowElement(row); - xstring sguid = ele.selectSingleNode(L"ID").text(); - xstring sTemplName = ele.selectSingleNode(L"TemplName").text(); - //xstring sFile = m_filePath + sguid+L".xsl"; - xstring sFile = m_filePath + ele.selectSingleNode(L"urlPath").text(); - arg_param.AddArg(L"xsl",sFile); - arg_param.AddArg(L"return",L"cancel"); - - OpenWindow(L"dev:xpage[Maint.Template.Print.vx]",cast(arg_param.GetString() as int)); - CloseWindow(); - - } - return 1; - } - - int OnAddDir() - { - return 0; - } - int OnAddTempl() - { - if (m_Dir==L"") - { - alert(L"请选择模板目录!"); - return 0; - } - xstring sguid = publiccode::GetGuid(); - xstring sname= sguid +L".xsl"; - xstring suri= L"rpttemplate"+L"\\"+m_EntityName; //rpttemplate\SO - //suri = L"supplier00"; - xstring ret = xaserver::UploadFile(suri, sname, this.GetHWND(),L"",false); - if (ret == L"-1") - { - alert(L"上传的文件没选择!"); - return 1; - } - else - { - xml x=new xml; - x.setNativePointer(xml::CreateInstance()); - xaserverarg args = new xaserverarg; - args.setNativePointer(args.CreateInstance()); - args.AddArg(L"sID",sguid); - args.AddArg(L"sEntity",m_EntityName); - args.AddArg(L"sDir",m_Dir); - args.AddArg(L"urlPath", sname); - //alert(m_Dir); - while(ret.find(L"\\",0)>=0) - ret = ret.mid(ret.find(L"\\",0) + 1,9999); - - args.AddArg(L"sTemplName",ret); - //trace(args.GetString()); - if (url::get(L"/sale/data/SysPrintTemplate/Save",args.GetString(),x) != 1) - { - trace(L"error:"+x.GetXml()); - alert(L"保存出错了!"); - return 1; - } - else - { - alert(L"上传模板成功!"); - OnRetrieve(); - } - } - return 1; - } - - int OnDelTempl() - { - - int row = dw_list.GetRow(); - if(row<0 || row>dw_list.GetRowCount()) - { - alert(L"请选择要删除的模板!"); - return 0; - } - else - { - if (win32::MessageBox(GetHWND(),L"确定要删除选中的模板?",L"提示",1) == 2) - return 0; - KXMLDOMElement ele = dw_list.GetRowElement(row); - xstring sguid = ele.selectSingleNode(L"ID").text; - xml x=new xml; - x.setNativePointer(xml::CreateInstance()); - xaserverarg args = new xaserverarg; - args.setNativePointer(args.CreateInstance()); - args.AddArg(L"sID",sguid); - if (url::get(L"/sale/data/SysPrintTemplate/Delete",args.GetString(),x) != 1) - { - trace(L"error:"+x.GetXml()); - alert(L"删除出错了!"); - return 0; - } - else - { - alert(L"删除成功!"); - OnRetrieve(); - } - } - - return 0; - } - - int OnDocListDoubleClicked(ref TNotifyEvent evt,int p) - { - int hCursor = xutil::SetCursorWait(); - OnOpenDocument(); - xutil::RestoreCursor(hCursor); - return 1; - } - - int OnDoubleClicked(ref TNotifyEvent evt,int p) - { - int hCursor = xutil::SetCursorWait(); - OnOk(); - xutil::RestoreCursor(hCursor); - return 1; - } + int OnNewTempl() + { + OpenWindow(L"dev:xpage[Maint.Template.Print.vx]"); + return 1; + } - int OnOpenDocument() + int OnMaintTempl() + { + int row = dw_list.GetRow(); + if (row<0 || row>dw_list.GetRowCount()) { - if(dw_doclist.GetRowCount() < 1) return 1; - xstring documentid = dw_doclist.GetRowElement(dw_doclist.GetRow()).getAttribute(L"guid"); - //xstring billid = dw_docList - arg_param.AddArg(L"DocumentID",documentid); - arg_param.AddArg(L"return",L"ok"); - arg_param.AddArg(L"action",L"open"); + alert(L"请选择要维护的模板!"); + return 1; + } + else + { + KXMLDOMElement ele = dw_list.GetRowElement(row); + xstring sguid = ele.selectSingleNode(L"ID").text(); + xstring sTemplName = ele.selectSingleNode(L"TemplName").text(); + //xstring sFile = m_filePath + sguid+L".xsl"; + xstring sFile = m_filePath + ele.selectSingleNode(L"urlPath").text(); + arg_param.AddArg(L"xsl", sFile); + arg_param.AddArg(L"return", L"cancel"); + + OpenWindow(L"dev:xpage[Maint.Template.Print.vx]", arg_param); CloseWindow(); - return 1; + } - - int OnOk() + return 1; + } + + int OnAddDir() + { + return 0; + } + int OnAddTempl() + { + if (m_Dir == L"") { - int row = dw_list.GetRow(); - if(row<0 || row>dw_list.GetRowCount()) - { - alert(L"请选择要打印的模板!"); - return 1; - } - else - { - KXMLDOMElement ele = dw_list.GetRowElement(row); - trace(L"\r\n---------------"); - trace(ele.xml); - - xstring sguid = ele.selectSingleNode(L"ID").text; - xstring pre = L""; - if(ele.selectSingleNode(L"TemplPre")) pre = ele.selectSingleNode(L"TemplPre").text; - xstring sTemplName = ele.selectSingleNode(L"TemplName").text; - //xstring sFile = m_filePath + sguid+L".xsl"; - trace(sTemplName); - xstring sFile = m_filePath + ele.selectSingleNode(L"urlPath").text; - arg_param.AddArg(L"xsl",sFile); - arg_param.AddArg(L"return",L"ok"); - arg_param.AddArg(L"template-name",sTemplName); - arg_param.AddArg(L"template-guid",sguid); - arg_param.AddArg(L"template-pre",pre); - arg_param.AddArg(L"action",L"new"); - trace(arg_param.GetString()); - CloseWindow(); - /*xaserver::CreateDirectory(L"C:/Temp"); - int openRet = xaserver::DownLoadFile(GetServerUrl(),m_filePath+file,sTemplName,L"C:/Temp/"+sTemplName); - if(openRet < 0) - { - alert(L"文件打开失败!"); - return 0; - } - - int GENERIC_READ = 0x80000000; - int GENERIC_WRITE = 0x40000000; - int FILE_SHARE_READ = 0x00000001; - int FILE_SHARE_WRITE = 0x00000002; - int OPEN_EXISTING = 3; - int FILE_ATTRIBUTE_ARCHIVE =0x00000020; - int hFile = xwin::CreateFile(L"C:/Temp/"+sTemplName,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0); - if (hFile >0) - { - //int GMEM_MOVEABLE=0x0002; - //int GMEM_ZEROINIT=0x0040; - //int MEMSIZE; - //int hMemory = GlobalAlloc(GMEM_MOVEABLE|GMEM_ZEROINIT,MEMSIZE); - //int pMemory = GlobalLock(hMemory); - //int SizeReadWrite; - //xwin::ReadFile(hFile,pMemory,MEMSIZE - 1,SizeReadWrite,0); - int filesize = xwin::GetFileSize(hFile,0); - trace(L"filesize = %d",filesize); - xstring buffer = L"".space(filesize+1); - int readsize = new int; - xwin::ReadFile(hFile,buffer,filesize,readsize,0); - trace(buffer); - xwin::CloseHandle(hFile); - //GlobalUnlock(pMemory); - //GlobalFree(hMemory); - } */ - /*openRet = xwin::ShellExecute(0,L"open",L"C:/Temp/"+sTemplName,L"",L"",5); - if(openRet < 32) - { - alert(L"文件打开失败2!"); - return 0; - }*/ - } + alert(L"请选择模板目录!"); return 0; } - - int OnSave() + xstring sguid = publiccode::GetGuid(); + xstring sname = sguid + L".xsl"; + xstring suri = L"rpttemplate\\" + m_EntityName; //rpttemplate\SO + //suri = L"supplier00"; + xstring ret = xaserver::UploadFile(suri, sname, GetHWND(), L"", false); + if (ret == L"-1") { - dw_list.AcceptText(); - xml x = new xml; - x.setNativePointer(xml::CreateInstance()); - dw_list.DwUpdateAllToEx(x.GetXmlDoc()); - - xaserverarg arg = new xaserverarg; - arg.setNativePointer(xaserverarg::CreateInstance()); - arg.AddArg(L"content",x.GetXml()); - - if (url::get(L"/sale/data/SysPrintTemplate/updateinfo",arg.GetString(),x) != 1) + alert(L"上传的文件没选择!"); + return 1; + } + else + { + xml x; + xaserverarg args; + args.AddArg(L"sID", sguid); + args.AddArg(L"sEntity", m_EntityName); + args.AddArg(L"sDir", m_Dir); + args.AddArg(L"urlPath", sname); + //alert(m_Dir); + while (ret.find(L"\\", 0) >= 0) + ret = ret.mid(ret.find(L"\\", 0) + 1, 9999); + + args.AddArg(L"sTemplName", ret); + //trace(args.GetString()); + if (xurl::get(L"/sale/data/SysPrintTemplate/Save", args.GetString(), x) != 1) { - trace(L"error:"+x.GetXml()); + trace((xstring)L"error:" + x.xml()); alert(L"保存出错了!"); return 1; - } + } else - { - dw_list.ResetUpdateStatus(); - alert(L"保存成功!"); - } - - return 1; - } - - int PreOnCmdDispatch(xstring comdid) - { - //返回0——不在执行以下代码;返回其他——执行以下代码。 - if(comdid.left(8) == L"xmPanel:"){ - xstring no = comdid.mid(8, 99); - //int id = no.toInt(); - - xml x = new xml; - x.setNativePointer(xml::CreateInstance()); - x.LoadXml(strNode); - KXMLDOMDocument doc= x.GetXmlDoc(); - KXMLDOMElement e = doc.documentElement; - xstring slable =e.selectSingleNode(L"//xtoolbutton[@name='"+comdid+L"']/@caption").text; - m_Dir = slable; - OnRetrieve(); - - return 1; - } - if (comdid==L"xmAddDir") return OnAddDir(); - if (comdid==L"xmAddTempl" && bupdate) return OnAddTempl(); - if (comdid==L"xmDelTempl" && bupdate) return OnDelTempl(); - if (comdid==L"xmMaintTempl" && bupdate) return OnMaintTempl(); - if (comdid==L"xmNewTempl" && bupdate) return OnNewTempl(); - if (comdid==L"xmHtml") return OnHtml(); - if (comdid==L"xmOk") return OnOk(); - if (comdid==L"xmSave") return OnSave(); - if(comdid==L"xmOpen") return OnOpenDocument(); - else if (comdid==L"xmCancel") { - arg_param.AddArg(L"return",L"cancel"); - CloseWindow(); - return 1; + alert(L"上传模板成功!"); + OnRetrieve(); } + } + return 1; + } + + int OnDelTempl() + { + + int row = dw_list.GetRow(); + if (row<0 || row>dw_list.GetRowCount()) + { + alert(L"请选择要删除的模板!"); return 0; } - - - int PostOnAttachEvent() + else { - //AttachEvent(L"dw_list",L"DWV_ROWFOCUSCHANGED",OnRowChanged); - //AttachEvent(L"dw_list",L"DWV_CLICKED",OnClicked); - //AttachEvent(L"dw_list",L"DWV_RCLICKED",OnRClicked); - //AttachEvent(L"dw_list",L"DWV_ITEMCHANGED",OnItemChanged); - //AttachEvent(L"dw_list",L"DWV_CHILDCONTENT",OnChildContent); - AttachEvent(L"dw_doclist",L"DWV_DOUBLECLICKED",OnDocListDoubleClicked); - AttachEvent(L"dw_list",L"DWV_DOUBLECLICKED",OnDoubleClicked); - return 1; - } - - int SetAgent() - { - PUser puser = new PUser; - puser = publiccode::GetUser(); - xstring susername = puser.name; - if (susername !=L"admin") + if (MessageBox(GetHWND(), L"确定要删除选中的模板?", L"提示", 1) == 2) + return 0; + KXMLDOMElement ele = dw_list.GetRowElement(row); + xstring sguid = ele.selectSingleNode(L"ID").text(); + xml x; + xaserverarg args; + args.AddArg(L"sID", sguid); + if (xurl::get(L"/sale/data/SysPrintTemplate/Delete", args.GetString(), x) != 1) { - xstring xfNodeAgentArea = L"DirButton"; - xnode anode = GetAgentNode(xfNodeAgentArea); - KXMLDOMElement xframeElement = GetElement(); - xstring tools=L"<vbox name='DirButton' height='48' />"; - SetAgentNode(anode, tools); - } - return 1; - } - - int CreateDir() - { - PUser puser = new PUser; - puser = publiccode::GetUser(); - xstring susername = puser.name; - xml x = new xml; - x.setNativePointer(xml::CreateInstance()); - xaserverarg arg = new xaserverarg; - arg.setNativePointer(arg.CreateInstance()); - arg.AddArg(L"EntityName",m_EntityName,L""); - arg.AddArg(L"EntityID",m_EntityID,L""); - arg.AddArg(L"susername",susername,L""); // - if (url::get(L"/sale/data/SysPrintTemplate/Dir",arg.GetString(),x) != 1) - { - trace(x.GetXmlDoc().text); - return -1; - }else - { - xstring s = x.GetXml(); - } - KXMLDOMNodeList nlist = x.GetXmlDoc().selectNodes(L"//Entity"); - int i; - int nlen = nlist.length; - xstring toolStr = L"<vbox name='Dir'>"; - xstring deptName= publiccode::GetUser().deptname; - if(deptName==L"跟单部" && m_EntityName==L"GDN3"){ - for(i=2; i<nlen; i++) - { - KXMLDOMElement e1 = nlist.item(i); - xstring sDir1 = e1.selectSingleNode(L"@Dir").text; - xstring str1 = L"<xtoolbutton image='15' caption='"+sDir1+L"' height='24' name='xmPanel:"+i.toString()+L"' style='background-color:none #ceecce none #ffffff'/>"; - - toolStr += str1; - if (i==2) - m_Dir = sDir1; - } - }else if(deptName.find(L"业务")>=0 && m_EntityName==L"GDN3" ) - { - for(i=1; i<2; i++) - { - KXMLDOMElement e2 = nlist.item(i); - xstring sDir2 = e2.selectSingleNode(L"@Dir").text; - xstring str2 = L"<xtoolbutton image='15' caption='"+sDir2+L"' height='24' name='xmPanel:"+i.toString()+L"' style='background-color:none #ceecce none #ffffff'/>"; - - toolStr += str2; - if (i==1) - m_Dir = sDir2; - } - for(i=4; i<nlen; i++) - { - KXMLDOMElement e3 = nlist.item(i); - xstring sDir3 = e3.selectSingleNode(L"@Dir").text; - xstring str3 = L"<xtoolbutton image='15' caption='"+sDir3+L"' height='24' name='xmPanel:"+i.toString()+L"' style='background-color:none #ceecce none #ffffff'/>"; - - toolStr += str3; - } - }else{ - for(i=0; i<nlen; i++) - { - KXMLDOMElement e = nlist.item(i); - xstring sDir = e.selectSingleNode(L"@Dir").text; - xstring str = L"<xtoolbutton image='15' caption='"+sDir+L"' height='24' name='xmPanel:"+i.toString()+L"' style='background-color:none #ceecce none #ffffff'/>"; - - toolStr += str; - if (i==0) - m_Dir = sDir; - } - } - - toolStr += L"</vbox>"; - strNode = toolStr; - //trace(toolStr); - xnode anode = GetAgentNode(L"Dir"); - xwin::SetAgentNode(anode,toolStr) ; - - OnRetrieve(); - return 1; - } - - int OnInit() - { - SetAgent(); - dw_list = this.GetControl(L"dw_list"); - dw_list.openUrl(L"/sale/view/view.base/template/PrintView/listDialog"); - dw_list.SetReadOnly(true); - dw_list.SetSelectionMode(4); - dw_list.SetColumnState(L"ID",false); - - dw_doclist = GetControl(L"dw_doclist"); - dw_doclist.openUrl(L"/sale/view/GDN/template/doclist"); - - xstring sUrl = GetServerUrl(); - sUrl = sUrl.mid(0, sUrl.length() - 19); - m_filePath = L"/business/rpttemplate"; - arg_param = new xaserverarg; - if (GetParam()) - { - int p = GetParam(); - arg_param.setNativePointer(p); - m_EntityName = arg_param.GetArgString(L"EntityName"); - m_EntityID = arg_param.GetArgString(L"EntityID"); - m_EntityNo = arg_param.GetArgString(L"EntityNo"); - - xaserverarg arg = new xaserverarg; - arg.setNativePointer(xaserverarg::CreateInstance()); - arg.AddArg(L"EntityName", m_EntityName); - arg.AddArg(L"EntityID", m_EntityID); - arg.AddArg(L"EntityNo", m_EntityNo); - xml x =new xml; - x.setNativePointer(xml::CreateInstance()); - if(url::get(L"/sale/data/DocumentList3/bill/doclist", arg.GetString(),x)!=1) - { - xstring error = x.GetXmlDoc().text; - trace(error); - }else - { - dw_doclist.Retrieve(x); - dw_doclist.SetReadOnly(true); - } + trace((xstring)L"error:" + x.xml()); + alert(L"删除出错了!"); + return 0; } else { - arg_param.setNativePointer(arg_param.CreateInstance()); - m_EntityName = L"SO"; - m_EntityID =L"00000000-0000-0000-0000-000000000000"; + alert(L"删除成功!"); + OnRetrieve(); } + } - m_Dir = L""; - m_filePath = m_filePath + L"/" + m_EntityName+L"/"; - //trace(m_filePath); - - CreateDir(); - + return 0; + } + + int OnDocListDoubleClicked(TEvent * evt, int p) + { + HCURSOR hCursor = xutil::SetCursorWait(); + OnOpenDocument(); + xutil::RestoreCursor(hCursor); + return 1; + } + + int OnDoubleClicked(TEvent * evt, int p) + { + HCURSOR hCursor = xutil::SetCursorWait(); + OnOk(); + xutil::RestoreCursor(hCursor); + return 1; + } + + int OnOpenDocument() + { + if (dw_doclist.GetRowCount() < 1) return 1; + xstring documentid = dw_doclist.GetRowElement(dw_doclist.GetRow()).getAttribute(L"guid"); + //xstring billid = dw_docList + arg_param.AddArg(L"DocumentID", documentid); + arg_param.AddArg(L"return", L"ok"); + arg_param.AddArg(L"action", L"open"); + CloseWindow(); + return 1; + } + + int OnOk() + { + int row = dw_list.GetRow(); + if (row<0 || row>dw_list.GetRowCount()) + { + alert(L"请选择要打印的模板!"); return 1; } - - int onload() - { - responsewin::onload(); - - /*if (GetParam()) + else { - xstring action = arg_param.GetArgString(L"action"); - if(action==L"open" || (action==L"" && dw_doclist.GetRowCount() > 0)) - SwitchLayer(L"sheet2",L"frame"); + KXMLDOMElement ele = dw_list.GetRowElement(row); + trace(L"\r\n---------------"); + trace(ele.xml()); + + xstring sguid = ele.selectSingleNode(L"ID").text(); + xstring pre = L""; + if (ele.selectSingleNode(L"TemplPre")) pre = ele.selectSingleNode(L"TemplPre").text(); + xstring sTemplName = ele.selectSingleNode(L"TemplName").text(); + //xstring sFile = m_filePath + sguid+L".xsl"; + trace(sTemplName); + xstring sFile = m_filePath + ele.selectSingleNode(L"urlPath").text(); + arg_param.AddArg(L"xsl", sFile); + arg_param.AddArg(L"return", L"ok"); + arg_param.AddArg(L"template-name", sTemplName); + arg_param.AddArg(L"template-guid", sguid); + arg_param.AddArg(L"template-pre", pre); + arg_param.AddArg(L"action", L"new"); + trace(arg_param.GetString()); + CloseWindow(); + /*xaserver::CreateDirectory(L"C:/Temp"); + int openRet = xaserver::DownLoadFile(GetServerUrl(),m_filePath+file,sTemplName,L"C:/Temp/"+sTemplName); + if(openRet < 0) + { + alert(L"文件打开失败!"); + return 0; + } + + int GENERIC_READ = 0x80000000; + int GENERIC_WRITE = 0x40000000; + int FILE_SHARE_READ = 0x00000001; + int FILE_SHARE_WRITE = 0x00000002; + int OPEN_EXISTING = 3; + int FILE_ATTRIBUTE_ARCHIVE =0x00000020; + int hFile = xwin::CreateFile(L"C:/Temp/"+sTemplName,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0); + if (hFile >0) + { + //int GMEM_MOVEABLE=0x0002; + //int GMEM_ZEROINIT=0x0040; + //int MEMSIZE; + //int hMemory = GlobalAlloc(GMEM_MOVEABLE|GMEM_ZEROINIT,MEMSIZE); + //int pMemory = GlobalLock(hMemory); + //int SizeReadWrite; + //xwin::ReadFile(hFile,pMemory,MEMSIZE - 1,SizeReadWrite,0); + int filesize = xwin::GetFileSize(hFile,0); + trace(L"filesize = %d",filesize); + xstring buffer = L"".space(filesize+1); + int readsize = new int; + xwin::ReadFile(hFile,buffer,filesize,readsize,0); + trace(buffer); + xwin::CloseHandle(hFile); + //GlobalUnlock(pMemory); + //GlobalFree(hMemory); + } */ + /*openRet = xwin::ShellExecute(0,L"open",L"C:/Temp/"+sTemplName,L"",L"",5); + if(openRet < 32) + { + alert(L"文件打开失败2!"); + return 0; + }*/ } - */ + return 0; + } + + int OnSave() + { + dw_list.AcceptText(); + xml x; + + dw_list.DwUpdateAllToEx(x); + + xaserverarg arg; + arg.setNativePointer(xaserverarg::CreateInstance()); + arg.AddArg(L"content", x.xml()); + + if (xurl::get(L"/sale/data/SysPrintTemplate/updateinfo", arg.GetString(), x) != 1) + { + trace((xstring)L"error:" + x.xml()); + alert(L"保存出错了!"); + return 1; + } + else + { + dw_list.ResetUpdateStatus(); + alert(L"保存成功!"); + } return 1; } - - int onloaded() + + int PreOnCmdDispatch(xstring comdid) { - //responsewin::onload(); - + //返回0——不在执行以下代码;返回其他——执行以下代码。 + if (comdid.left(8) == L"xmPanel:") { + xstring no = comdid.mid(8, 99); + //int id = no.toInt(); + + xml x; + + x.loadXML(strNode); + KXMLDOMDocument doc = x; + KXMLDOMElement e = doc.documentElement(); + xstring slable = e.selectSingleNode(L"//xtoolbutton[@name='" + comdid + L"']/@caption").text(); + m_Dir = slable; + OnRetrieve(); + + return 1; + } + if (comdid == L"xmAddDir") return OnAddDir(); + if (comdid == L"xmAddTempl" && bupdate) return OnAddTempl(); + if (comdid == L"xmDelTempl" && bupdate) return OnDelTempl(); + if (comdid == L"xmMaintTempl" && bupdate) return OnMaintTempl(); + if (comdid == L"xmNewTempl" && bupdate) return OnNewTempl(); + //if (comdid==L"xmHtml") return OnHtml(); + if (comdid == L"xmOk") return OnOk(); + if (comdid == L"xmSave") return OnSave(); + if (comdid == L"xmOpen") return OnOpenDocument(); + else if (comdid == L"xmCancel") + { + arg_param.AddArg(L"return", L"cancel"); + CloseWindow(); + return 1; + } + return 0; + } + + + int PostOnAttachEvent() + { + //AttachEvent(L"dw_list",L"DWV_ROWFOCUSCHANGED",OnRowChanged); + //AttachEvent(L"dw_list",L"DWV_CLICKED",OnClicked); + //AttachEvent(L"dw_list",L"DWV_RCLICKED",OnRClicked); + //AttachEvent(L"dw_list",L"DWV_ITEMCHANGED",OnItemChanged); + //AttachEvent(L"dw_list",L"DWV_CHILDCONTENT",OnChildContent); + AttachEvent(L"dw_doclist", L"DWV_DOUBLECLICKED", (FEvent)&TemplatePrintDialog::OnDocListDoubleClicked); + AttachEvent(L"dw_list", L"DWV_DOUBLECLICKED", (FEvent)&TemplatePrintDialog::OnDoubleClicked); + return 1; + } + + int SetAgent() + { + PUser& puser = *publiccode::GetUser(); + xstring susername = puser.name; + if (susername != L"admin") + { + xstring xfNodeAgentArea = L"DirButton"; + xnode anode = GetAgentNode(xfNodeAgentArea); + KXMLDOMElement xframeElement = GetElement(); + xstring tools = L"<vbox name='DirButton' height='48' />"; + SetAgentNode(anode, tools); + } + return 1; + } + + int CreateDir() + { + PUser& puser = *publiccode::GetUser(); + xstring susername = puser.name; + xml x; + + xaserverarg arg; + arg.setNativePointer(arg.CreateInstance()); + arg.AddArg(L"EntityName", m_EntityName, L""); + arg.AddArg(L"EntityID", m_EntityID, L""); + arg.AddArg(L"susername", susername, L""); // + if (xurl::get(L"/sale/data/SysPrintTemplate/Dir", arg.GetString(), x) != 1) + { + trace(x.text()); + return -1; + } + else + { + xstring s = x.xml(); + } + KXMLDOMNodeList nlist = x.selectNodes(L"//Entity"); + int i; + int nlen = nlist.length(); + xstring toolStr = L"<vbox name='Dir'>"; + xstring deptName = publiccode::GetUser()->deptname; + if (deptName == L"跟单部" && m_EntityName == L"GDN3") { + for (i = 2; i < nlen; i++) + { + KXMLDOMElement e1 = nlist.item(i); + xstring sDir1 = e1.selectSingleNode(L"@Dir").text(); + xstring str1 = L"<xtoolbutton image='15' caption='" + sDir1 + L"' height='24' name='xmPanel:" + xstring(i) + L"' style='background-color:none #ceecce none #ffffff'/>"; + + toolStr += str1; + if (i == 2) + m_Dir = sDir1; + } + } + else if (deptName.find(L"业务") >= 0 && m_EntityName == L"GDN3") + { + for (i = 1; i < 2; i++) + { + KXMLDOMElement e2 = nlist.item(i); + xstring sDir2 = e2.selectSingleNode(L"@Dir").text(); + xstring str2 = L"<xtoolbutton image='15' caption='" + sDir2 + L"' height='24' name='xmPanel:" + xstring(i) + L"' style='background-color:none #ceecce none #ffffff'/>"; + + toolStr += str2; + if (i == 1) + m_Dir = sDir2; + } + for (i = 4; i < nlen; i++) + { + KXMLDOMElement e3 = nlist.item(i); + xstring sDir3 = e3.selectSingleNode(L"@Dir").text(); + xstring str3 = L"<xtoolbutton image='15' caption='" + sDir3 + L"' height='24' name='xmPanel:" + xstring(i) + L"' style='background-color:none #ceecce none #ffffff'/>"; + + toolStr += str3; + } + } + else { + for (i = 0; i < nlen; i++) + { + KXMLDOMElement e = nlist.item(i); + xstring sDir = e.selectSingleNode(L"@Dir").text(); + xstring str = L"<xtoolbutton image='15' caption='" + sDir + L"' height='24' name='xmPanel:" + xstring(i) + L"' style='background-color:none #ceecce none #ffffff'/>"; + + toolStr += str; + if (i == 0) + m_Dir = sDir; + } + } + + toolStr += L"</vbox>"; + strNode = toolStr; + //trace(toolStr); + xnode anode = GetAgentNode(L"Dir"); + xwin::SetAgentNode(anode, toolStr); + + OnRetrieve(); + return 1; + } + + int OnInit() + { + SetAgent(); + dw_list = GetControl(L"dw_list"); + dw_list.openUrl(L"/sale/view/view.base/template/PrintView/listDialog"); + dw_list.SetReadOnly(true); + dw_list.SetSelectionMode(4); + dw_list.SetColumnState(L"ID", false); + + dw_doclist = GetControl(L"dw_doclist"); + dw_doclist.openUrl(L"/sale/view/GDN/template/doclist"); + + xstring sUrl = GetServerUrl(); + sUrl = sUrl.mid(0, sUrl.length() - 19); + m_filePath = L"/business/rpttemplate"; + arg_param; + if (GetWinParam()) + { + arg_param = GetArg(); + m_EntityName = arg_param.GetArgString(L"EntityName"); + m_EntityID = arg_param.GetArgString(L"EntityID"); + m_EntityNo = arg_param.GetArgString(L"EntityNo"); + + xaserverarg arg; + arg.setNativePointer(xaserverarg::CreateInstance()); + arg.AddArg(L"EntityName", m_EntityName); + arg.AddArg(L"EntityID", m_EntityID); + arg.AddArg(L"EntityNo", m_EntityNo); + xml x = new xml; + + if (xurl::get(L"/sale/data/DocumentList3/bill/doclist", arg.GetString(), x) != 1) + { + xstring error = x.text(); + trace(error); + } + else + { + dw_doclist.Retrieve(x); + dw_doclist.SetReadOnly(true); + } + } + else + { + arg_param.setNativePointer(arg_param.CreateInstance()); + m_EntityName = L"SO"; + m_EntityID = L"00000000-0000-0000-0000-000000000000"; + } + + m_Dir = L""; + m_filePath = m_filePath + L"/" + m_EntityName + L"/"; + //trace(m_filePath); + + CreateDir(); + + return 1; + } + + int onload() + { + SetArg(); + responsewin::onload(); + /*if (GetParam()) { xstring action = arg_param.GetArgString(L"action"); @@ -608,6 +524,7 @@ SwitchLayer(L"sheet2",L"frame"); } */ + return 1; } }; \ No newline at end of file diff --git a/jrj/project/printview/Template.Print.ViewEx.cpp b/jrj/project/printview/Template.Print.ViewEx.cpp index 04de185..57fac78 100644 --- a/jrj/project/printview/Template.Print.ViewEx.cpp +++ b/jrj/project/printview/Template.Print.ViewEx.cpp @@ -1,13 +1,31 @@ + +#include <guiddef.h> +#include <exdisp.h> // Defines of stuff like IWebBrowser2. This is an include file with Visual C 6 and above +#include <mshtml.h> // Defines of stuff like IHTMLDocument2. This is an include file with Visual C 6 and above +#include <mshtmhst.h> // Defines of stuff like IDocHostUIHandler. This is an include file with Visual C 6 and above +#include <Shlwapi.h> +#include <Windows.h> +#include <comutil.h> + +#undef _XWIN + #include <wobject/xstring.hpp> #include <xcontrol/xtreeview.hpp> #include <xcontrol/xdwgrid.hpp> #include <xcontrol/xlayersheet.hpp> +#include <xcontrol/xhtml.hpp> +#include <wobject/xutil.hpp> #include "vbusiness/vframe/maint.vframe.vbusiness.hpp" #include "viewobject/view.base.hpp" +#include <xcontrol/xcell.hpp> +#include <xcontrol/xexcel.hpp> +#include <xcontrol/xhtml.hpp> +#include <win32/xfile.hpp> using xml = KXMLDOMDocument; +#if 0 namespace _excel for ole "Excel.Application,{00020813-0000-0000-C000-000000000046}"; namespace _mshtml for ole "MSHtml,{3050F1C5-98B5-11CF-BB82-00AA00BDCE0B}"; @@ -22,45 +40,13 @@ void SaveToFile(xstring filename) alias "?SaveToFile@CExcelApplication@@QAEXQA_W@Z"; void Quit() alias "?Quit@CExcelApplication@@QAEXXZ"; }; - -struct MYOPENFILENAMEW -{ - unsigned int lStructSize; - unsigned int hwndOwner; - unsigned int hInstance; - xstring lpstrFilter; - - xstring lpstrCustomFilter; - unsigned int nMaxCustFilter; - unsigned int nFilterIndex; - xstring lpstrFile; - - unsigned int nMaxFile; - xstring lpstrFileTitle; - unsigned int nMaxFileTitle; - xstring lpstrInitialDir; - - xstring lpstrTitle; - unsigned int Flags; - unsigned short nFileOffset; - unsigned short nFileExtension; - xstring lpstrDefExt; - - unsigned int lCustData; - unsigned int lpfnHook; - xstring lpTemplateName; - - //_WIN32_WINNT >= 0x0500 - unsigned int pvReserved; - unsigned int dwReserved; - unsigned int FlagsEx; - // (_WIN32_WINNT >= 0x0500) -}; +#endif -class __declspec(dllexport) TemplatePrintViewEx : public xframe +DeclWinObject_(TemplatePrintViewEx, xframe) { + CreateWinObject_(TemplatePrintViewEx, xframe) public: - xole ole_print; + xhtml ole_print; xcell cell; xstring m_EntityName; xstring m_EntityID; @@ -70,7 +56,6 @@ bool updated; xstring htmlStr; - cexcel excel; bool editing; xstring billName ; @@ -82,49 +67,26 @@ //bool showgrid; bool PaperPrint; +#if 0 + cexcel excel; static stdcall int GetModuleFileName(int hModule ,xstring lpFileName ,int nSize ) native from "kernel32.dll" alias "GetModuleFileNameW"; static stdcall int PathRemoveFileSpec(xstring lpFileName ) native from "shlwapi.dll" alias "PathRemoveFileSpecW"; static stdcall int DeleteFile(xstring lpFileName) native from "kernel32.dll" alias "DeleteFileW"; static stdcall bool GetSaveFileName(ref MYOPENFILENAMEW)native from "comdlg32.dll" alias "GetSaveFileNameW"; +#endif -public: - TemplatePrintViewEx(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} -public: - static TemplatePrintViewEx* CreateInstance(void* implPtr, void* hWnd) - { - TemplatePrintViewEx* pWin = new TemplatePrintViewEx(implPtr, (HWND)hWnd); - return pWin; - } - xstring GetModulePath() - { - xstring str =L""; - str = str.space(255); - GetModuleFileName(0,str,250); - PathRemoveFileSpec(str); - return str; - } - xstring GetModuleTmpPath() - { - xstring str =L""; - str = str.space(255); - GetModuleFileName(0,str,250); - PathRemoveFileSpec(str); - xstring tmp = str + L"\\Temp"; - xaserver::CreateDirectory(tmp); - return tmp; - } - + xstring GetSaveFileName(xstring initFileName, xstring filter, xstring ext) { - char[] szFileName = new char[255] ; - char[] szPath = new char[255]; + wchar_t szFileName[255]; + wchar_t szPath[255]; szFileName[0] = 0; szPath[0] = 0; if(initFileName !=L"") { int len = initFileName.length(); - char[] tmp = initFileName; + const wchar_t* tmp = initFileName; for(int i=0; i<len+1;i++) { //szFileName[i] = tmp[i]; @@ -133,7 +95,7 @@ } int nFilterIndex = 1; - ref MYOPENFILENAMEW ofn = new MYOPENFILENAMEW; + OPENFILENAMEW ofn; ofn.lStructSize = 88;//sizeof(ofn); ofn.hwndOwner = 0; @@ -157,14 +119,13 @@ ofn.lpTemplateName = 0; //debugbreak(); - if(GetSaveFileName(ofn)) + if(xfile::GetSaveFileNameW(ofn)) { - delete ofn; return szPath; } else { - return ""; + return L""; } } @@ -178,21 +139,19 @@ if(m_EntityName==L"GDN3")pre=L"INV"; } xstring file1 = GetSaveFileName(pre+m_EntityNo+L".xlsx", - "Excel1文件(*.xlsx)\0*.xlsx;*.xls\0Excel97文件(*.xls)\0*.xls\0PDF文件(*.pdf)\0*.pdf\0", - "xlsx"); + L"Excel1文件(*.xlsx)\0*.xlsx;*.xls\0Excel97文件(*.xls)\0*.xls\0PDF文件(*.pdf)\0*.pdf\0", + L"xlsx"); if(file1 ==L"") return 1; - if(win32::PathFileExists(file1)) + if(PathFileExists(file1)) { - int res = win32::MessageBox(this.GetHWND(), L"文件已经存在,是否覆盖?",L"提示",4); + int res = MessageBox(GetHWND(), L"文件已经存在,是否覆盖?",L"提示",4); if(res != 6) return 1; } trace(L"\r\n link excel"); - excel = new cexcel; - int hexcel = cexcel::CreateInstance(); - excel.setNativePointer(hexcel); - if(hexcel == 0) + xexcel excel; + if(!excel.GetNativePtr()) { alert(L"不能连接Excel"); return 1; @@ -200,64 +159,62 @@ xstring gid = publiccode::GetGuid(); xstring filename= pre+m_EntityNo+L"_.htm"; - xutil::SaveToFile(GetModuleTmpPath() + L"\\"+ filename, htmlStr,L"",L"",L""); + xutil::SaveToFile(xutil::GetModuleTmpPath() + L"\\"+ filename, htmlStr,NULL,NULL); trace(L"\r\n excel to open"); - excel .OpenDocument(GetModuleTmpPath() + L"\\"+ filename); + excel .OpenDocument(xutil::GetModuleTmpPath() + L"\\"+ filename); trace(L"\r\n trans shape"); //excel .put_Visible(true); excel.TransShape(); trace(L"\r\n save to tmp excel file"); if(file1.find(L".xls")) { - if(win32::PathFileExists(GetModuleTmpPath() + L"\\"+ pre+m_EntityNo+L"_.xls")) - DeleteFile(GetModuleTmpPath() + L"\\"+ pre+m_EntityNo+L"_.xls"); - excel.SaveToFile(GetModuleTmpPath() + L"\\"+ pre+m_EntityNo+L"_.xls"); + if(PathFileExists(xutil::GetModuleTmpPath() + L"\\"+ pre+m_EntityNo+L"_.xls")) + DeleteFile(xutil::GetModuleTmpPath() + L"\\"+ pre+m_EntityNo+L"_.xls"); + excel.SaveToFile(xutil::GetModuleTmpPath() + L"\\"+ pre+m_EntityNo+L"_.xls"); //alert(GetModuleTmpPath() + L"\\"+ pre+m_EntityNo+L"_.xls"); } else { - if(win32::PathFileExists(GetModuleTmpPath() + L"\\"+ pre+m_EntityNo+L"_.xlsx")) - DeleteFile(GetModuleTmpPath() + L"\\"+ pre+m_EntityNo+L"_.xlsx"); - excel.SaveToFile(GetModuleTmpPath() + L"\\"+ pre+m_EntityNo+L"_.xlsx"); + if(PathFileExists(xutil::GetModuleTmpPath() + L"\\"+ pre+m_EntityNo+L"_.xlsx")) + DeleteFile(xutil::GetModuleTmpPath() + L"\\"+ pre+m_EntityNo+L"_.xlsx"); + excel.SaveToFile(xutil::GetModuleTmpPath() + L"\\"+ pre+m_EntityNo+L"_.xlsx"); } trace(L"\r\n save to excel file"); - if(win32::PathFileExists(file1)) //GetModuleTmpPath() + L"\\"+ pre+m_EntityNo+L"_.xlsx")) + if(PathFileExists(file1)) //GetModuleTmpPath() + L"\\"+ pre+m_EntityNo+L"_.xlsx")) DeleteFile(file1); excel.SaveToFile(file1); excel.Quit(); - excel.Release(excel.ptr_native_); + //excel.Release(excel.ptr_native_); return 1; } int OntoExcel() //转为Excel { - excel = new cexcel; - excel.setNativePointer(cexcel::CreateInstance()); - + xexcel excel; xstring gid = publiccode::GetGuid(); xstring pre = m_EntityName; if(m_EntityName==L"SaleOrder") pre=L"PI"; if(m_EntityName==L"GDN3")pre=L"INV"; xstring filename= pre+m_EntityNo+L".htm"; xstring filenameex= pre+m_EntityNo+L".xlsx"; - xutil::SaveToFile(GetModuleTmpPath() + L"\\"+ filename, htmlStr,L"",L"",L""); - excel .OpenDocument(GetModuleTmpPath() + L"\\"+ filename); + xutil::SaveToFile(xutil::GetModuleTmpPath() + L"\\"+ filename, htmlStr,NULL,NULL); + excel .OpenDocument(xutil::GetModuleTmpPath() + L"\\"+ filename); //excel.put_Visible(true); excel.TransShape(); - if(win32::PathFileExists(GetModuleTmpPath() + L"\\"+ filenameex)) - DeleteFile(GetModuleTmpPath() + L"\\"+ filenameex); - excel.SaveToFile(GetModuleTmpPath() + L"\\"+ filenameex); + if(PathFileExists(xutil::GetModuleTmpPath() + L"\\"+ filenameex)) + DeleteFile(xutil::GetModuleTmpPath() + L"\\"+ filenameex); + excel.SaveToFile(xutil::GetModuleTmpPath() + L"\\"+ filenameex); excel.put_Visible(true); - excel.Release(excel.ptr_native_); + //excel.Release(excel.ptr_native_); return 1; } xstring getfilePath() { - xstring path=GetModulePath()+L"\\resource\\image"; + xstring path= xutil::GetModulePath()+L"\\resource\\image"; xstring filename=L"contract.jpg"; filename=L"sign.png"; filename=L"jrj_maersk.png"; @@ -281,7 +238,7 @@ xstring right=L""; xstring tag=L""; - len = L"[$element:".length(); + len = ((xstring)L"[$element:").length(); while(true) { pos = str.find(L"[$element:"); @@ -305,7 +262,7 @@ str = pre + str; pre = L""; - len = L"[/$element:".length(); + len = ((xstring)L"[/$element:").length(); while(true) { pos = str.find(L"[/$element:"); @@ -336,16 +293,16 @@ str = replaceInnerElement(str); return str; } - +#if 0 xstring DownLoadSKUNoPic(xstring SKUNo,xstring CustomerID=L"",xstring CustomerItemNo=L"") { if(SKUNo.length()>20) return DownLoadPaperPic(SKUNo); - xml x = new xml; - x.setNativePointer(xml::CreateInstance()); - xaserverarg arg = new xaserverarg; - arg.setNativePointer(arg.CreateInstance()); + xml x; + + xaserverarg arg; + arg.AddArg(L"SKUNo",SKUNo); xstring src =L"/sale/data/ProductLibrary3/pref/picture/imagelistSKUNo"; @@ -356,49 +313,47 @@ src =L"/sale/data/ProductLibrary3/pref/picture/customer/imagelistSKUNo"; } //trace(L"SKUNo=L"+SKUNo);//要有展示图片查询条件内必定要skuno - if(url::get(src,arg.GetString(),x)!=1) + if(xurl::get(src,arg.GetString(),x)!=1) { trace(L"error for download skuno pic!"); - return ""; + return L""; } xstring spath = L""; - xstring path =GetModuleTmpPath(); + xstring path = xutil::GetModuleTmpPath(); xstring ext = L"jpg"; - if(x.GetXmlDoc().selectSingleNode(L"//FileExt[1]")) + if(x.selectSingleNode(L"//FileExt[1]")) { - ext = x.GetXmlDoc().selectSingleNode(L"//FileExt[1]").text; + ext = x.selectSingleNode(L"//FileExt[1]").text(); }else if(CustomerID !=L"") { src =L"/sale/data/ProductLibrary3/pref/picture/imagelistSKUNo"; - if(url::get(src,arg.GetString(),x)!=1) + if(xurl::get(src,arg.GetString(),x)!=1) { trace(L"error for download skuno pic!"); - return ""; + return L""; } - if(x.GetXmlDoc().selectSingleNode(L"//FileExt[1]")) - ext = x.GetXmlDoc().selectSingleNode(L"//FileExt[1]").text; + if(x.selectSingleNode(L"//FileExt[1]")) + ext = x.selectSingleNode(L"//FileExt[1]").text(); } xstring filename = SKUNo + L"." + ext; - if(x.GetXmlDoc().selectSingleNode(L"//PicPath[1]")) - spath = x.GetXmlDoc().selectSingleNode(L"//PicPath[1]").text; + if(x.selectSingleNode(L"//PicPath[1]")) + spath = x.selectSingleNode(L"//PicPath[1]").text(); if(spath != L"") { xaserver::DownLoadFile(GetServerUrl(),spath,L"",path+L"/"+filename); } - return "file://"+ path+L"/"+filename; + return (xstring)L"file://"+ path+L"/"+filename; } - +#endif xstring DownLoadSKUNoPic(xstring SKUNo,xstring CustomerID=L"",xstring CustomerItemNo=L"") { if(SKUNo.length()>20) return DownLoadPaperPic(SKUNo); - xml x = new xml; - x.setNativePointer(xml::CreateInstance()); - xaserverarg arg = new xaserverarg; - arg.setNativePointer(arg.CreateInstance()); + xml x; + xaserverarg arg; arg.AddArg(L"SKUNo",SKUNo); xstring src =L"/sale/data/ProductLibrary3/pref/picture/imagelistSKUNo"; @@ -409,99 +364,97 @@ src =L"/sale/data/ProductLibrary3/pref/picture/customer/imagelistSKUNo"; } //trace(L"SKUNo=L"+SKUNo);//要有展示图片查询条件内必定要skuno - if(url::get(src,arg.GetString(),x)!=1) + if(xurl::get(src,arg.GetString(),x)!=1) { trace(L"error for download skuno pic!"); - return ""; + return L""; } xstring spath = L""; - xstring path =GetModuleTmpPath(); + xstring path = xutil::GetModuleTmpPath(); xstring ext = L"jpg"; - if(x.GetXmlDoc().selectSingleNode(L"//FileExt[1]")) + if(x.selectSingleNode(L"//FileExt[1]")) { - ext = x.GetXmlDoc().selectSingleNode(L"//FileExt[1]").text; + ext = x.selectSingleNode(L"//FileExt[1]").text(); }else if(CustomerID !=L"") { src =L"/sale/data/ProductLibrary3/pref/picture/imagelistSKUNo"; - if(url::get(src,arg.GetString(),x)!=1) + if(xurl::get(src,arg.GetString(),x)!=1) { trace(L"error for download skuno pic!"); - return ""; + return L""; } - if(x.GetXmlDoc().selectSingleNode(L"//FileExt[1]")) - ext = x.GetXmlDoc().selectSingleNode(L"//FileExt[1]").text; + if(x.selectSingleNode(L"//FileExt[1]")) + ext = x.selectSingleNode(L"//FileExt[1]").text(); } xstring filename = SKUNo + L"." + ext; - if(x.GetXmlDoc().selectSingleNode(L"//PicPath[1]")) - spath = x.GetXmlDoc().selectSingleNode(L"//PicPath[1]").text; + if(x.selectSingleNode(L"//PicPath[1]")) + spath = x.selectSingleNode(L"//PicPath[1]").text(); if(spath != L"") { xaserver::DownLoadFile(GetServerUrl(),spath,L"",path+L"/"+filename); } - return "file://"+ path+L"/"+filename; + return L"file://"+ path+L"/"+filename; } xstring GetImageUrl(xstring id) { - xml xp=new xml; - xp.setNativePointer(xml::CreateInstance()); - xaserverarg arg_pic=new xaserverarg; - arg_pic.setNativePointer(arg_pic.CreateInstance()); + xml xp; + xaserverarg arg_pic; arg_pic.AddArg(L"id",id); xstring res = L"/sale/data/productlibrary3/image/url"; - if(url::get(res,arg_pic.GetString(),xp)!=1) + if(xurl::get(res,arg_pic.GetString(),xp)!=1) { - xp.GetXml(); + xp.xml(); return 1; }else { - xstring path = xp.GetXmlDoc().text; + xstring path = xp.text(); if(path !=L"") return path; } - return "/business/products/chanpin/"+id.left(2)+L"/"+ id+L".jpg"; + return L"/business/products/chanpin/"+id.left(2)+L"/"+ id+L".jpg"; } xstring DownLoadPaperPic(xstring guid) { - xstring path =GetModuleTmpPath(); + xstring path = xutil::GetModuleTmpPath(); xstring ext = L"jpg"; xstring filename = guid + L"." + ext; xstring spath = GetImageUrl(guid); //alert(spath); xaserver::DownLoadFile(GetServerUrl(),spath,L"",path+L"/"+filename); - return "file://"+ path+L"/"+filename; + return (xstring)L"file://"+ path+L"/"+filename; } xstring DownLoadPaperPic1(xstring guid) { - xstring path =GetModuleTmpPath(); + xstring path = xutil::GetModuleTmpPath(); xstring ext = L"jpg"; xstring filename = guid + L"." + ext; xstring str = guid.mid(0,2); xstring spath = L"/business/products/chanpin/"+str+L"/"+guid+L".jpg"; xaserver::DownLoadFile(GetServerUrl(),spath,L"",path+L"/"+filename); - return "file://"+ path+L"/"+filename; + return (xstring)L"file://"+ path+L"/"+filename; } xstring DownLoadUrlPic(xstring src) { xstring guid = publiccode::GetGuid(); - xstring path =GetModuleTmpPath(); + xstring path = xutil::GetModuleTmpPath(); xstring ext = L"jpg"; xstring filename = guid + L"." + ext; xstring spath = src; xaserver::DownLoadFile(GetServerUrl(),spath,L"",path+L"/"+filename); - return "file://"+ path+L"/"+filename; + return (xstring)L"file://"+ path+L"/"+filename; } int OnHtml(xaserverarg arg) { - int hCursor = xutil::SetCursorWait(); + HCURSOR hCursor = xutil::SetCursorWait(); xstring sEntityName = arg.GetArgString(L"EntityName"); xstring sEntityID = arg.GetArgString(L"EntityID"); @@ -513,13 +466,12 @@ if(!m_dataset) { xml x0 = new xml; - x0.setNativePointer(xml::CreateInstance()); - if (url::get(dataUrl,arg.GetString(),x0) != 1) + if (xurl::get(dataUrl,arg.GetString(),x0) != 1) { alert(L"数据集出错了!"); return 0; } - trace(x0.GetXml()); + trace(x0.xml()); m_dataset = x0; } @@ -528,23 +480,22 @@ arg.AddArg(L"sPath",sPath); m_spath = sPath; - xml xsl = new xml; - xsl.setNativePointer(xml::CreateInstance()); - if (url::get(L"/sale/data/SysPrintTemplate/getxsl",arg.GetString(),xsl) != 1) + xml xsl; + if (xurl::get(L"/sale/data/SysPrintTemplate/getxsl", arg.GetString(), xsl) != 1) { alert(L"数据模板错误!"); return 0; } - xstring xslStr = xsl.GetXml(); + xstring xslStr = xsl.xml(); xslStr = adjustXsl(xslStr,sPath); - xsl.LoadXml(xslStr); + xsl.loadXML(xslStr); //trace(m_dataset.GetXml()); trace(L"\r\n--------\r\n"+xslStr); - m_strHtml = m_dataset.GetXmlDoc().transformNode(xsl.GetXmlDoc()); + m_strHtml = m_dataset.transformNode(xsl); xstring aspace = m_strHtml.replace(L"[空]",L" ",0); aspace = aspace.replace(L"[line]",L"<br/>",0); xstring scontent = aspace.replace(L"<?xml version=\"1.0\"?>",L"",0); @@ -555,7 +506,7 @@ int pos = tail.find(L"src=\"item-picture:"); while(pos > 0) { - int spos = pos+L"src=\"item-picture:".length(); + int spos = pos+((xstring)L"src=\"item-picture:").length(); int pos1 = tail.find(L"\"",spos+1); xstring skuno = tail.mid(spos,pos1 - spos ).trim(); xstring CustomerID=L""; @@ -582,7 +533,7 @@ int position = tail.find(L"src=\"paper-picture:"); while(position > 0) { - int sposition = position+L"src=\"paper-picture:".length(); + int sposition = position+ ((xstring)L"src=\"paper-picture:").length(); int position1 = tail.find(L"\"",sposition+1); xstring guid = tail.mid(sposition,position1 - sposition ).trim(); xstring src2 = DownLoadPaperPic(guid); @@ -597,10 +548,10 @@ position = tail.find(L"src=\"src-picture:"); while(position > 0) { - sposition = position+L"src=\"src-picture:".length(); - position1 = tail.find(L"\"",sposition+1); - guid = tail.mid(sposition,position1 - sposition ).trim(); - src2 = DownLoadUrlPic(guid); + int sposition = position+((xstring)L"src=\"src-picture:").length(); + int position1 = tail.find(L"\"",sposition+1); + xstring guid = tail.mid(sposition,position1 - sposition ).trim(); + xstring src2 = DownLoadUrlPic(guid); head += tail.left(position) + L"src=\"" + src2; tail = tail.mid(position1,999999999); position = tail.find(L"src=\"src-picture:"); @@ -611,8 +562,7 @@ htmlStr = scontent; ole_print.LoadHtml(scontent); - xml x1 = new xml; - x1.setNativePointer(xml ::CreateInstance()); + xml x1; //xstring xcontent = m_strHtml.replace(L" ",L"[空]",0); xstring xcontent = m_strHtml.replace(L"[空]",L" ",0); int pos0 = xcontent.find(L"<xml"); @@ -622,15 +572,15 @@ xstring str = xcontent.left(pos0)+ xcontent.mid(pos2+6,9999999); xcontent = str; } - x1.LoadXml(xcontent); - if(x1.GetXmlDoc()) + x1.loadXML(xcontent); + if(x1) { /*if(!showgrid) { SendCtrlCmd(cell,L"xmFormatShowGrid"); showgrid = true; }*/ - cell.LoadTemplate(x1.GetXmlDoc()); + cell.LoadTemplate(x1); cell.Redraw(); } @@ -641,40 +591,60 @@ int updateHtml() { - _mshtml::IHTMLDocument3 doc = ole_print.GetHtmlDocument(); - _mshtml::IHTMLElementCollection rows = doc.getElementsByTagName(L"tr"); - _mshtml::IHTMLElementCollection rows2 = doc.getElementsByTagName(L"td"); - int len = rows.length; - int len2 = rows2.length; + IHTMLDocument3* doc = (IHTMLDocument3 * )ole_print.GetHtmlDocument(); + IHTMLElementCollection* rows; + doc->getElementsByTagName((BSTR)L"tr",&rows); + IHTMLElementCollection* rows2; + doc->getElementsByTagName((BSTR)L"td",&rows2); + long len; + rows->get_length(&len); + long len2; + rows2->get_length(&len2); for(int i=0; i < len - 1;i++) { - _mshtml::IHTMLElement e = rows.item(i,i); - e.style.setAttribute(L"height",e.offsetHeight,0); - e.Release(); + _variant_t var; + IHTMLElement* e=0; + IHTMLStyle* pstyle=0; + long offsetHeight=0; + rows->item((_variant_t)i, (_variant_t)i,(IDispatch**) & e); + e->get_style(&pstyle); + e->get_offsetHeight(&offsetHeight); + pstyle->setAttribute((BSTR)L"height",(_variant_t)offsetHeight, 0); + e->Release(); + pstyle->Release(); } - for( i=0; i < len2 - 1;i++) + for( int i=0; i < len2 - 1;i++) { - _mshtml::IHTMLElement e2 = rows2.item(i,i); - e2.style.setAttribute(L"width",e.offsetWidth,0); - e2.Release(); + IHTMLElement* e = 0; + IHTMLStyle* pstyle = 0; + long offsetWidth=0; + rows->item((_variant_t)i, (_variant_t)i, (IDispatch**)&e); + e->get_style(&pstyle); + e->get_offsetHeight(&offsetWidth); + pstyle->setAttribute((BSTR)L"width", (_variant_t)offsetWidth, 0); + e->Release(); + pstyle->Release(); } - rows.Release(); - doc.release(); - htmlStr = doc.documentElement.outerHtml; + rows->Release(); + doc->Release(); + + //IHTMLElement* e = 0; + //doc->get_documentElement(&e); + //BSTR bstrHtml=0; + //e->get_outerHTML(&bstrHtml); + return 1; } int OnOpenDocument() { - if(GetParam()) + if(GetWinParam()) { - xaserverarg arg = new xaserverarg; - arg.setNativePointer(GetParam()); - int p = arg.ptr_native_; + xaserverarg arg=GetArg(); arg.AddArg(L"action",L"open"); arg.AddArg(L"DocumentID",L""); arg.AddArg(L"ok",L""); - openUrl(L"/sale/view/view.dlg/xpage/Template/PrintDialog", p); + openUrl(L"/sale/view/view.dlg/xpage/Template/PrintDialog", &arg); xstring ret = arg.GetArgString(L"return"); xstring action = arg.GetArgString(L"action"); if (ret ==L"ok") @@ -682,24 +652,24 @@ if(action ==L"open") { m_DocumentID = arg.GetArgString(L"DocumentID"); - xml x = new xml; - x.setNativePointer(xml::CreateInstance()); + xml x; + xstring prestr = m_DocumentID.mid(0,2); - prestr = prestr.upper(); + prestr = prestr.toUpper(); xaserver::LoadUrl(GetServerUrl(),L"/business/data/bill/"+prestr+L"/"+ m_DocumentID+L".jpg",L"",x); - if(x.GetXml()!=L"") + if((xstring)x.xml()!=L"") { - if(x.GetXmlDoc()) + if(x) { /*if(!showgrid) { SendCtrlCmd(cell,L"xmFormatShowGrid"); showgrid = true; }*/ - cell.LoadTemplate(x.GetXmlDoc()); + cell.LoadTemplate(x); cell.Redraw(); } - ole_print.LoadHtml(x.GetXml()); + ole_print.LoadHtml(x.xml()); }else { ole_print.LoadHtml(L"<html><body>未找到对应的文档</body></html>"); @@ -709,7 +679,7 @@ else { xstring templateName = arg.GetArgString(L"template-name"); - win32::SetWindowText(GetHWND(),templateName); + SetWindowText(GetHWND(),templateName); billName = templateName; billPre = arg.GetArgString(L"template-pre"); billID = arg.GetArgString(L"template-guid"); @@ -728,13 +698,11 @@ int OnPrintDialog() { - if(GetParam()) + if(GetWinParam()) { - xaserverarg arg = new xaserverarg; - arg.setNativePointer(GetParam()); - int p = arg.ptr_native_; + xaserverarg arg=GetArg(); arg.AddArg(L"ok",L""); - openUrl(L"/sale/view/view.dlg/xpage/Template/PrintDialog", p); + openUrl(L"/sale/view/view.dlg/xpage/Template/PrintDialog", &arg); xstring ret = arg.GetArgString(L"return"); xstring action = arg.GetArgString(L"action"); if (ret ==L"ok") @@ -743,23 +711,23 @@ if(action ==L"open") { m_DocumentID = arg.GetArgString(L"DocumentID"); - xml x = new xml; - x.setNativePointer(xml::CreateInstance()); + xml x; + xstring prestr = m_DocumentID.mid(0,2); - prestr = prestr.upper(); + prestr = prestr.toUpper(); xaserver::LoadUrl(GetServerUrl(),L"/business/data/bill/"+prestr+L"/"+ m_DocumentID+L".jpg",L"",x); - if(x.GetXml()!=L"") + if((xstring)x.xml()!=L"") { xstring content = L""; - if(x.GetXmlDoc().documentElement.tagName==L"Bill") + if((xstring)x.documentElement().tagName() == L"Bill") { - content = x.GetXmlDoc().documentElement.text; + content = x.documentElement().text(); content = content.replace(L"[空]",L" ",0); - ole_print.LoadHtml(content); + ole_print.LoadHtml((LPTSTR)content.c_str()); }else { - if(x.GetXmlDoc()) + if(x) { /*if(!showgrid) { @@ -767,28 +735,28 @@ showgrid = true; }*/ xml x1 = new xml; - x1.setNativePointer(xml::CreateInstance()); - xstring content1 = x.GetXml(); + + xstring content1 = x.xml(); content1 = content1.replace(L"[空]",L" ",0); //trace(content1); - x1.LoadXml(content1); - cell.LoadTemplate(x1.GetXmlDoc()); + x1.loadXML(content1); + cell.LoadTemplate(x1); cell.Redraw(); } - content = x.GetXml(); + content = x.xml(); content = content.replace(L"[空]",L" ",0); ole_print.LoadHtml(content); } }else { - ole_print.LoadHtml(L"<html><body>未找到对应的文档</body></html>"); + ole_print.LoadHtml((LPTSTR)L"<html><body>未找到对应的文档</body></html>"); //cell.LoadHtml(L"<html><body>未找到对应的文档</body></html>"); } } else { xstring templateName = arg.GetArgString(L"template-name"); - win32::SetWindowText(GetHWND(),templateName); + SetWindowText(GetHWND(),templateName); billName = templateName; billPre = arg.GetArgString(L"template-pre"); billID = arg.GetArgString(L"template-guid"); @@ -817,22 +785,22 @@ xstring tools=L"<hbox class=''>"; if(agent) { - nlist = agent.SelectNodes(L".//xtoolbutton"); - nlen = nlist.length; + nlist = agent.selectNodes(L".//xtoolbutton"); + nlen = nlist.length(); for(index=0;index<nlen;index++) { ele = nlist.item(index); - xstring name = ele.selectSingleNode(L"@name").text; - xstring label = ele.selectSingleNode(L"@caption").text; + xstring name = ele.selectSingleNode(L"@name").text(); + xstring label = ele.selectSingleNode(L"@caption").text(); xstring image; xstring src = L""; if(ele.selectSingleNode(L"@image")) - image = ele.selectSingleNode(L"@image").text; + image = ele.selectSingleNode(L"@image").text(); else image = L"0 22"; if(ele.selectSingleNode(L"@src")) - src = ele.selectSingleNode(L"@src").text; + src = ele.selectSingleNode(L"@src").text(); int strLen = label.length(); int width = 60 + (strLen - 2) * 10; @@ -850,7 +818,7 @@ } //焦点激活处理函数 - int OnSetFocus(ref TNotifyEvent evt,int p) + int OnSetFocus(TEvent * evt,int p) { //重置工具条 SetAgent(); @@ -887,17 +855,18 @@ } int PrintPaper() //打印 { - //ole_print.GetHtmlDocument(); +#ifdef shouldFinish //ole_print.GetHtmlDocument(); //return 1; - _mshtml::IHTMLDocument3 doc = ole_print.GetHtmlDocument(); - _mshtml::IHTMLElementCollection rows = doc.getElementsByTagName(L"tr"); + IHTMLDocument3* doc = (IHTMLDocument3 * )ole_print.GetHtmlDocument(); + IHTMLElementCollection* rows = doc->getElementsByTagName(L"tr"); - int len = rows.length; + long len; + rows->get_length(&len); for(int i=0; i < len - 1;i++) { //oleobject v = rows.item(i,i); - _mshtml::IHTMLElement e = rows.item(i,i); - _mshtml::IHTMLElement2 e1 = e; + IHTMLElement* e = rows->item(i,i); + IHTMLElement2* e1 = e; //e.setAttribute(L"height",e1.clientHeight,0); e.setAttribute(L"height",300,0); e.Release(); @@ -905,6 +874,7 @@ } rows.Release(); doc.Release(); +#endif /* if(PaperPrint == false) { @@ -955,7 +925,7 @@ xstring guid = publiccode::GetGuid(); xstring prestr = guid.mid(0,2); - prestr = prestr.upper(); + prestr = prestr.toUpper(); content = content.replace(L"gb2312",L"utf-16",0); @@ -963,10 +933,9 @@ content = content.replace(L"&",L"",0); xml x0 = new xml; - x0.setNativePointer(xml::CreateInstance()); - x0.LoadXml(L"<Bill/>"); - x0.GetXmlDoc().documentElement.text = content; - content = x0.GetXml(); + x0.loadXML(L"<Bill/>"); + x0.documentElement().settext(content); + content = x0.xml(); int ret= xaserver::UploadData(L"bill"+prestr, guid+L".jpg", content); if(ret < 0) trace(L"error upload"); @@ -979,20 +948,20 @@ ls_xml += L"<BillName>"+ billName + L"</BillName>"; ls_xml += L"</DocumentList>"; - xml x = new xml; - x.setNativePointer(xml::CreateInstance()); - x.LoadXml(ls_xml); - xaserverarg arg = new xaserverarg; - arg.setNativePointer(xaserverarg::CreateInstance()); - arg.AddArg(L"content",x.GetXml()); + xml x; - if(url::get(L"/sale/data/DocumentList3/bill/update", arg.GetString(),x)!=1) + x.loadXML(ls_xml); + xaserverarg arg; + arg.setNativePointer(xaserverarg::CreateInstance()); + arg.AddArg(L"content", x.xml()); + + if(xurl::get(L"/sale/data/DocumentList3/bill/update", arg.GetString(),x)!=1) { - xstring error = x.GetXmlDoc().text; + xstring error = x.text(); alert(L"err:"+error); return 1; } - xstring str = x.GetXmlDoc().documentElement.getAttribute(L"text"); + xstring str = x.documentElement().getAttribute(L"text"); if(str == L"true") { alert(L"保存成功!"); @@ -1007,16 +976,15 @@ int SendCtrlCmd(xcontrol xc, xstring cmd) { - win32::SendMessage(xc.GetId(),0x401,cmd,0); + SendMessage(xc.GetHWND(), 0x401, (WPARAM)cmd.c_str(), 0); return 1; } int OnRefreshData() { - xaserverarg arg = new xaserverarg; - arg.setNativePointer(GetParam()); + xaserverarg arg; xstring templateName = arg.GetArgString(L"template-name"); - win32::SetWindowText(GetHWND(),templateName); + SetWindowText(GetHWND(),templateName); OnHtml(arg); billName = templateName; billPre = arg.GetArgString(L"template-pre"); @@ -1032,7 +1000,7 @@ { if(comdid==L"xmSort") { - OpenWindow(L"dev:xpage[DataSort.dialog.vx]",cast(m_dataset as int)); + //OpenWindow(L"dev:xpage[DataSort.dialog.vx]",cast(m_dataset as int)); return 1; } if(comdid==L"print:PrintImmediate") @@ -1068,13 +1036,12 @@ { if(updated) { - int res = win32::MessageBox(this.GetHWND(), L"单据已制作,是否保存?",L"提示",4); + int res = MessageBox(GetHWND(), L"单据已制作,是否保存?",L"提示",4); if(res == 6)OnCmdDispatch(L"print:AddToDocumentList"); } - if(GetParam()) + if(GetWinParam()) { - xaserverarg arg1 = new xaserverarg; - arg1.setNativePointer(GetParam()); + xaserverarg arg1 = GetArg(); arg1.AddArg(L"action",L"new"); OnPrintDialog(); arg1.AddArg(L"action",L""); @@ -1126,37 +1093,37 @@ return 1; alert(L"xxx"); xml x1 = new xml; - x1.setNativePointer(xml::CreateInstance()); + xaserver::ExecXQuery(GetServerUrl(), L"[xsl.getdevobj.xq]",L"<args/>",x1); } if(comdid == L"xxx") { - xml x = new xml; - x.setNativePointer(xml::CreateInstance()); - xaserverarg arg = new xaserverarg; - arg.setNativePointer(arg.CreateInstance()); + xml x; + + xaserverarg arg; + arg.AddArg(L"strHtml",m_strHtml); - if (url::get(L"/sale/data/SysPrintTemplate/WebBrowser",arg.GetString(),x) != 1) + if (xurl::get(L"/sale/data/SysPrintTemplate/WebBrowser",arg.GetString(),x) != 1) { alert(L"数据集出错了!"); return 0; } - xstring strHtml = x.GetXml(); + xstring strHtml = x.xml(); ole_print.LoadHtml(strHtml); } return 0; } - int OnXCommand(ref TXCommandEvent evt,int p) + int OnXCommand(TEvent* evt,int p) { - return OnCmdDispatch(evt.pStrID); + return OnCmdDispatch(evt->xcommand.pStrID); } int OnAttachEvent() { - AttachEvent(L"WM_XCOMMAND",OnXCommand); - AttachEvent(L"WM_SETFOCUS",OnSetFocus); + AttachEvent(L"WM_XCOMMAND",(FEvent)& TemplatePrintViewEx::OnXCommand); + AttachEvent(L"WM_SETFOCUS", (FEvent)&TemplatePrintViewEx::OnSetFocus); //AttachEvent(L"WM_CLOSE",OnCloseOwnerWindow); return 0; @@ -1171,11 +1138,11 @@ { if(!updated) return 1; - int MB_YESNOCANCEL = 3; - int IDYES = 6; - int IDNO = 7; - int IDCANCEL = 2; - int re = win32::MessageBox(this.GetHWND(), L"单据已制作,是否保存?",L"提示:",MB_YESNOCANCEL); + //int MB_YESNOCANCEL = 3; + //int IDYES = 6; + //int IDNO = 7; + //int IDCANCEL = 2; + int re = MessageBox(GetHWND(), L"单据已制作,是否保存?",L"提示:",MB_YESNOCANCEL); if(re==IDCANCEL) return -1; if(re==IDNO) return 1; OnCmdDispatch(L"print:AddToDocumentList"); @@ -1206,10 +1173,10 @@ int onloaded() { updated = false; - if(GetParam()) + SetArg(); + if(GetWinParam()) { - xaserverarg arg = new xaserverarg; - arg.setNativePointer(GetParam()); + xaserverarg arg= GetArg(); xstring templateName = arg.GetArgString(L"template-name"); if(templateName ==L"") { @@ -1218,7 +1185,7 @@ else { - win32::SetWindowText(GetHWND(),templateName); + SetWindowText(GetHWND(),templateName); OnHtml(arg); billName = templateName; billPre = arg.GetArgString(L"template-pre"); @@ -1232,5 +1199,6 @@ OnPrintDialog(); return 1; } +}; -}; \ No newline at end of file +#define _XWIN \ No newline at end of file diff --git a/jrj/xframe/kobject/kexcel.hpp b/jrj/xframe/kobject/kexcel.hpp new file mode 100644 index 0000000..9e3b3d5 --- /dev/null +++ b/jrj/xframe/kobject/kexcel.hpp @@ -0,0 +1,18 @@ +#pragma once + +#include "kcontrol.hpp" + +class CExcelApplication +{ +public: + void Release(CExcelApplication * t); //alias "?Release@CExcelApplication@@QAEXPAV1@@Z"; + static CExcelApplication* CreateInstance(); //alias "?CreateInstance@CExcelApplication@@SAPAV1@XZ"; +public: + void put_Visible(BOOL newValue); //alias "?put_Visible@CExcelApplication@@QAEXH@Z"; + bool get_Visible(); //alias "?get_Visible@CExcelApplication@@QAEHXZ"; + void OpenDocument(const LPTSTR FileName); //alias "?OpenDocument@CExcelApplication@@QAEXQA_W@Z"; + void TransShape(); //alias "?TransShape@CExcelApplication@@QAEXXZ"; + void SaveToFile(const LPTSTR FileName);// alias "?SaveToFile@CExcelApplication@@QAEXQA_W@Z"; + void Quit(); //alias "?Quit@CExcelApplication@@QAEXXZ"; + //LPDISPATCH GetApplication(); +}; \ No newline at end of file diff --git a/jrj/xframe/kobject/khtml.hpp b/jrj/xframe/kobject/khtml.hpp new file mode 100644 index 0000000..7a526c9 --- /dev/null +++ b/jrj/xframe/kobject/khtml.hpp @@ -0,0 +1,16 @@ +#pragma once + +#include "kcontrol.hpp" + +class IHTMLDocument2; +namespace Hxsoft { namespace XFrame { +class xcOleControlContain : public xcontrol +{ +public: + int LoadHtml(LPTSTR); //alias "?LoadHtml@xcOleControlContain@XFrame@Hxsoft@@QAEHPA_W@Z"; + int ExecWB(int cmdID, int cmdexecopt); //alias "?ExecWB@xcOleControlContain@XFrame@Hxsoft@@QAEHHH@Z"; + int LoadText(LPTSTR); //alias "?LoadText@xcOleControlContain@XFrame@Hxsoft@@QAEHPA_W@Z"; + IHTMLDocument2* GetHtmlDocument(); //alias "?GetHtmlDocument@xcOleControlContain@XFrame@Hxsoft@@QAEPAUIHTMLDocument2@@XZ" ; +}; + +}} \ No newline at end of file diff --git a/jrj/xframe/kobject/kutil.hpp b/jrj/xframe/kobject/kutil.hpp index d35c695..3dfc512 100644 --- a/jrj/xframe/kobject/kutil.hpp +++ b/jrj/xframe/kobject/kutil.hpp @@ -1,9 +1,11 @@ #pragma once #include "kbase.hpp" - +#ifdef _XWIN typedef struct HICON__{}*HICON; typedef HICON HCURSOR; +#endif + namespace Hxsoft{ namespace XFrame { class IXFUtil diff --git a/jrj/xframe/system/base.hpp b/jrj/xframe/system/base.hpp index 13c9185..baf79a0 100644 --- a/jrj/xframe/system/base.hpp +++ b/jrj/xframe/system/base.hpp @@ -30,11 +30,14 @@ typedef const wchar_t* string; +#ifdef _XWIN typedef long LONG; typedef struct HWND__ {} * HWND; typedef struct HMENU__ {} * HMENU; typedef struct HDC__ {} * HDC; -typedef void * HINSTANCE; +typedef struct HINSTANCE_ {}* HINSTANCE; +typedef struct HMODULE_ {}* HMODULE; +typedef short HFILE; typedef wchar_t wchar; typedef wchar* BSTR; @@ -105,6 +108,8 @@ LONG cy; } SIZE, *PSIZE, *LPSIZE; +#endif + diff --git a/jrj/xframe/vbusiness/vframe/frame.vframe.vbusiness.hpp b/jrj/xframe/vbusiness/vframe/frame.vframe.vbusiness.hpp index 595ffb9..dc9398a 100644 --- a/jrj/xframe/vbusiness/vframe/frame.vframe.vbusiness.hpp +++ b/jrj/xframe/vbusiness/vframe/frame.vframe.vbusiness.hpp @@ -483,13 +483,13 @@ if (content ==L"") return 1; if (content.find(L"update.modify", 0) > 0 || content.find(L"update.delete", 0) > 0) { - int MB_YESNOCANCEL = 3; - int IDYES = 6; - int IDNO = 7; - int IDCANCEL = 2; - int re = MessageBoxW(GetHWND(),L"数据已经修改,是否保存?",L"提示:", MB_YESNOCANCEL); - if (re == IDCANCEL) return -1; - if (re == IDNO) return 1; + int MB_YESNOCANCEL_ = 3; + int IDYES_ = 6; + int IDNO_ = 7; + int IDCANCEL_ = 2; + int re = MessageBoxW(GetHWND(),L"数据已经修改,是否保存?",L"提示:", MB_YESNOCANCEL_); + if (re == IDCANCEL_) return -1; + if (re == IDNO_) return 1; if (DoUpdate(false) == 1) return 1; return -1; } diff --git a/jrj/xframe/vbusiness/vframe/listex.vframe.vbusiness.hpp b/jrj/xframe/vbusiness/vframe/listex.vframe.vbusiness.hpp index f123891..6ebcee1 100644 --- a/jrj/xframe/vbusiness/vframe/listex.vframe.vbusiness.hpp +++ b/jrj/xframe/vbusiness/vframe/listex.vframe.vbusiness.hpp @@ -268,15 +268,15 @@ } else if (str == L"userid") { - ret = publiccode::GetUser().id; + ret = publiccode::GetUser()->id; } else if (str == L"userno") { - ret = publiccode::GetUser().no; + ret = publiccode::GetUser()->no; } else if (str == L"username") { - ret = publiccode::GetUser().name; + ret = publiccode::GetUser()->name; } return ret; } diff --git a/jrj/xframe/vbusiness/vframe/responsewin.vframe.vbusiness.hpp b/jrj/xframe/vbusiness/vframe/responsewin.vframe.vbusiness.hpp index e69de29..0611dbe 100644 --- a/jrj/xframe/vbusiness/vframe/responsewin.vframe.vbusiness.hpp +++ b/jrj/xframe/vbusiness/vframe/responsewin.vframe.vbusiness.hpp @@ -0,0 +1,14 @@ +#pragma once + +#include <wobject/xwin.hpp> +#include <wobject/xurl.hpp> +#include <wobject/xapp.hpp> +class responsewin : public xwin +{ +public: + responsewin(void* impl, HWND hWnd) :xwin(impl, hWnd) {} + int onload() + { + return 1; + } +}; \ No newline at end of file diff --git a/jrj/xframe/vbusiness/vutil/publiccode.vutil.vbusiness.hpp b/jrj/xframe/vbusiness/vutil/publiccode.vutil.vbusiness.hpp index c6294e3..262ab32 100644 --- a/jrj/xframe/vbusiness/vutil/publiccode.vutil.vbusiness.hpp +++ b/jrj/xframe/vbusiness/vutil/publiccode.vutil.vbusiness.hpp @@ -46,7 +46,7 @@ } //取当前用户 - static PUser GetUser(xstring id) + static PUser* GetUser(xstring id) { string userno = xaserver::GetUserNo(); //trace(userno); @@ -89,9 +89,9 @@ if (e.selectSingleNode(L"电话")) p.tel = e.selectSingleNode(L"电话").text(); } - return p; + return &p; } - static PUser GetUser() + static PUser* GetUser() { return GetUser(L""); } diff --git a/jrj/xframe/win32/win.hpp b/jrj/xframe/win32/win.hpp index 0b12726..46f784c 100644 --- a/jrj/xframe/win32/win.hpp +++ b/jrj/xframe/win32/win.hpp @@ -2,6 +2,7 @@ #include "system/base.hpp" +#ifdef _XWIN typedef struct _GUID { unsigned long Data1; unsigned short Data2; @@ -32,9 +33,9 @@ extern "C" { void WINAPI SysFreeString(BSTR str);//OleAut32.dll - void * WINAPI LoadLibraryW(const wchar_t* lpText); + HMODULE WINAPI LoadLibraryW(const wchar_t* lpText); bool WINAPI FreeLibrary(void * hModule); - void * WINAPI GetProcAddressW(void* hModule, const char* lpText); + void * WINAPI GetProcAddressW(HMODULE hModule, const char* lpText); LPARAM WINAPI GetPropW(HWND hWnd,string lpString); @@ -104,8 +105,8 @@ HWND WINAPI FindWindowW(string lpClassName, string lpWindowName);//native from "user32.dll" alias "FindWindowW"; int WINAPI GetTempPathW(int NAME_LEN,string & OutPath) ;//native from "kernel32.dll" alias "GetTempPathW"; - int WINAPI GetModuleHandleW(string lpModuleName) ;//native from "kernel32.dll" alias "GetModuleHandleW"; - int WINAPI GetModuleFileNameW(int hModule ,string lpFileName, int nSize);//native from "kernel32.dll" alias "GetModuleFileNameW"; + HMODULE WINAPI GetModuleHandleW(string lpModuleName) ;//native from "kernel32.dll" alias "GetModuleHandleW"; + int WINAPI GetModuleFileNameW(HMODULE hModule ,string lpFileName, int nSize);//native from "kernel32.dll" alias "GetModuleFileNameW"; void WINAPI GetLocalTime(SYSTEMTIME& lpSystemTime) ;//native from "kernel32.dll" alias "GetLocalTime"; int WINAPI PathRemoveFileSpecW(string lpFileName);// native from "shlwapi.dll" alias "PathRemoveFileSpecW"; @@ -119,6 +120,7 @@ #define PathRemoveFileSpec PathRemoveFileSpecW #define SetWindowText SetWindowTextW #define GetWindowText GetWindowTextW +#endif #if 0 namespace win32 @@ -195,7 +197,7 @@ HWND FindWindowW(string lpClassName, string lpWindowName);//native from "user32.dll" alias "FindWindowW"; int GetTempPathW(int NAME_LEN,string & OutPath) ;//native from "kernel32.dll" alias "GetTempPathW"; - int GetModuleHandleW(string lpModuleName) ;//native from "kernel32.dll" alias "GetModuleHandleW"; + HMODULE GetModuleHandleW(string lpModuleName) ;//native from "kernel32.dll" alias "GetModuleHandleW"; int GetModuleFileName(int hModule ,string & lpFileName ,int nSize ) ;//native from "kernel32.dll" alias "GetModuleFileName"; void GetLocalTime(SYSTEMTIME& lpSystemTime) ;//native from "kernel32.dll" alias "GetLocalTime"; diff --git a/jrj/xframe/win32/xfile.hpp b/jrj/xframe/win32/xfile.hpp index 37e1bb1..fc74fd5 100644 --- a/jrj/xframe/win32/xfile.hpp +++ b/jrj/xframe/win32/xfile.hpp @@ -3,6 +3,7 @@ #include "system/base.hpp" #include "win.hpp" +#if _XWIN #define CALLBACK __stdcall #define MAX_PATH 260 @@ -72,81 +73,83 @@ } WIN32_FIND_DATAW; - extern "C" { - namespace win32 - { - bool WINAPI GetSaveFileNameW(OPENFILENAMEW&);//native from "comdlg32.dll" alias "GetSaveFileNameW"; - bool WINAPI GetOpenFileNameW(OPENFILENAMEW&);//native from "comdlg32.dll" alias "GetOpenFileNameW"; + //namespace win32 + //{ + bool WINAPI GetSaveFileNameW(OPENFILENAMEW*);//native from "comdlg32.dll" alias "GetSaveFileNameW"; + bool WINAPI GetOpenFileNameW(OPENFILENAMEW*);//native from "comdlg32.dll" alias "GetOpenFileNameW"; - HANDLE WINAPI FindFirstFileW(const WCHAR* lpFileName, WIN32_FIND_DATAW& lpFindFileData); //native from "kernel32.dll" alias "FindFirstFileW"; //根据文件名查找文件,一旦不再需要,应该用FindClose函数关闭这个句柄 - HANDLE WINAPI FindNextFileW(HANDLE hFindFile, WIN32_FIND_DATAW& lpFindFileData); //native from "kernel32.dll" alias "FindNextFileW"; //继续查找FindFirstFile函数搜索后的文件 ,HANDLE hFindFile搜索的文件句柄 函数执行的时候搜索的是此句柄的下一文件。非零表示成功,零表示失败。如不再有与指定条件相符的文件,会将GetLastError设置成ERROR_NO_MORE_FILES + HANDLE WINAPI FindFirstFileW(const WCHAR* lpFileName, WIN32_FIND_DATAW* lpFindFileData); //native from "kernel32.dll" alias "FindFirstFileW"; //根据文件名查找文件,一旦不再需要,应该用FindClose函数关闭这个句柄 + BOOL WINAPI FindNextFileW(HANDLE hFindFile, WIN32_FIND_DATAW* lpFindFileData); //native from "kernel32.dll" alias "FindNextFileW"; //继续查找FindFirstFile函数搜索后的文件 ,HANDLE hFindFile搜索的文件句柄 函数执行的时候搜索的是此句柄的下一文件。非零表示成功,零表示失败。如不再有与指定条件相符的文件,会将GetLastError设置成ERROR_NO_MORE_FILES bool WINAPI FindClose(HANDLE hFindFile); //native from "kernel32.dll" alias "FindClose"; //关闭由FindFirstFile函数创建的一个搜索句柄。返回非零表示成功,零表示失败。会设置GetLastError - int WINAPI CreateFileW(LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile); //native from "kernel32.dll" alias "CreateFileW"; - int WINAPI OpenFile(LPCSTR lpFileName, OFSTRUCT lpReOpenBuff, UINT wStyle); //native from "kernel32.dll" alias "OpenFile"; + HANDLE WINAPI CreateFileW(LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile); //native from "kernel32.dll" alias "CreateFileW"; + HFILE WINAPI OpenFile(LPCSTR lpFileName, OFSTRUCT* lpReOpenBuff, UINT wStyle); //native from "kernel32.dll" alias "OpenFile"; int WINAPI SetFilePointer(HANDLE hFile, LONG lDistanceToMove, LONG* lpDistanceToMoveHigh, DWORD dwMoveMethod); //native from "kernel32.dll" alias "SetFilePointer"; int WINAPI ReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped); //native from "kernel32.dll" alias "ReadFile"; int WINAPI WriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped); //native from "kernel32.dll" alias "ReadFile"; int WINAPI CloseHandle(HANDLE hFile); //native from "kernel32.dll" alias "CloseHandle"; - int WINAPI GetFileSize(HANDLE hFile, int lpFileSizeHigh); //native from "kernel32.dll" alias "GetFileSize"; - } + int WINAPI GetFileSize(HANDLE hFile, DWORD* lpFileSizeHigh); //native from "kernel32.dll" alias "GetFileSize"; + //} } +#endif + class xfile { public: - static bool WINAPI GetSaveFileName(OPENFILENAMEW& OpenFileName) + static bool GetSaveFileName(OPENFILENAMEW& OpenFileName) { - return win32::GetSaveFileNameW(OpenFileName); + return ::GetSaveFileNameW(&OpenFileName); } - static bool WINAPI GetOpenFileName(OPENFILENAMEW& SaveFileName) + static bool GetOpenFileName(OPENFILENAMEW& SaveFileName) { - return win32::GetOpenFileNameW(SaveFileName); + return ::GetOpenFileNameW(&SaveFileName); } - static HANDLE WINAPI FindFirstFile(const WCHAR* lpFileName, WIN32_FIND_DATAW& lpFindFileData) + static HANDLE FindFirstFile(const WCHAR* lpFileName, WIN32_FIND_DATAW& lpFindFileData) { - return win32::FindFirstFileW(lpFileName, lpFindFileData); + return ::FindFirstFileW(lpFileName, &lpFindFileData); } - static HANDLE WINAPI FindNextFile(HANDLE hFindFile, WIN32_FIND_DATAW& lpFindFileData) + static BOOL FindNextFile(HANDLE hFindFile, WIN32_FIND_DATAW& lpFindFileData) { - return win32::FindNextFileW(hFindFile, lpFindFileData); + return ::FindNextFileW(hFindFile, &lpFindFileData); } - static bool WINAPI FindClose(HANDLE hFindFile) + static bool FindClose(HANDLE hFindFile) { - return win32::FindClose(hFindFile); + return ::FindClose(hFindFile); } - static int WINAPI CreateFile(LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile) + static HANDLE CreateFile(LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile) { - return win32::CreateFileW(lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile); + return ::CreateFileW(lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile); } - static int WINAPI OpenFile(LPCSTR lpFileName, OFSTRUCT lpReOpenBuff, UINT wStyle) + static HFILE OpenFile(LPCSTR lpFileName, OFSTRUCT& lpReOpenBuff, UINT wStyle) { - return win32::OpenFile(lpFileName, lpReOpenBuff, wStyle); + return ::OpenFile(lpFileName, &lpReOpenBuff, wStyle); } - static int WINAPI SetFilePointer(HANDLE hFile, LONG lDistanceToMove, LONG* lpDistanceToMoveHigh, DWORD dwMoveMethod) + static int SetFilePointer(HANDLE hFile, LONG lDistanceToMove, LONG* lpDistanceToMoveHigh, DWORD dwMoveMethod) { - return win32::SetFilePointer(hFile, lDistanceToMove, lpDistanceToMoveHigh, dwMoveMethod); + return ::SetFilePointer(hFile, lDistanceToMove, lpDistanceToMoveHigh, dwMoveMethod); } - static int WINAPI ReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped) + static int ReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped) { - return win32::ReadFile(hFile, lpBuffer, nNumberOfBytesToRead, lpNumberOfBytesRead, lpOverlapped); + return ::ReadFile(hFile, lpBuffer, nNumberOfBytesToRead, lpNumberOfBytesRead, lpOverlapped); } - static int WINAPI WriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped) + static int WriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped) { - return win32::WriteFile(hFile, lpBuffer, nNumberOfBytesToRead, lpNumberOfBytesRead, lpOverlapped); + return ::WriteFile(hFile, lpBuffer, nNumberOfBytesToRead, lpNumberOfBytesRead, lpOverlapped); } - static int WINAPI CloseHandle(HANDLE hFile) + static int CloseHandle(HANDLE hFile) { - return win32::CloseHandle(hFile); + return ::CloseHandle(hFile); } - static int WINAPI GetFileSize(HANDLE hFile, int lpFileSizeHigh) + static int GetFileSize(HANDLE hFile, DWORD& lpFileSizeHigh) { - return win32::GetFileSize(hFile, lpFileSizeHigh); + return ::GetFileSize(hFile, &lpFileSizeHigh); } }; + diff --git a/jrj/xframe/wobject/xbase.hpp b/jrj/xframe/wobject/xbase.hpp index 1fc14ab..7dd81c3 100644 --- a/jrj/xframe/wobject/xbase.hpp +++ b/jrj/xframe/wobject/xbase.hpp @@ -38,7 +38,13 @@ NMHDR* pNMHDR; }; */ +struct xstruct +{ +}; + + +#ifdef _XWIN typedef unsigned int UINT; typedef struct NMHDR @@ -48,67 +54,9 @@ int code; } * LPNMHDR; -typedef struct tagEvent -{ - HWND hWnd; - DWORD message; - WPARAM wParam; - LPARAM lParam; - DWORD time; - POINT pt; - union - { - struct { - int wmId ; - int wmEvent ; - HWND hCtrl ; - }command; - struct - { - LPTSTR pStrID; - void * pCmdFrom; - }xcommand; - struct { - UINT nFlags; - POINT point; - } mouse; - struct { - UINT nFlags; - POINT point; - } size; - struct { - UINT nChar; - UINT nRepCnt; - UINT nFlags; - }key; - struct { - HDC hdc; - }paint; - struct { - HWND hWnd ; - UINT nHitTest; - UINT mouseMsg; - }cursor; - struct { - UINT nSBCode; - UINT nPos; - HWND hWndCtl; - }scroll; - struct { - POINT point; - UINT_PTR fwKeys; - short zDelta; - }wheel; - struct { - int idCtrl; - LPNMHDR pnmh; - }notify; - }; - void * pSrcObject; - LPARAM dwRet; -} TEvent; -typedef TEvent TNotifyEvent; + +//typedef TEvent TNotifyEvent; /* struct TEvent { @@ -189,27 +137,6 @@ }; */ -struct IMGNNMHDR : public NMHDR -{ - string path; - string text; - int nIndex; -}; -struct PAGENMHDR : public NMHDR -{ - int max; - int cur; -}; -struct LYSNMHDR : public NMHDR -{ - int nSheet; -}; - -struct xstruct -{ -}; - - typedef struct _OVERLAPPED { ULONG_PTR Internal; ULONG_PTR InternalHigh; @@ -234,6 +161,24 @@ WORD Reserved2; CHAR szPathName[OFS_MAXPATHNAME]; } OFSTRUCT; + +#endif + +struct IMGNNMHDR : public NMHDR +{ + string path; + string text; + int nIndex; +}; +struct PAGENMHDR : public NMHDR +{ + int max; + int cur; +}; +struct LYSNMHDR : public NMHDR +{ + int nSheet; +}; struct CELLNMHDR : public NMHDR { @@ -274,4 +219,66 @@ LPTSTR pStr; }; +typedef struct tagEvent +{ + HWND hWnd; + DWORD message; + WPARAM wParam; + LPARAM lParam; + DWORD time; + POINT pt; + union + { + struct { + int wmId; + int wmEvent; + HWND hCtrl; + }command; + struct + { + LPTSTR pStrID; + void* pCmdFrom; + }xcommand; + struct { + UINT nFlags; + POINT point; + } mouse; + struct { + UINT nFlags; + POINT point; + } size; + struct { + UINT nChar; + UINT nRepCnt; + UINT nFlags; + }key; + struct { + HDC hdc; + }paint; + struct { + HWND hWnd; + UINT nHitTest; + UINT mouseMsg; + }cursor; + struct { + UINT nSBCode; + UINT nPos; + HWND hWndCtl; + }scroll; + struct { + POINT point; + UINT_PTR fwKeys; + short zDelta; + }wheel; + struct { + int idCtrl; + LPNMHDR pnmh; + }notify; + }; + void* pSrcObject; + LPARAM dwRet; +} TEvent; +typedef TEvent TNotifyEvent; + + //typedef int FEvent(TEvent * evt, int p); \ No newline at end of file diff --git a/jrj/xframe/wobject/xcontrol.hpp b/jrj/xframe/wobject/xcontrol.hpp index 04dd7fe..c001204 100644 --- a/jrj/xframe/wobject/xcontrol.hpp +++ b/jrj/xframe/wobject/xcontrol.hpp @@ -24,8 +24,8 @@ int SetReadOnlyEx(const bool ) { - int EM_SETREADONLY = 0x00CF; - return SendMessage(GetHWND(),EM_SETREADONLY,0,0); + int EM_SETREADONLY_ = 0x00CF; + return SendMessage(GetHWND(),EM_SETREADONLY_,0,0); } int EnableWindow(bool abled) @@ -35,14 +35,14 @@ int GetTextLength() { - int WM_GETTEXTLENGTH = 0x000E; + int WM_GETTEXTLENGTH_ = 0x000E; int nLen = ::GetWindowTextLengthW(GetHWND()); return nLen; } xstring GetText() { - int WM_GETTEXT = 0x000D; + int WM_GETTEXT_ = 0x000D; int nLen = GetTextLength(); xstring xs; @@ -52,7 +52,7 @@ int SetText(string value) { - int WM_SETTEXT = 0x000C; + int WM_SETTEXT_ = 0x000C; ::SetWindowTextW(GetHWND(),value); return 1; } diff --git a/jrj/xframe/wobject/xobject.hpp b/jrj/xframe/wobject/xobject.hpp index 734f70e..575cbbf 100644 --- a/jrj/xframe/wobject/xobject.hpp +++ b/jrj/xframe/wobject/xobject.hpp @@ -5,11 +5,4 @@ class xobject { public: - void * GetFuncPtr(const wchar_t* dll, const char * name) - { - void * fnAttachEvent = nullptr; - void * hModule = LoadLibraryW(dll); - if(hModule)fnAttachEvent = GetProcAddressW(hModule,name); - return fnAttachEvent; - } }; \ No newline at end of file diff --git a/jrj/xframe/wobject/xutil.hpp b/jrj/xframe/wobject/xutil.hpp index b7a6e4d..5a702e7 100644 --- a/jrj/xframe/wobject/xutil.hpp +++ b/jrj/xframe/wobject/xutil.hpp @@ -6,6 +6,9 @@ #include "win32/win.hpp" using kutil = Hxsoft::XFrame::IXFUtil; +extern "C" { + void* WINAPI GetProcAddressW(HMODULE hModule, const char* lpText); +} class xutil { public: @@ -34,9 +37,9 @@ return kutil::CacheUrlData((LPWSTR)url,(LPWSTR)data); } - static int SaveToFile(const LPTSTR pFile,const LPTSTR pData,const LPTSTR ext, const LPTSTR pFilter, const LPTSTR pFileName=NULL) + static int SaveToFile(xstring pFile,xstring pData,xstring ext, xstring pFilter, const LPTSTR pFileName=NULL) { - return kutil::SaveToFile((LPWSTR)pFile,(LPWSTR)pData,(LPWSTR)ext,(LPWSTR)pFileName); + return kutil::SaveToFile((LPWSTR)pFile.c_str(), (LPWSTR)pData.c_str(), (LPWSTR)ext.c_str(), (LPWSTR)pFileName); } static LPWSTR MD5(const wchar_t* pStr) { @@ -59,7 +62,7 @@ static xstring GetModulePath() { wchar_t buf[255]; - GetModuleFileName(0, buf, 255); + ::GetModuleFileNameW(nullptr, buf, 255); PathRemoveFileSpec(buf); return xstring(buf); } @@ -71,4 +74,11 @@ return tmp; } + static void* GetFuncPtr(const wchar_t* dll, const char* name) + { + void* fnAttachEvent = nullptr; + HMODULE hModule = LoadLibraryW(dll); + if (hModule)fnAttachEvent = ::GetProcAddressW(hModule, name); + return fnAttachEvent; + } }; \ No newline at end of file diff --git a/jrj/xframe/wobject/xwin.hpp b/jrj/xframe/wobject/xwin.hpp index 1afa2b1..618b738 100644 --- a/jrj/xframe/wobject/xwin.hpp +++ b/jrj/xframe/wobject/xwin.hpp @@ -11,6 +11,16 @@ using kcontrol = Hxsoft::XFrame::IXFControl; using knode = Hxsoft::XFrame::IXNode; +#define DeclWinObject_(ty,pty) class __declspec(dllexport) ty : public pty +#define CreateWinObject_(ty,pty) \ +public:\ + ty(void* impl,HWND hWnd):pty(impl,hWnd){}\ +public:\ + ty * CreateInstance(void* impl,void* hWnd)\ + {\ + return new ty(impl,(HWND)hWnd);\ + } + class xwin: public xview { public: @@ -69,16 +79,16 @@ xwin* OpenWindow(string url) { - int WS_OVERLAPPEDWINDOW = 0x00cf0000 ; - kwin* w = kwin::OpenWindow(GetServerUrl(),url,getKWin(),0/*param*/,0/*CmdWind*/,0,WS_OVERLAPPEDWINDOW,0); + int WS_OVERLAPPEDWINDOW_ = 0x00cf0000 ; + kwin* w = kwin::OpenWindow(GetServerUrl(),url,getKWin(),0/*param*/,0/*CmdWind*/,0,WS_OVERLAPPEDWINDOW_,0); if(!w) return 0; //response return (xwin*)GetPropW(w->GetHWND(),L"AttachObject"); } xwin* OpenWindow(string url,LPARAM p) { - int WS_OVERLAPPEDWINDOW = 0x00cf0000; - kwin* w= kwin::OpenWindow(GetServerUrl(),url,getKWin(),p,0/*CmdWind*/,0/*dwStyleEx*/,WS_OVERLAPPEDWINDOW,0); + int WS_OVERLAPPEDWINDOW_ = 0x00cf0000; + kwin* w= kwin::OpenWindow(GetServerUrl(),url,getKWin(),p,0/*CmdWind*/,0/*dwStyleEx*/,WS_OVERLAPPEDWINDOW_,0); if(!w) return 0; //response return (xwin*)GetPropW(w->GetHWND(),L"AttachObject"); } diff --git a/jrj/xframe/xcontrol/xcombobox.hpp b/jrj/xframe/xcontrol/xcombobox.hpp index 6479768..fc2f128 100644 --- a/jrj/xframe/xcontrol/xcombobox.hpp +++ b/jrj/xframe/xcontrol/xcombobox.hpp @@ -18,133 +18,133 @@ public: int GetCurSel() { - int CB_GETCURSEL = 0x0147; - return SendMessage(GetHWND(),CB_GETCURSEL,0,0); + int CB_GETCURSEL_ = 0x0147; + return SendMessage(GetHWND(),CB_GETCURSEL_,0,0); } int SetCurSel( int nIndex) { - int CB_SETCURSEL = 0x014E; - return SendMessage(GetHWND(),CB_SETCURSEL,nIndex,0); + int CB_SETCURSEL_ = 0x014E; + return SendMessage(GetHWND(),CB_SETCURSEL_,nIndex,0); } int GetCount() { - int CB_GETCOUNT = 0x0146; - return SendMessage(GetHWND(),CB_GETCOUNT,0,0); + int CB_GETCOUNT_ = 0x0146; + return SendMessage(GetHWND(),CB_GETCOUNT_,0,0); } string GetLBText(int nIndex) { - int CB_GETLBTEXT = 0x0148; - int CB_GETLBTEXTLEN = 0x0149; - int nLen = SendMessage(GetHWND(),CB_GETLBTEXTLEN ,nIndex,0); + int CB_GETLBTEXT_ = 0x0148; + int CB_GETLBTEXTLEN_ = 0x0149; + int nLen = SendMessage(GetHWND(),CB_GETLBTEXTLEN_ ,nIndex,0); string str = new wchar_t[nLen+1]; - SendMessage(GetHWND(),CB_GETLBTEXT ,nIndex, (LPARAM)str); + SendMessage(GetHWND(),CB_GETLBTEXT_ ,nIndex, (LPARAM)str); return str; } string GetLBText() { - int CB_GETLBTEXT = 0x0148; - int CB_GETLBTEXTLEN = 0x0149; + int CB_GETLBTEXT_ = 0x0148; + int CB_GETLBTEXTLEN_ = 0x0149; int nIndex = GetCurSel(); - int nLen = SendMessage(GetHWND(),CB_GETLBTEXTLEN ,nIndex,0); + int nLen = SendMessage(GetHWND(),CB_GETLBTEXTLEN_ ,nIndex,0); string str = new wchar_t[nLen+1]; - SendMessage(GetHWND(),CB_GETLBTEXT ,nIndex, (LPARAM)str); + SendMessage(GetHWND(),CB_GETLBTEXT_ ,nIndex, (LPARAM)str); return str; } int SetItemIndex(int nIndex) { - int CB_SETCURSEL = 0x014E; - return SendMessage(GetHWND(),CB_SETCURSEL ,nIndex, 0); + int CB_SETCURSEL_ = 0x014E; + return SendMessage(GetHWND(),CB_SETCURSEL_ ,nIndex, 0); } int AddItem(string str) { - int CB_ADDSTRING = 0x0143; - return SendMessage(GetHWND(),CB_ADDSTRING ,(WPARAM)0,(LPARAM)str); + int CB_ADDSTRING_ = 0x0143; + return SendMessage(GetHWND(),CB_ADDSTRING_ ,(WPARAM)0,(LPARAM)str); } int FindString(string str) { - int CB_FINDSTRINGEXACT = 0x0158; - return SendMessage(GetHWND(),CB_FINDSTRINGEXACT,0,(LPARAM)str); + int CB_FINDSTRINGEXACT_ = 0x0158; + return SendMessage(GetHWND(),CB_FINDSTRINGEXACT_,0,(LPARAM)str); } int DeleteItem(int nIndex) { - int CB_DELETESTRING = 0x0144; - return SendMessage(GetHWND(),CB_DELETESTRING,nIndex,0); + int CB_DELETESTRING_ = 0x0144; + return SendMessage(GetHWND(),CB_DELETESTRING_,nIndex,0); } int SelectString( int nIndex,string str) { - int CB_SELECTSTRING = 0x014D; - return SendMessage(GetHWND(),CB_SELECTSTRING,nIndex,(LPARAM)str); + int CB_SELECTSTRING_ = 0x014D; + return SendMessage(GetHWND(),CB_SELECTSTRING_,nIndex,(LPARAM)str); } int InsertString( int nIndex,string str) { - int CB_INSERTSTRING = 0x014A; - return SendMessage(GetHWND(),CB_INSERTSTRING,nIndex,(LPARAM)str); + int CB_INSERTSTRING_ = 0x014A; + return SendMessage(GetHWND(),CB_INSERTSTRING_,nIndex,(LPARAM)str); } int InsertString( string str) { - int CB_INSERTSTRING = 0x014A; - return SendMessage(GetHWND(),CB_INSERTSTRING,0,(LPARAM)str); + int CB_INSERTSTRING_ = 0x014A; + return SendMessage(GetHWND(),CB_INSERTSTRING_,0,(LPARAM)str); } int ResetContent() { - int CB_RESETCONTENT = 0x014B; - return SendMessage(GetHWND(),CB_RESETCONTENT,0,0); + int CB_RESETCONTENT_ = 0x014B; + return SendMessage(GetHWND(),CB_RESETCONTENT_,0,0); } int SetItemData(int nIndex, LPARAM p) { - int CB_SETITEMDATA = 0x0151; - return SendMessage(GetHWND(),CB_SETITEMDATA,nIndex,p); + int CB_SETITEMDATA_ = 0x0151; + return SendMessage(GetHWND(),CB_SETITEMDATA_,nIndex,p); } int GetItemData() { - int CB_GETITEMDATA = 0x0150; + int CB_GETITEMDATA_ = 0x0150; int nIndex = GetCurSel(); if(nIndex < 0) return -1; else - return SendMessage(GetHWND(),CB_GETITEMDATA,nIndex,0); + return SendMessage(GetHWND(),CB_GETITEMDATA_,nIndex,0); } LPARAM GetItemData(int nIndex) { - int CB_GETITEMDATA = 0x0150; - return SendMessage(GetHWND(),CB_GETITEMDATA,nIndex,0); + int CB_GETITEMDATA_ = 0x0150; + return SendMessage(GetHWND(),CB_GETITEMDATA_,nIndex,0); } int AddItem(string str, int p) { - int CB_ADDSTRING = 0x0143; - int h = SendMessage(GetHWND(),CB_ADDSTRING ,0,(LPARAM)str); + int CB_ADDSTRING_ = 0x0143; + int h = SendMessage(GetHWND(),CB_ADDSTRING_ ,0,(LPARAM)str); SetItemData( h, p); return h; } int AddItem(string str, string p) { - int CB_ADDSTRING = 0x0143; - int h = SendMessage(GetHWND(),CB_ADDSTRING ,0,(LPARAM)str); + int CB_ADDSTRING_ = 0x0143; + int h = SendMessage(GetHWND(),CB_ADDSTRING_ ,0,(LPARAM)str); SetItemData( h, (LPARAM)p); return h; } int InsertString( string str, LPARAM p) { - int CB_INSERTSTRING = 0x014A; - int h = SendMessage(GetHWND(),CB_INSERTSTRING,0,(LPARAM)str); + int CB_INSERTSTRING_ = 0x014A; + int h = SendMessage(GetHWND(),CB_INSERTSTRING_,0,(LPARAM)str); SetItemData( h, p); return h; @@ -154,133 +154,133 @@ ///// static int GetCurSel(HWND hWnd) { - int CB_GETCURSEL = 0x0147; - return SendMessage(hWnd, CB_GETCURSEL, 0, 0); + int CB_GETCURSEL_ = 0x0147; + return SendMessage(hWnd, CB_GETCURSEL_, 0, 0); } static int SetCurSel(HWND hWnd,int nIndex) { - int CB_SETCURSEL = 0x014E; - return SendMessage(hWnd, CB_SETCURSEL, nIndex, 0); + int CB_SETCURSEL_ = 0x014E; + return SendMessage(hWnd, CB_SETCURSEL_, nIndex, 0); } static int GetCount(HWND hWnd) { - int CB_GETCOUNT = 0x0146; - return SendMessage(hWnd, CB_GETCOUNT, 0, 0); + int CB_GETCOUNT_ = 0x0146; + return SendMessage(hWnd, CB_GETCOUNT_, 0, 0); } static string GetLBText(HWND hWnd,int nIndex) { - int CB_GETLBTEXT = 0x0148; - int CB_GETLBTEXTLEN = 0x0149; - int nLen = SendMessage(hWnd, CB_GETLBTEXTLEN, nIndex, 0); + int CB_GETLBTEXT_ = 0x0148; + int CB_GETLBTEXTLEN_ = 0x0149; + int nLen = SendMessage(hWnd, CB_GETLBTEXTLEN_, nIndex, 0); string str = new wchar_t[nLen + 1]; - SendMessage(hWnd, CB_GETLBTEXT, nIndex, (LPARAM)str); + SendMessage(hWnd, CB_GETLBTEXT_, nIndex, (LPARAM)str); return str; } static string GetLBText(HWND hWnd) { - int CB_GETLBTEXT = 0x0148; - int CB_GETLBTEXTLEN = 0x0149; + int CB_GETLBTEXT_ = 0x0148; + int CB_GETLBTEXTLEN_ = 0x0149; int nIndex = GetCurSel(hWnd); - int nLen = SendMessage(hWnd, CB_GETLBTEXTLEN, nIndex, 0); + int nLen = SendMessage(hWnd, CB_GETLBTEXTLEN_, nIndex, 0); string str = new wchar_t[nLen + 1]; - SendMessage(hWnd, CB_GETLBTEXT, nIndex, (LPARAM)str); + SendMessage(hWnd, CB_GETLBTEXT_, nIndex, (LPARAM)str); return str; } static int SetItemIndex(HWND hWnd,int nIndex) { - int CB_SETCURSEL = 0x014E; - return SendMessage(hWnd, CB_SETCURSEL, nIndex, 0); + int CB_SETCURSEL_ = 0x014E; + return SendMessage(hWnd, CB_SETCURSEL_, nIndex, 0); } static int AddItem(HWND hWnd,string str) { - int CB_ADDSTRING = 0x0143; - return SendMessage(hWnd, CB_ADDSTRING, (WPARAM)0, (LPARAM)str); + int CB_ADDSTRING_ = 0x0143; + return SendMessage(hWnd, CB_ADDSTRING_, (WPARAM)0, (LPARAM)str); } static int FindString(HWND hWnd,string str) { - int CB_FINDSTRINGEXACT = 0x0158; - return SendMessage(hWnd, CB_FINDSTRINGEXACT, 0, (LPARAM)str); + int CB_FINDSTRINGEXACT_ = 0x0158; + return SendMessage(hWnd, CB_FINDSTRINGEXACT_, 0, (LPARAM)str); } static int DeleteItem(HWND hWnd,int nIndex) { - int CB_DELETESTRING = 0x0144; - return SendMessage(hWnd, CB_DELETESTRING, nIndex, 0); + int CB_DELETESTRING_ = 0x0144; + return SendMessage(hWnd, CB_DELETESTRING_, nIndex, 0); } static int SelectString(HWND hWnd,int nIndex, string str) { - int CB_SELECTSTRING = 0x014D; - return SendMessage(hWnd, CB_SELECTSTRING, nIndex, (LPARAM)str); + int CB_SELECTSTRING_ = 0x014D; + return SendMessage(hWnd, CB_SELECTSTRING_, nIndex, (LPARAM)str); } static int InsertString(HWND hWnd,int nIndex, string str) { - int CB_INSERTSTRING = 0x014A; - return SendMessage(hWnd, CB_INSERTSTRING, nIndex, (LPARAM)str); + int CB_INSERTSTRING_ = 0x014A; + return SendMessage(hWnd, CB_INSERTSTRING_, nIndex, (LPARAM)str); } static int InsertString(HWND hWnd,string str) { - int CB_INSERTSTRING = 0x014A; - return SendMessage(hWnd, CB_INSERTSTRING, 0, (LPARAM)str); + int CB_INSERTSTRING_ = 0x014A; + return SendMessage(hWnd, CB_INSERTSTRING_, 0, (LPARAM)str); } int ResetContent(HWND hWnd) { - int CB_RESETCONTENT = 0x014B; - return SendMessage(hWnd, CB_RESETCONTENT, 0, 0); + int CB_RESETCONTENT_ = 0x014B; + return SendMessage(hWnd, CB_RESETCONTENT_, 0, 0); } static int SetItemData(HWND hWnd,int nIndex, LPARAM p) { - int CB_SETITEMDATA = 0x0151; - return SendMessage(hWnd, CB_SETITEMDATA, nIndex, p); + int CB_SETITEMDATA_ = 0x0151; + return SendMessage(hWnd, CB_SETITEMDATA_, nIndex, p); } static int GetItemData(HWND hWnd) { - int CB_GETITEMDATA = 0x0150; + int CB_GETITEMDATA_ = 0x0150; int nIndex = GetCurSel(hWnd); if (nIndex < 0) return -1; else - return SendMessage(hWnd, CB_GETITEMDATA, nIndex, 0); + return SendMessage(hWnd, CB_GETITEMDATA_, nIndex, 0); } static LPARAM GetItemData(HWND hWnd,int nIndex) { - int CB_GETITEMDATA = 0x0150; - return SendMessage(hWnd, CB_GETITEMDATA, nIndex, 0); + int CB_GETITEMDATA_ = 0x0150; + return SendMessage(hWnd, CB_GETITEMDATA_, nIndex, 0); } static int AddItem(HWND hWnd,string str, int p) { - int CB_ADDSTRING = 0x0143; - int h = SendMessage(hWnd, CB_ADDSTRING, 0, (LPARAM)str); + int CB_ADDSTRING_ = 0x0143; + int h = SendMessage(hWnd, CB_ADDSTRING_, 0, (LPARAM)str); SetItemData(hWnd,h, p); return h; } static int AddItem(HWND hWnd,string str, string p) { - int CB_ADDSTRING = 0x0143; - int h = SendMessage(hWnd, CB_ADDSTRING, 0, (LPARAM)str); + int CB_ADDSTRING_ = 0x0143; + int h = SendMessage(hWnd, CB_ADDSTRING_, 0, (LPARAM)str); SetItemData(hWnd,h, (LPARAM)p); return h; } static int InsertString(HWND hWnd,string str, LPARAM p) { - int CB_INSERTSTRING = 0x014A; - int h = SendMessage(hWnd, CB_INSERTSTRING, 0, (LPARAM)str); + int CB_INSERTSTRING_ = 0x014A; + int h = SendMessage(hWnd, CB_INSERTSTRING_, 0, (LPARAM)str); SetItemData(hWnd,h, p); return h; diff --git a/jrj/xframe/xcontrol/xexcel.hpp b/jrj/xframe/xcontrol/xexcel.hpp new file mode 100644 index 0000000..d7e36e6 --- /dev/null +++ b/jrj/xframe/xcontrol/xexcel.hpp @@ -0,0 +1,44 @@ +#pragma once + +#include "wobject/xcontrol.hpp" +#include "kobject/kexcel.hpp" + +using kexcel = CExcelApplication; +class xexcel : public xcontrol +{ +public: + xexcel() :xcontrol(kexcel::CreateInstance()) {} + ~xexcel(){ + GetKExcel()->Release(GetKExcel()); + } +public: + kexcel* GetKExcel() + { + return (kexcel*)this->GetNativePtr(); + } +public: + void put_Visible(BOOL newValue) //alias "?put_Visible@CExcelApplication@@QAEXH@Z"; + { + return GetKExcel()->put_Visible(newValue); + } + bool get_Visible() //alias "?get_Visible@CExcelApplication@@QAEHXZ"; + { + return GetKExcel()->get_Visible(); + } + void OpenDocument(xstring FileName) //alias "?OpenDocument@CExcelApplication@@QAEXQA_W@Z"; + { + return GetKExcel()->OpenDocument((const LPTSTR)FileName.c_str()); + } + void TransShape() //alias "?TransShape@CExcelApplication@@QAEXXZ"; + { + return GetKExcel()->TransShape(); + } + void SaveToFile(xstring FileName)// alias "?SaveToFile@CExcelApplication@@QAEXQA_W@Z"; + { + GetKExcel()->SaveToFile((const LPTSTR)FileName.c_str()); + } + void Quit() //alias "?Quit@CExcelApplication@@QAEXXZ"; + { + GetKExcel()->Quit(); + } +}; diff --git a/jrj/xframe/xcontrol/xhtml.hpp b/jrj/xframe/xcontrol/xhtml.hpp new file mode 100644 index 0000000..e13a497 --- /dev/null +++ b/jrj/xframe/xcontrol/xhtml.hpp @@ -0,0 +1,37 @@ +#pragma once + +#include "wobject/xcontrol.hpp" +#include "kobject/khtml.hpp" + +using khtml = Hxsoft::XFrame::xcOleControlContain; + +class xhtml : public xcontrol +{ +public: + xhtml(void* impl = nullptr) :xcontrol(impl) {} +public: + khtml* GetKHtml() + { + return (khtml*)this->GetNativePtr(); + } + int LoadHtml(xstring content) + { + return GetKHtml()->LoadHtml((LPTSTR)content.c_str()); + } + int ExecWB(int cmdID, int cmdexecopt) + { + return GetKHtml()->ExecWB(cmdID, cmdexecopt); + } + int LoadText(xstring content) + { + return GetKHtml()->LoadText((LPTSTR)content.c_str()); + } + IHTMLDocument2* GetHtmlDocument() + { + return GetKHtml()->GetHtmlDocument(); + } + int innerHTML(KXMLDOMDocument srcTree, KXMLDOMDocument xsltTree, KXMLDOMDocument resTree) + { + return 1; + } +}; \ No newline at end of file diff --git a/jrj/xframe/xcontrol/xtreeview.hpp b/jrj/xframe/xcontrol/xtreeview.hpp index 4fa7b47..e689ad9 100644 --- a/jrj/xframe/xcontrol/xtreeview.hpp +++ b/jrj/xframe/xcontrol/xtreeview.hpp @@ -49,6 +49,7 @@ #define TV_FIRST 0x1100 +#ifdef XWIN struct SCROLLINFO { int cbSize; @@ -59,6 +60,8 @@ int nPos; int nTrackPos; }; +#endif + struct tvitem { @@ -520,13 +523,13 @@ void SetLineAtRoot(bool value) { - int GWL_STYLE = -16; - int TVS_LINESATROOT = 0x0004; - int style = GetWindowLong(GetHWND(), GWL_STYLE); + int GWL_STYLE_ = -16; + int TVS_LINESATROOT_ = 0x0004; + int style = GetWindowLong(GetHWND(), GWL_STYLE_); if (value) - SetWindowLong(GetHWND(), GWL_STYLE, style | TVS_LINESATROOT); + SetWindowLong(GetHWND(), GWL_STYLE_, style | TVS_LINESATROOT_); else - SetWindowLong(GetHWND(), GWL_STYLE, style & ~TVS_LINESATROOT); + SetWindowLong(GetHWND(), GWL_STYLE_, style & ~TVS_LINESATROOT_); } }; \ No newline at end of file -- Gitblit v1.9.3