小弟用MFC写一控件 之前觉得都和普通的MFC程序没有什么区别 但 容器程序该如何给控件传递参数(包括各种类型参数 结构体 字符串等),并取得返回值呢请大家指教 或者有相关的学习资料推荐也好

解决方案 »

  1.   

    你是想实现容器还是实现控件?现有的ActiveX测试容器能做到,因为ActiveX控件都是双接口,并实现了ITypeInfo接口,通过这个接口,容器能获得控件所有的属性和方法,以及方法的所有参数及参数类型,并通过调用控件的Invoke方法来实现对所有属性和方法的调用。其实控件不一定需要实现ITypeInfo,只需手动实现IDispatch也能做到。
      

  2.   

    ATL的可以看看连接点相关的知识,MFC生成的,好像属性就可以单独使用的。直接赋值就行了吧。取值好像也是直接取就行了。你试试。潘爱民的《COM原理与应用》里面讲了一些用MFC实现COM的相关原理与实例。如果是ATL相关的推荐看《深入解析ATL》这本书。好运,我前几天为了这些知识也头痛,网上问了很多人也不是很清楚原理。自己净下心,好好看下书,再问问人。就慢慢的明白点了。呵呵。
      

  3.   

    TO 1楼  我想貌似是要实现控件的吧  就是容器调用控件的方法 或者直接把一个参数传递给控件现在要做的是一个显示矢量图的控件 绘制部分都完事了  但如果点控件中的某一按钮 就弹出一个新的窗口并且这个窗口还要显示这个控件  但是根据点的按钮不同 有一些不同的参数要传进去  呵呵TO 2楼 谢谢你的建议  我也是 在网上查了些资料 大部分都是DELPHI的 很是郁闷 
      

  4.   

    新的窗口是新IE窗口?标准做法应该是响应容器传给你的鼠标消息,然后调用window对象的open方法打开另一个URL,只能根据不同按钮打开不同URL,不能传递其它自定义参数
      

  5.   

    所谓新窗口可以是IE 也可是个WINDOW 或者一个对话框  看初始是怎么调用这个控件地了
      

  6.   

    不管是打开IE还是对话框还是window,归根结底都是window,你可以在打开新window后再访问这个window中的DOM,进而访问这个DOM中的你的另一个ActiveX实例,然后通过调用方法来传递自定义参数。不过你要多试验,要小心IE安全管理器的限制,比如跨域访问、跨frame访问
      

  7.   

    我现在在ACTIVEX控件类里添加一个对话框类 
    并在这个对话框里又插入了我另外一个 当前A控件的的实例且给其添加了控制变量
    可是为什么当我触发这个DLG时走到OnInitDialog时会崩溃?    是我如此嵌套导致的还是其他地方导致的呢
      

  8.   

    调用容器中的方法,比如WebBrowser::Navigate2之类的