Click here to Skip to main content
15,905,683 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
QuestionWhat is the difference between ... Pin
User 98855-Dec-02 5:14
User 98855-Dec-02 5:14 
AnswerRe: What is the difference between ... Pin
Maximilien5-Dec-02 5:24
Maximilien5-Dec-02 5:24 
GeneralRe: What is the difference between ... Pin
User 98855-Dec-02 5:29
User 98855-Dec-02 5:29 
GeneralRe: What is the difference between ... Pin
Maximilien5-Dec-02 5:45
Maximilien5-Dec-02 5:45 
GeneralRe: What is the difference between ... Pin
Daniel Turini5-Dec-02 6:08
Daniel Turini5-Dec-02 6:08 
GeneralRe: What is the difference between ... Pin
User 98855-Dec-02 6:11
User 98855-Dec-02 6:11 
QuestionHow to Expose two COM interfaces Pin
Alois Kraus5-Dec-02 5:08
Alois Kraus5-Dec-02 5:08 
AnswerRe: How to Expose two COM interfaces Pin
peterchen5-Dec-02 7:37
peterchen5-Dec-02 7:37 
There are two basic ways to expose a secondary interface:

a) local classes (MFC does that, including some dirty tricks to make this effective)
b) multile inheritance (ATL does that)

b) is IMO much cleaner, only you can get into problems with method name clashes
Some pseudocode for the latter:
class CCoImpl : public IFun, public ITest
{
   HRESULT QueryInterface()
   {
      if (iid == IUnknown) {  // always return the same pointer when specifically asked for IUnk; which one doesn't matter
        addref, return static_cast<IFun *>(this);
      }
      if (iid == IFun) {
        addref, return static_cast<IFun *>(this); 
      }
      if (iid == ITest) {
        addref, return static_cast<ITest *>(this);
      }
     return E_NOINTERFACE;
   }
   // IFun methods:
   HRESULT GoShopping() { ... }
   HRESULT GoRocking()  { ... }

   // ITest Methods
   HRESULT TestCountShoes(....) { ... }
};


you get the idea...

Neither way you can expose two dispatch (or dual) interfaces - you can only have obe dispatch-based interface per object.


If I could find a souvenir / just to prove the world was here   [sighist]
GeneralVisible area of CDC Pin
S O S5-Dec-02 4:07
S O S5-Dec-02 4:07 
GeneralRe: Visible area of CDC Pin
Maximilien5-Dec-02 4:18
Maximilien5-Dec-02 4:18 
GeneralRe: Visible area of CDC Pin
Paul M Watt5-Dec-02 5:31
mentorPaul M Watt5-Dec-02 5:31 
GeneralRe: Visible area of CDC Pin
S O S5-Dec-02 10:04
S O S5-Dec-02 10:04 
GeneralAdding a printer driver programmatically Pin
Adrian von Gunten5-Dec-02 3:53
Adrian von Gunten5-Dec-02 3:53 
Generalchecking a pipe status Pin
Martin Blanc5-Dec-02 3:43
Martin Blanc5-Dec-02 3:43 
GeneralRe: checking a pipe status Pin
Alois Kraus5-Dec-02 23:29
Alois Kraus5-Dec-02 23:29 
GeneralRe: checking a pipe status Pin
Martin Blanc6-Dec-02 4:54
Martin Blanc6-Dec-02 4:54 
GeneralVC.NET vs VB.NET Pin
devvvy5-Dec-02 3:20
devvvy5-Dec-02 3:20 
GeneralRe: VC.NET vs VB.NET Pin
Maximilien5-Dec-02 3:39
Maximilien5-Dec-02 3:39 
GeneralRe: VC.NET vs VB.NET Pin
devvvy5-Dec-02 3:49
devvvy5-Dec-02 3:49 
GeneralRe: VC.NET vs VB.NET Pin
Daniel Turini5-Dec-02 5:02
Daniel Turini5-Dec-02 5:02 
GeneralRe: VC.NET vs VB.NET Pin
Rickard Andersson205-Dec-02 3:58
Rickard Andersson205-Dec-02 3:58 
GeneralRe: VC.NET vs VB.NET Pin
Michael P Butler5-Dec-02 4:03
Michael P Butler5-Dec-02 4:03 
GeneralRe: VC.NET vs VB.NET Pin
devvvy5-Dec-02 4:10
devvvy5-Dec-02 4:10 
GeneralRe: VC.NET vs VB.NET Pin
Daniel Turini5-Dec-02 4:29
Daniel Turini5-Dec-02 4:29 
GeneralRe: VC.NET vs VB.NET Pin
devvvy5-Dec-02 4:38
devvvy5-Dec-02 4:38 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.