http://topic.csdn.net/t/20020730/19/911531.html
5 楼masterz(www.fruitfruit.com)给的代码改到对话框程序中不能正常显示控件,
m_container.Create(   hDlg,   rc,   LPCTSTR("ShockwaveFlash.ShockwaveFlash.1"),WS_CHILD|WS_VISIBLE|WS_HSCROLL|WS_VSCROLL);m_container.QueryControl(__uuidof(IShockwaveFlash),reinterpret_cast<void**>(&shwaveflash));   跟踪发现m_xx.create();函数执行错误.有没有利用api函数使用activex控件的方法?CoInitialize(NULL); 
hr= ::CoCreateInstance(rclsid,pUnkOuter, CLSCTX_ALL,riid,(void **)&shwaveflash);
可以得到正确的shwaveflash,但控件怎么显示出来呢?有没有利用api使用activex控件的例子?(大概方法或思路都可以)

解决方案 »

  1.   

    用Active x控件需要初始化的。
      

  2.   

    CoInitialize(NULL);初始化com环境?InitCommonControlsEx(?)?具体给说说
      

  3.   

    http://www.codeproject.com/com/cwebpage.asp把这个和"COM In plain C"看懂
      

  4.   

    在sdk中使用activex要使嵌入控件的窗口成为一个容器,要实现一些必要的接口,比如:
    IDispatch,
    IAdviseSink,
    IOleClientSite,
    IOleInPlaceFrame,
    IOleControlSite,
    ISimpleFrameSite,
    IOleInPlaceSite并且在创建控件的时候使用OleCreate函数.