我在使用一个电子地图的ocx控件编程序,改控件的ReadHtDefault函数可以打开电子地图,我看
该函数的定义如下:function(var CodeDir:IInterface;var MapFullName:IInterface)
请问我该怎么定义参数,如何把地图的路径和名称赋给变量?

解决方案 »

  1.   

    IInterface = interface
        ['{00000000-0000-0000-C000-000000000046}']
        function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
        function _AddRef: Integer; stdcall;
        function _Release: Integer; stdcall;
      end;
      

  2.   

    To lwqiang (lwqiang):
        你必须认真查看该OCX的使用手册,不知道你对接口、OLE了解多少,总之你的参数必须是接口的实现类对象。
      

  3.   

    有两条思路供参考;
    第一:仔细地在控件的.pas文件中找到可以获得 路径和名称 的类的 '实现类'然后找出起CLASS定义时继承的接口; 因为Interface 是一个最原始的接口(类似超类object),所以可以使用继承于它的子接口作为传入参数;
    如果:IMywork=interface()
         ...
         function A():string;//而 TMywork = class(object,IMywork)
       ...
       function A() //用来设置/获得路径/名称///////
    那么在你使用的控件的窗体类中声明
      FMywork:IMywork; 
      然后利用 Fmywork.A() 设置路径;//在使用FMywork前 一定要先创建
      之后就可以将FMywork作为 你所需要的参数传入了试试吧! 这条思路适合你的第二,就是自己重写一个实现类,不要用接口做参数!  hehe难度不小哦~~