Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

How to create COM sink using MFC?

Posted on 2008-06-21
4
Medium Priority
?
852 Views
Last Modified: 2013-11-26
Hello,

I am having difficulties implementing a sink for a COM object dispatch interface. This is an MFC console application, so using wizards to add CCmdTarget automation is not an option.

I am not having any issues with using other interfaces (calling from my app into the COM object). It is the sink where I am running into a snag (from _Notify).

Here is a snippet of the TLH file, for which I need to implement the sink:
struct __declspec(uuid("2e21b3ec-f00f-f00f-8973-46d109c82f47"))  _TheLib;
struct __declspec(uuid("C3520671-f00f-f00f-9b96-0060083968AE")) _Notify;

TLI file for the interface of interest:
inline HRESULT _Notify::OnNotifyMsg ( )
{
    HRESULT _result = 0;
    _com_dispatch_method(this, 0x2, DISPATCH_METHOD, VT_ERROR, (void*)&_result, NULL);
    return _result;
}

Here is the IDL:
library TheLib
{
    // TLib :     // TLib : OLE Automation : {00020430-0000-0000-C000-000000000046}
    importlib("stdole2.tlb");

    // Forward declare all types defined in this typelib
    dispinterface _Notify;
    [
      uuid(C3520671-F00F-F00F-9B96-0060083968AE),
      helpstring("_Notifyinterface")
    ]

    dispinterface _Notify{
        properties:
        methods:
            [id(0x00000002)]
            HRESULT OnNotifyMsg();
    };
};

I've generated the  IDispatch wrapper class using the Add Class from Typelib Wizard. I've then attempted to inherit and extend the method which I am interested in - but the sink never receives any events.

I would greatly appreciate help with this. I've tried many different ways of doing this, and have looked through other posts about this subject on Experts Exchange - without too much help.

Thanks everyone!

NotLogical
0
Comment
Question by:NotLogical
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
4 Comments
 
LVL 49

Assisted Solution

by:DanRollins
DanRollins earned 600 total points
ID: 21842176
THis codeproject article should provide some clues.
   Handling COM Events in a Console Application
   http://www.codeproject.com/KB/COM/xyevent.aspx
0
 
LVL 8

Author Comment

by:NotLogical
ID: 21842265
Dan,

The article you offered is quite interesting, although the XYDispDriver class which is discussed only connects one COM object's dispatcher to another one. This is done in a console application, but it unfortunately does not create a sink within said console application.

Thanks,

NotLogical
0
 
LVL 19

Assisted Solution

by:alb66
alb66 earned 600 total points
ID: 21864592
0
 
LVL 8

Accepted Solution

by:
NotLogical earned 0 total points
ID: 21871034
Thank you for your help... I think this will work!
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This document covers how to connect to SQL Server and browse its contents.  It is meant for those new to Visual Studio and/or working with Microsoft SQL Server.  It is not a guide to building SQL Server database connections in your code.  This is mo…
For those of you who don't follow the news, or just happen to live under rocks, Microsoft Research released a beta SDK (http://www.microsoft.com/en-us/download/details.aspx?id=27876) for the Xbox 360 Kinect. If you don't know what a Kinect is (http:…
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.
Add bar graphs to Access queries using Unicode block characters. Graphs appear on every record in the color you want. Give life to numbers. Hopes this gives you ideas on visualizing your data in new ways ~ Create a calculated field in a query: …

715 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question