文本文件是UTF8格式的,open函数传入测参数如下:
CComVariant vFilename = L"c:\\test.txt";
CComVariant vTrue((short)TRUE), vFalse((short)FALSE), vNoDialog((short)TRUE);
CComVariant vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
CComVariant vFormat((long)0x00000005);
CComVariant vEncode((long)0x0000FDE9); hRet = pDocs->Open(
&vFilename, 
&vFalse, 
&vFalse, 
&vFalse,
&vOptional, 
&vOptional, 
&vOptional, 
&vOptional, 
&vOptional, 
&vFormat,   /// 指定为Unicode文本格式, 不指定这两个参数时可以打开Word文档
&vEncode,   /// 指定编码为UTF8
&vTrue,     
&vOptional, 
&vOptional, 
&vOptional, 
&vOptional, 
&pDoc);
请教一下上面的这样写为何不能打开文本文件 ?

解决方案 »

  1.   

    试了一下
    #include"stdafx.h"
    #include<afxdisp.h>
    #include<windows.h>
    #include <iostream>
    #include<stdio.h>
    using namespace std;#import "C:\\Program Files\\Common Files\\Microsoft Shared\\OFFICE11\\mso.dll"rename_namespace("Office") named_guids,exclude("Pages")
    using namespace Office;#import "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA6\\VBE6EXT.olb" rename_namespace("VBE6")
    using namespace VBE6;#import "C:\\Program Files\\Microsoft Office\\OFFICE11\\MSWORD.OLB" rename("ExitWindows","ExitWindowsEx")#import "C:\\Program Files\\Microsoft Office\\OFFICE11\\MSWORD.OLB"rename_namespace("Word"), raw_interfaces_only, named_guids ,exclude("Pages")
    using namespace Word;int main()
    { CoInitialize(NULL);
    Word::_ApplicationPtr  app;  
    Word::DocumentsPtr  docs;  
    COleVariant  vFalse((short)FALSE),  vOpt((long)DISP_E_PARAMNOTFOUND,  VT_ERROR);   if  (!app.CreateInstance(L"Word.Application"))  
    TRACE("\nCreate  Dispatch  failed!");   app->put_Visible(_variant_t(TRUE));   app->get_Documents(&docs);  
    CComVariant vFilename = L"c:\\test.txt";
    CComVariant vTrue((short)TRUE), vNoDialog((short)TRUE);
    CComVariant vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
    CComVariant vFormat((long)0x00000005);
    CComVariant vEncode((long)0x0000FDE9);  HRESULT hRet = docs->Open(
    &vFilename, 
    &vFalse, 
    &vFalse, 
    &vFalse,                    
    &vOptional, 
    &vOptional, 
    &vOptional, 
    &vOptional, 
    &vOptional, 
    &vOptional,   /// 指定为Unicode文本格式, 不指定这两个参数时可以打开Word文档
    &vOptional,   /// 指定编码为UTF8
    &vTrue,     
    &vOptional, 
    &vOptional, 
    &vOptional, 
    &vOptional); while(1)
    Sleep(1000); docs->Close();
    docs.Release();
    app->Quit(vFalse,  vOpt,  vOpt);  
    app.Release(); 
    CoUninitialize();
    return 0;}
      

  2.   

    To fishion: 我按照你的方式传入参数在我的程序里返回还是失败,返回值是  0x800a1551另外我想实现的是打开UTF8\UNICODE\ANSI 这几种编码的文件,所以参数中还是需要指定编码的参数。还请指教。
      

  3.   

    只要你是用word来打开txt的,不用你自己来指定编码类型,word会自己解析的
    。关于你所提到的返回值,我就不清楚了,这个错误没看到过
      

  4.   

    至少我用word 2003的时候就可以