如何通过MFC打开Word文档并打印它?我们可以通过自动化方法完成要求的功能,下面这一段代码就很好地说明了问题:
_Application objWord; // Convenient values declared as ColeVariants.
COleVariant covTrue((short)TRUE), covFalse((short)FALSE), covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
// Get the IDispatch pointer and attach it to the objWord object.
if (!objWord.CreateDispatch("Word.Application"))
{
AfxMessageBox("Couldn't get Word object.");
return;
}
objWord.SetVisible(TRUE); //显示应用程序 Documents docs(objWord.GetDocuments());
_Document testDoc;
testDoc.AttachDispatch(docs.Open(
COleVariant("C:\\Test.doc",VT_BSTR),
covFalse, // 确定转换
covFalse, // 只读打开
covFalse, // 添加到最近使用文件列表
covOptional, // PasswordDocument.
covOptional, // PasswordTemplate.
covFalse, // Revert.
covOptional, // WritePasswordDocument.
covOptional, // WritePasswordTemplate.
covOptional) // Format. // 如果是Word97,这便是最好一个参数
covOptional, // 编码 // 下面是Word 2000/2002专用的参数
covTrue, // 可见
covOptional, // OpenConflictDocument
covOptional, // OpenAndRepair
(long)0, // DocumentDirection wdDocumentDirection LeftToRight
covOptional // NoEncodingDialog
)
);
AfxMessageBox("打印两份");
testDoc.PrintOut(covFalse, // 背景
covOptional, // Append.
covOptional, // Range.
covOptional, // OutputFileName.
covOptional, // From.
covOptional, // To.
covOptional, // Item.
COleVariant((long)2), // 份数
covOptional, // Pages.
covOptional, // PageType.
covOptional, // PrintToFile.
covOptional, // Collate.
covOptional, // ActivePrinterMacGX.
covOptional // ManualDuplexPrint.
covOptional, // PrintZoomColumn New with Word 2002
covOptional, // PrintZoomRow ditto
covOptional, // PrintZoomPaperWidth ditto
covOptional); // PrintZoomPaperHeight ditto
objWord.Quit(covFalse, // 保存修改
covTrue, // 原始格式
covFalse // RouteDocument.
);
|