[求教OLE达人]VC中调用Word文档进行Save As的问题
我要把Word文档Save As为htm文件,可是格式都没了,怎么回事?
中间需要什么操作么?还是我Save As的函数参数不对?
部分代码如下:
_Application oApp;
Documents oDocs(oApp.GetDocuments());
_Document oDoc;
//Set up the DISPPARAMS for the SaveAs method (11 arguments)
VARIANT vArgsSaveAs[16];
BSTR bstrEmptyString;
bstrEmptyString = ::SysAllocString(OLESTR(""));
VARIANT vFalse, vTrue;
vFalse.vt = VT_BOOL;
vFalse.boolVal = FALSE;
vTrue.vt = VT_BOOL;
vTrue.boolVal = TRUE;
vArgsSaveAs[0].vt = VT_BSTR;
vArgsSaveAs[0].bstrVal = szhtmPath.AllocSysString(); //Filename
vArgsSaveAs[1].vt = VT_I4;
vArgsSaveAs[1].lVal = 4; //FileFormat
vArgsSaveAs[2] = vFalse; //LockComments
vArgsSaveAs[3].vt = VT_BSTR;
vArgsSaveAs[3].bstrVal = bstrEmptyString; //Password
vArgsSaveAs[4].vt = VT_BOOL;
vArgsSaveAs[4].boolVal = FALSE; //AddToRecentFiles
vArgsSaveAs[5].vt = VT_BSTR;
vArgsSaveAs[5].bstrVal = bstrEmptyString; //WritePassword
vArgsSaveAs[6] = vFalse; //ReadOnlyRecommended
vArgsSaveAs[7] = vTrue; //EmbedTrueTypeFonts
vArgsSaveAs[8] = vFalse; //SaveNativePictureFormat
vArgsSaveAs[9] = vFalse; //SaveFormsData
vArgsSaveAs[10] = vFalse; //SaveAsOCELetter
vArgsSaveAs[11] = vFalse; //Encoding
vArgsSaveAs[12] = vFalse; //InsertLineBreaks
vArgsSaveAs[13] = vFalse; //AllowSubstitutions
vArgsSaveAs[14] = vFalse; //LineEnding
vArgsSaveAs[15] = vFalse; //AddBiDiMarks
//Invoke the SaveAs method
oDoc.SaveAs(&vArgsSaveAs[0],
&vArgsSaveAs[1],
&vArgsSaveAs[2],
&vArgsSaveAs[3],
&vArgsSaveAs[4],
&vArgsSaveAs[5],
&vArgsSaveAs[6],
&vArgsSaveAs[7],
&vArgsSaveAs[8],
&vArgsSaveAs[9],
&vArgsSaveAs[10],
&vArgsSaveAs[11],
&vArgsSaveAs[12],
&vArgsSaveAs[13],
&vArgsSaveAs[14],
&vArgsSaveAs[15]
);
::SysFreeString(bstrEmptyString);