在朋友帮助下我建立了COM接口,现在接口需要传递结构体类型参数
STDMETHOD(WarningCheck)(/*[in]*/Name1111111  idInfo,/*[out retval]*/ int *pVal);
STDMETHOD(SetPrinterParamData)(/*[in]*/short printerID, CPAPrinterParams PParam,short mpaperX,short mpaperY,/*[out retval]*/ int *pVal1);CPAPrinterParams 为SDK提供的结构体,如果我不能定义他的结构体类型,我将很麻烦,所以我问下如何使用他自己的结构体定义指针变量
如果不能定义,我在DLL里封装好了某个功能,该如何让COM去调用这个DLL!

解决方案 »

  1.   

    COM接口是可以使用自定义类型的或者你可以将它以数组的形式传递,然后再转换一下类型
      

  2.   

    typedef [public] struct tagPrinterParams {
        。。
    }PrinterParams;typedef struct tagPrinterParams {
        。。
    }PrinterParams,CPUXIDINFO*;我不能定义为指针,而且如果自定义我要改SDK提供的源程序这是不允许的
    所以不知道该怎么办了
      

  3.   

    你是可以在idl文件中定义结构体的.
    然后使用指针类型的传递
      

  4.   

    我定义过了,这里有位高手经常教我,只是他比较忙不能总是提醒我罢了
    但如果我这样定义,然后这样把值与SDK提供的值来回赋值那不是很麻烦吗
    我在想是不是可以把我做好的DLL,在COM里调用?
      

  5.   

    在 你的控件的idl 里面定义一个struct。 
    然后你就可以在接口里面以此为参数调用了。 
    例如: 
    typedef    
      [    
      uuid(994A75FF-6FC8-4802-AA42-4E04776BD521),    
      version(1.0),    
      helpstring("A   Demo   UDT   variable   for   VB   projects")    
      ]    
      struct   UDTVariable   {    
      [helpstring("Special   case   variant")]         VARIANT     Special;    
      [helpstring("Name   of   the   variable")]         BSTR           Name;    
      [helpstring("Value   of   the   variable")]       long           Value;    
      }   UDTVariable;    myteststruct