实际出口没问题:
Response.Clear();
Response.ClearHeaders();
Response.Buffer = true;
Response.ContentType = "application/msword";
Response.AddHeader("Pragma", "public");
Response.AddHeader("Expires", "0");
Response.AddHeader("Content-Type", "application/word");
Response.AddHeader("content-disposition", String.Format("attachment;filename={0}.doc", docName));
Response.Charset = "utf-8";
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
mainbody.RenderControl(hw);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:如何更改生成的单词doc的边距?
如果我打开下载的word doc然后保存为HTML,则定义边距的指令是:
@page WordSection1
{
size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;
mso-header-margin:.5in;
mso-footer-margin:.5in;
mso-paper-source:0;
}
Run Code Online (Sandbox Code Playgroud)
我想知道如何在响应头中更改它,以便我可以在一张纸上正确输出表单.有任何想法吗?
我正在努力将大量的.h和.lib文件从本机C++包装到托管C++,最终用作C#中引用的.dll.
我已经链接了.lib文件,到目前为止一切顺利.在包装最新的.h文件时,当遇到链接错误的2个函数时,我遇到了麻烦:
error LNK2019: unresolved external symbol __imp__htonl@4 referenced in function
"public: void __thiscall Field::setCharacter(unsigned char,int)"
(?setCharacter@Field@@QAEXEH@Z) myutils.lib
Run Code Online (Sandbox Code Playgroud)
我myutils.lib在链接器选项中引用了,所以这不应该是问题.
奇怪的是,我在这个特定的.h文件中有大约20个函数,除了3个函数之外,所有其余函数都很好.
有任何想法吗?
所以我有一个我正在使用的本地第三方C++代码库(.lib和.hpp文件),我曾经在C++/CLI中构建一个包装器,以便最终在C#中使用.
从调试模式切换到发布模式时,我遇到了一个特殊问题,因为当回调代码返回时,我遇到了一个访问冲突异常.
来自原始hpp文件的代码用于回调函数格式:
typedef int (*CallbackFunction) (void *inst, const void *data);
Run Code Online (Sandbox Code Playgroud)
来自C++/CLI Wrapper的代码用于回调函数格式:(我将解释为什么我暂时宣布两个)
public delegate int ManagedCallbackFunction (IntPtr oInst, const IntPtr oData);
public delegate int UnManagedCallbackFunction (void* inst, const void* data);
Run Code Online (Sandbox Code Playgroud)
- 很快,我宣布第二个"UnManagedCallbackFunction"的原因是我试图在包装器中创建一个"中间"回调,因此链从Native C++> C#更改为Native C++> C++/CLI Wrapper> C#的版本...完全公开,问题仍然存在,它刚刚被推送到C++/CLI Wrapper现在在同一行(返回).
最后,来自C#的崩溃代码:
public static int hReceiveLogEvent(IntPtr pInstance, IntPtr pData)
{
Console.WriteLine("in hReceiveLogEvent...");
Console.WriteLine("pInstance: {0}", pInstance);
Console.WriteLine("pData: {0}", pData);
// provide object context for static member function
helloworld hw = (helloworld)GCHandle.FromIntPtr(pInstance).Target;
if (hw == null || pData == null)
{
Console.WriteLine("hReceiveLogEvent: received …Run Code Online (Sandbox Code Playgroud) 我正在将大量 .h 和 .lib 文件从本机 C++ 包装到托管 C++,以最终用作 C# 中的引用 .dll。
一些本机 C++ 函数的返回类型为 void*。当我将值传递回调用代码时,我不确定如何处理这个问题。例如:如果 C# 应用程序调用我的 dll 包装器,我从本机调用返回什么:
void* start(ThreadFunc,void *, unsigned *);
Run Code Online (Sandbox Code Playgroud)
我目前正试图在一个通用的 System::Object^ 中装箱返回,但没有运气。这是包装器中的调用:
m_NativeThread->start(cb,
GCHandle::ToIntPtr(GCHandle::Alloc(o)).ToPointer(),
static_cast<unsigned int*>(GCHandle::ToIntPtr(GCHandle::Alloc(u)).ToPointer())));
Run Code Online (Sandbox Code Playgroud)
任何人都可以提供解决方案吗?