一般都用CreateWindow动态创建一些通用控件,如按钮等,对于这些,由于我们知道它的类名,创建很简单,我想知道的是,对于那些我们只在注册表中注册的ocx控件,比如dbgrid.OCX,Timer.OCX,还有一些我们自己做的ocx控件,不知道它的类名是什么,怎么动态创建哪?
   我想实现类似于vb集成开发环境的功能:凡是注册过的ocx控件,都能在组件中找到,并可以将其子窗口放到view上,请大侠们帮忙!多谢

解决方案 »

  1.   

    总该有个名称吧
    在窗体编辑器里面,右键插入activeX控件
    里面可以找到这些ocx控件
    找到你要的,
    确定
    然后给Dlg插入这个activeX的Control变量
    VC会提示添加这个activeX包含的几个cpp和h文件
    然后就直接可以用了
      

  2.   

    另外直接可以
    project -> add to project -> components and controls
    添加
      

  3.   

    谢谢楼上,但可能你们没理解我得意思,我是想动态创建控件,
    也就是我要实现您上面说得功能,我要自己做一个编辑环境,类似于一个简单的VB开发环境。
    而不是在VC或VB的环境下添加控件,是在我自己做的EXE程序中动态添加。也就是说一旦控件注册,在我得程序中就能将其列出(是不是需要对注册表操作?),并能够将控件子窗体画在我的视图窗口上。
      

  4.   

    你要知道该ocx的clsid,然后用coCreateInstance来创建,要使ocx的界面显示出来,必须要有一个容器,具体方法可到com版找找,我不记得了
      

  5.   

    多谢多谢,应该是用到COM的知识对吧,哪位有类似的例子么?请给我发一份
     [email protected]
      

  6.   

    多谢jiangsheng(蒋晟.MSMVP2004Jan) ,能给个例子么?
      

  7.   

    刚才好象见过类似的帖子,用guid或对象名创建
      

  8.   

    TO:jiangsheng(蒋晟.MSMVP2004Jan) 您说得程序是不是那个MFCIE,我从msdn上down下来,发现它实现的是一个浏览器的功能,并没有用到CWnd::CreateControl。是不是我找错了?
      

  9.   

    是MFC的源代码,在VC的安装目录下
      

  10.   

    CHTMLView是个类呀,它的源代码我还是没有找到,是那个MFCIE么,怎么不对啊,代码里没有CreateControl啊?