在VC中如何动态创建ActiveX控件,而且可以根据传来的参数创建参数所表明的多个个数的控件在一个框架中,就象在VB中在一个窗体中根据传来的参数在运行时,生成多个控件在窗体上。
谢谢,您的帮忙。

解决方案 »

  1.   

      根据参数调用CoCreateInstance();即可.
      

  2.   

    the following codesnippet can create activex control at run time
    CComQIPtr<IWebBrowser2> m_spBrowser;
    CAxWindow content_wnd;
    ......
    if(  _tcslen(m_tcHtmlFileName) > 0 )
    {
    RECT rc;
    GetClientRect( &rc );
    if(m_spBrowser==NULL)
    {
    LPOLESTR pstrbrowserid;
    StringFromCLSID(IID_IWebBrowser2,&pstrbrowserid);
    _bstr_t bstrbrowser(pstrbrowserid);
    CoTaskMemFree(pstrbrowserid);
    if(content_wnd.IsWindow())
    content_wnd.DestroyWindow();
    content_wnd.Create( m_hWnd, rc, LPCTSTR(bstrbrowser), WS_CHILD&brvbar;WS_VISIBLE&brvbar;WS_HSCROLL&brvbar;WS_VSCROLL );//create a browser control
    HRESULT hrbrowser;
    hrbrowser = content_wnd.QueryControl( IID_IWebBrowser2, reinterpret_cast<void**>(&m_spBrowser) );
    }
      

  3.   

    CComPtr<IUnknown> m_ptrNestedAxControl;
    CAxWindow m_axNestedControl;m_axNestedControl.Create(m_hWnd, rect, 0, WS_CHILD|WS_VISIBLE);
    m_axNestedControl.CreateControlEx( Active控件的CLSID, NULL, NULL, &m_ptrNestedAxControl);//得到m_axNestedControl为控件窗口
    //m_ptrNestedAxControl为控件接口
    //Active控件的CLSID可以用StringFromCLSID获取,或直接用Exescope去获取.
      

  4.   

    搞不懂你说什么,好几句都看不懂。
    传来的参数创建参数所表明的多个个数的控件在一个框架中
    ---什么东西啊?一句话,要创建用CoCreateInstance,