我用 #import "./Resource/Flash9.ocx" no_namespace  导入了Flash9.ocx
然后在程序中添加如下代码:
IShockwaveFlash *flash; HRESULT hr; hr = CoInitialize(NULL); hr = CoCreateInstance(__uuidof(ShockwaveFlash),
  NULL,
  CLSCTX_INPROC_SERVER,
      __uuidof(IShockwaveFlash),
      (void **)&flash);        // hr = S_OK flash->put_Movie( _bstr_t("d:\\testswf.swf") ); long state = flash->GetReadyState();
        // 一直是3 Interactive

long totalframes = flash->GetTotalFrames();
        // 这里就报错,因为只有等ReadyState=4的时候才能调用 CoUninitialize();
我接触C++时间很短,不知道问题出在哪里,希望高手解救,在线等~~~~

解决方案 »

  1.   

    ocx控件必须在容器中激活才能使用,不能像普通COM组件一样创建就用。
      

  2.   

    http://topic.csdn.net/u/20080509/09/20f8866c-2ce6-47a1-a1ce-883eaecefd91.html
      

  3.   


    我是要在win32的程序中使用ActiveX控件,在MFC中使用过,没出现问题。#define _AFXDLL
    #include <afxdisp.h>如果是这样的话,就不能使用 windows.h 了请问,我要在windows程序中如何使用ActiveX控件呢?
      

  4.   

    MFC中的CWnd本身实现了容器功能,所以能正常使用。
    如果想通过API方式来使用,建议使用ATL中提供的CAxWindow窗口类来加载控件,它就是一个容器窗口。
      

  5.   

    谢谢各位~~我直接分析swf文件格式获取了~~~ 要用ActiveX,还是在MFC下比较方便~~