none
com对象作为返回参数反复使用问题 RRS feed

  • 问题

  • 想请教个问题:我在用com方式调用word,那么document获取对象要作为全局使用,但是获得一次,再次获得就有异常,请教是如何正常使用呢?

    例子代码如下:
    使用bcb

    class TForm1 : public TForm

    {
           ........................................
            void __fastcall Button1Click(TObject *Sender);

            Word_2k::TCOM_Document prop;

    };

    .....................................
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      if (OpenDialog1->Execute())
      {
        TVariant FileName = OpenDialog1->FileName.c_str();
        CoWordApplication myCoWordApplication;
        TCOM_Application AppPtr = myCoWordApplication.Create();
       AppPtr->Documents->Open(&FileName,
        TNoParam(),
       TNoParam(),
       TNoParam(),
       TNoParam(),
       TNoParam(),
       TNoParam(),
       TNoParam(),
       TNoParam(),
       TNoParam(),
        TNoParam(),
       TNoParam(),

        (Word_2k::WordDocumentPtr*)&prop);

        //AppPtr->ActiveDocument->PrintOut();
        prop->PrintOut();

      }

    }

    prop要在别的地方使用,所以在头文件声明,使用是没问题;但是如果这个Button1Click再次使用,
    打开另外一个文档,就出错了,可以理解prop没有被清除,但是如何清除呢?
    这只是一个例子,prop如果能作为prop=function(。。。);使用好像没有问题,但是有时候,
    不止一个返回参数,则没法这样使用。

    2012年10月11日 2:27

答案

全部回复