如题,多谢指教

解决方案 »

  1.   

    CreateControl动态创建控件对象。
      

  2.   

    CreateControl动态创建控件对象。
    然后用对应的智能指针进行操作.
      

  3.   

    我用windows带的CActiveMovie3做测试,以下是相关代码,编译通过,用测试容器测试(我做的是一个ActiveX控件),当插入我写的控件后,出现非法错误,找不到原因,请指点CActiveMovie3 m_ActiveMovie;
    m_ActiveMovie.CreateControl(m_ActiveMovie.GetClsid(),"Media Player",WS_VISIBLE,CRect(10,30,100,100),this,
    204,NULL,FALSE,NULL);
      

  4.   

    或者换个问法,怎么才能知道一个控件的clsid,在没有源程序的基础上
      

  5.   

    你上面的代码是想创建windows 媒体播放机吗?
    你在做控件的时候,用向导的话,有个页面让你选择是否生成runtime licens,默认不创建。
    windows的好多控件都是有runtime licens的,换句话说,你不能动态创建,除非你向微软买开发包,这就是为什么有些控件明明在系统里,就是无法动态创建。
    比如mscomm控件,我以前为了这个问题,搞得我快崩溃了,我在我的电脑上可以动态创建,在别的电脑上就是不行,后来才知道,我的电脑里安装了VC6.0,而mscomm是属于VS6.0的,所以在安装VC6.0的时候,就已安装了mscomm的runtime licens,而目标机器没有这个runtime licens,于是就无法动态创建了。微软这样就限制了对于mscomm的开发只能在安装了VS6.0的电脑上,拷贝mscomm到其它电脑上,只能用,不能开发。