大家好,    我用 MFC Activex ControlWizard向导生成了一个工程,想要编译生成一个ocx控件,在Project-->Setting-->General选项卡,是选择 Use MFC in a Static Library还是选择 Use MFC in a Shared DLL,这两个有什么区别呢?    在现有的工程中选择了 Use MFC in a Static Library,编译生成了一个ocx控件,写了简单的网页测试代码,结果在网页中显示为一个白色的框框和一个红色的小叉.查了一些资料,问题的原因,是工程里面调用了DLL文件.这个问题的解决办法是,将ocx,dll,打成一个cab包,还需要写一个*.inf文件.想问一下,*.inf文件是不是跟ocx,dll,一起打包成cab包,还是将其放到
C:\WINDOWS\system32目录下面就可以了.   打包工具用iexpress.exe,是不是就可以了? 
    

解决方案 »

  1.   

    inf文件、所依赖的dll文件,以及ocx文件都需要打包到cab文件之中,并且学要数字签名。
    相关的cab打包方法google一下,网上很多。涉及的打包工具有好几个。
      

  2.   

    只有发布的时候才需要打包成cab文件。
    测试的时候只需要将其控件注册一下就行了。
      

  3.   

    费了好多功夫,ocx 终于编译完成了,将它所需要的dll全部放到了C:\WINDOWS\system32下面,
    写了一个简单的测试页面,终于可以在页面里面看到 MFC的Dialog窗体,可是现在又出现了两个问题:1> ocx控件是一个播放器的窗体程序,播放流媒体的时候,需要从网页中获取播放流文件的参数,
       添加了一个按钮,单击的时候,将播放所需的参数,传给ocx,然后进行播放.可点击按钮的时候,
       弹出了一个对话框,内容是这样的:   "Internet Explorer   在此页上的ActiveX控件和本页上的其它部分的交互可能不安全.你想允许这种交互吗?"   点击"是"的时候,没有什么反应,播放所需的参数还是没有传进去,从而没有调用播放接口,不能成功播放;2> 关闭浏览器的时候,报了内存错误. MFC的Dialog程序里面,有退出的接口,不知道有没有被调用,
       是浏览器自己调用,还是需要手动添加代码?   请高手多多指教,非常感谢!