EQuestionAnswers.com Computer/Electronics Questions and Answers
C, C++, VC++, COM/DCOM, DLL and more
#Login #Sign up  Facebook Twitter TGoogle+

#Previous question #Index of COM/DCOM Questions #Next question

Define interface using C++

Interface can be defined as a class with one or more public pure virtual functions. Interface used in COM/DCOM should always return success or error as HRESULT. Input arguments are as normal as input variables and output/return arguments should be passed as reference or pointer.

class ICalculate : public IDispatch
  virtual HRESULT get_Operand1(long *pVal) = 0;
  virtual HRESULT put_Operand1(long newVal) = 0;
  virtual HRESULT get_Operand2(long *pVal) = 0;
  virtual HRESULT put_Operand2(long newVal) = 0;
  virtual HRESULT DoOperation(char operation) = 0;
  virtual HRESULT get_Result(long *pVal) = 0;

Interface IDL

Interface should be defined in IDL file using interface definition language. Interface defined in IDL can be used in all programming languages. C/C++/C#, VB, Java Script, JAVA and all language supports these standard.

  • Define an unique GUID and other attributes of the interface in [].
  • Define the class structure of the interface with interface name and the inherited interface name.
  • Add the properties and methods under {}
  • Properties and methods should have ID and attributes inside []
  • Properties and methods should have a function prototype

Now this interface should be used to access one or more coclasses.

Interface definition syntax

[<Interface ID and attribute>]
interface <Interface Name> : <Inherited from interface>
  [<get/put/method ID/attributes>]<Property get/put/method prototype>;

Example Interface in IDL

// MathLib.idl : IDL source for MathLib.dll

// This file will be processed by the MIDL tool to
// produce the type library (MathLib.tlb) and marshalling code.

import "oaidl.idl";
import "ocidl.idl";
    helpstring("ICalculate Interface tiny calculator demo opject"),
  interface ICalculate : IDispatch
    [propget, id(1), helpstring("Operand1 of calculator")] HRESULT Operand1([out, retval] long *pVal);
    [propput, id(1), helpstring("Operand1 of calculator")] HRESULT Operand1([in] long newVal);
    [propget, id(2), helpstring("Operand2 of calculator")] HRESULT Operand2([out, retval] long *pVal);
    [propput, id(2), helpstring("Operand2 of calculator")] HRESULT Operand2([in] long newVal);
    [id(3), helpstring("calculator main Operation method")] HRESULT DoOperation([in] char operation);
    [propget, id(4), helpstring("Result of calculator")] HRESULT Result([out, retval] long *pVal);

  helpstring("MathLib 1.0 Type Library")
library MATHLIBLib

    helpstring("Calculate Class")
  coclass Calculate
    [default] interface ICalculate;

You have viewed 1 page out of 66. Your COM/DCOM learning is 0.00% complete. Login to check your learning progress.

 Vote 0

Similar topics related to this section

# COM DCOM Interview Questions and Answers :: ALL Interview .com
# COM DCOM - COM DCOM Interview Questions
# COM interview questions | TechInterviews
# COM Interview Questions - CodeProject
# Com Dcom Interview Questions - Com and Dcom in Asp Net
# ATL Interview Questions and Answers :: ALL Interview .com
# ActiveX Interview Questions and Answers :: ALL Interview .com

* #1 webmaster Mon 28 Apr/2014 01:22:54(GMT)  Like 0 Unlike 0

Dear Users,

We are pleased to inform you that a forum/blog has been incorporated with www.mybestnotes.co.in. You are welcomed to add your comments, requests, codes, solutions and feedback to it. Please login(if already a member) or signup(for free) to avail to this facility.


Your message goes here:

My Post:*
Secutiry Code: ******  *
Preview this compose before posting this in discussion forum.
  1. Use [Sxx] code to show smiles. Example [S02]
  2. Use [URL ], example [URL http://www.google.com/]
  3. To display code or un formatted text use [CODE] [/CODE]. Example: [CODE] printf("Hello world"); [/CODE]
 [S01]   [S02]   [S03]   [S04]   [S05]   [S06]   [S07]   [S08] 
 [S09]   [S10]   [S11]   [S12]   [S13]   [S14]   [S15]   [S16] 
 [S17]   [S18]   [S19]   [S20]   [S21]   [S22]   [S23]   [S24] 

Note: Only members are allowed, * fields are mandatory.