描述:
将MS Word作为一个ActiveX控件嵌入VC程序里,请问大虾如何让Word控件直接显示内存中的内容,不使用临时文件中转。
解决方案1:
和Word的版本有关,我是2003,代码在我机器上是跑通的。去掉四个参数会错?如果你去的是最后四个应该不会,word接口不会不兼容的。我只是举个向word写文本的例子,实际你做的时候当然要有变化,不过调用的接口是一样的。
根据你的需求,你应该调用Create而不是Open
SetText之后将Doc设为只读
_Application wordApp;
wordApp.CreateDispatch("word.Application");
Documents wordDocs;
wordDocs.AttachDispatch(wordApp.GetDocuments());
wordApp.SetVisible(TRUE); //This shows the application.
COleVariant covTrue((short)TRUE),
covFalse((short)FALSE),
covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
_Document testDoc;
testDoc.AttachDispatch(wordDocs.Open(
COleVariant("C:\\a.doc",VT_BSTR),
covFalse, // Confirm Conversion.
covFalse, // ReadOnly.
covFalse, // AddToRecentFiles.
covOptional, // PasswordDocument.
covOptional, // PasswordTemplate.
covFalse, // Revert.
covOptional, // WritePasswordDocument.
covOptional, // WritePasswordTemplate.
covOptional,
covOptional,
covOptional,
covOptional,covOptional,covOptional,covOptional) // Format.
);
Selection Sel;
Sel.AttachDispatch(wordApp.GetSelection());
Sel.SetRange(0, INT_MAX);
Sel.SetText("aaaaaaaaaaaa");
Sel.SetRange(0, 0);
用剪贴板。
将内存的内存复制到剪贴板,调用word的方法,从剪贴板中粘贴。