how do I use MFC data member from a concrete C++ class from a COM interface


I have created a new thread because the subject is somewhat different.

I use a C# webbapplication which call different COM object using the
defined COM interface for each concrete C++ class.
So at the bottom I have a OpenDS method located in the concrete C++ class
This method is also define at the IHandle_DS COM interface.
Here is the sequence for my new design for the new concrete C++ object
1. I create a concrete C++ class from C# like this
    CHande_DS handle_ds = new Handle_DS();
    This works perfect.
2. I call OpenDS like this
   This works also perfect.
3. I pass this concrete C++ object into a method called InitRules2 which is
   defined in the COM interface ISyntaxObj
   This works also perfect.
   You can see below I have listed a piece of InitRules2.
4. I store the passed pointer to IHandle_DS in another class called
    This works also perfect.
5. The first method to be called from InitRules2 is DBInitCommandTemplate
6. If you now look at method DBInitCommandTemplate below you can see that I
    use the local Session of type CSession and local DS of type CDataSource 
in the previous code in several places
    but in the new code I can't use the local Session because of the new
I must say that these two concrete classes CDataSource and CSession is part 
of the MFC framework and not any user defined
You can use MSDN help to lookup CDataSource and CSession.
I must in some way use the CSession object that is stored in the concrete
C++ class CHandle_DS but that is not easy because of the COM interface

The reason for storing this CDataSource and CSession in CHandel_DS is to
keep the database open until I close it at the end of C# So I have 
to drag this
CHandle_DS object from C#  into the
InitRules2 because of keeping the status of my connection to the database.

So can you give me some advice how to modify or create a new interface so I
can access the concrete object Session
in method DBInitCommandTemplate see below.

STDMETHODIMP CSyntaxObj::InitRules2(IHandle_DS* handle_ds, BSTR Provider,
BSTR DataSource, BSTR UserId, BSTR Password, BSTR ProductID, BSTR Revision,
            BSTR ApplicationID, BSTR ApplicationRev, BSTR SubfileID,
   m_pAltObj = new CAlterObj;
   m_pAltObj->m_handle_DS = handle_ds;
   m_pAltObj->DBInitCommandTemplate(some parameter here)))

HRESULT CAlterObj::DBInitCommandTemplate(some parameter here)
//CSession        Session; // old code
//CDataSource DS; // old code
//hr = DS.Open(); // old code
//hr = Session.Open(DS); // old code
   hr = sqlRole.Open(Session);
   hr = LoadProcedureRules(&Session,&dbPropSet,ProductID, Revision, 

    HRESULT hr S_OK;
    hr = DS.Open("OraOLEDB.Oracle","IDTHU1","CCR_DTH_USER","P55534552");
    hr = Session.Open(DS);
    return hr;


12/6/2008 9:00:52 PM
vc.mfc 33608 articles. 0 followers. Follow

1 Replies

Similar Articles

[PageSpeed] 21

I am not sure my understanding is correct, so, to be sure: you pass to
IHandle_DS* (COM __interface pointer__) CSyntaxObj::InitRules2. It's
implementation is in ATL. You want to go from IHandle_DS* to "this" of
the corresponding Handle_DS object, so that you can get to it's
CSession and CDataSource. Right?

If that is so, you have a problem of refactoring MFC-only code, to be
used from elsewhere (C# in this case). Second thing is that you also
use ATL, which (personal opinion) is way better than using MFC for COM
work, so thumbs up there :-).

My advice is: don't do it this way. You may be able to come up with a
trick to go from an interface pointer to this (MFC even has a function
like that, CCmdTarget::FromIDispatch or something). But note that any
casting trick only works if:

* you are in-process
* you don't have any marshaling.

Otherwise, you have a proxy to IHandle_DS, and that has no idea of the
implementation Handle_DS, and there is no way to get to "this".

What you should IMO do, is to use "private" interfaces. Here's how:

* find the stuff that you need to get/call/whatever that is in you
* create the interface (IPrivateStuff) to put those in (you can put as
many *.idl-s into your project as you want, but there's no need to go
idl-happy :-) )
* implement IPrivateStuff interface in Handle_DS.
* in your code, QueryInterface for IPrivateStuff from IHandle_DS
pointer and work with it.

Yes, this is a big PITA, but IMO there is no better way.

P.S. "private interfaces" means nothing else but "it's there, but
we're not showing them to anyone".
12/8/2008 10:32:30 AM

Similar Artilces:

Outlook using imap is receiving but not sending
Messages are being put in Sent folder and Send/Receive shows no errors but emails are not actually getting sent. This is a new install of Outlook on a new computer. Have I messed up the setup? "Theatre Girl" wrote in message > Messages are being put in Sent folder and Send/Receive shows no > errors but > emails are not actually getting sent. This is a new install of > Outlook on a > new computer. Have I messed up the setup? IMAP is not a sending protocol. It is used for receiving mails (out of your ...

Line charts using temperature and time factors
I want to create a line chart showing comparisons of heating and time. For example one item is held @ 30deg for 10secs then 100degs for 30secs while the comparison is plotted to show the difference. Help appreciated. try x-y scatter chart data-columnwise. Excelon_Ls <> wrote in message > I want to create a line chart showing comparisons of heating and time. For > example one item is held @ 30deg for 10secs then 100degs for 30secs while the > comparison is plotted to show the diff...

HOW TO USE HYPERLINK within a droplist?
I have a question aabout this: eg. I set row A with validation list "yes/no", i want that if choose "yes", then open a word document named "checklist.doc". Instead of using a validation list, you could use a "yes" button and a "no" button. The yes button can be linked to a macro to open the word document. The no button can be linked to a macro the will type the text "Go to next step" or something like that. "Bonny" wrote: > I have a question aabout this: > eg. > I set row A with validation list "yes...

using forms
Vista Home Premium 32 / Outlook 2007 I have created some forms that used to work. No more. On selecting a form, I get "The form required to view this message cannot be displayed. Contact the administrator. To my knowledge, I am the administrator. This is a stand-alone PC in my residence. If I go to Manage User Accounts, it shows only 2 accounts - LastName Administrator and Guest. I have googled my problem and found references to FRMCACHE.DAT which I am told to delete and restart Outlook. Did that. Opened Outlook and tried to open a form. Same error. And FRMCACHE.DAT was not ...

Using Spanish on Publisher
I have copied and pasted a document in Spanish from Word to Publisher. Prompts keep coming up telling me that it cannot "hyphenate" this document. I'm guessing that it means since it's in another language it needs something to be able to spell-check, etc. I really don't care about checking the spelling, but the pop-ups keep interferring with my arranging the flyer I desperately need to get completed. It tells me to put in the disk and download the "hyphenate" feature. Can I download this from the net since I have no disks. Publisher came with my n...

Taking Certian Data only from 2 Spreadsheets
Hi All, I have 39 Excel Spreadsheets & there are only certain figures i woul like in each spreadsheet & they are all in the same Coloumn & row. would like these figures to go into another spreadsheet i have create how can i do this?? Is it possible? Can i transfer them over into a ne spreadsheet so within this new sheet i then can caculate them all. Woul appreciate all the help. Cheers Wil -- william444 ----------------------------------------------------------------------- william4444's Profile: View this...

I used Omsgclas.exe Utility and my contacts don't use then new form
I created a new form for contacts. I followed the three steps in the document How to Update Existing Items to Use a New Custom Form. I can click on Action and do new contact and the new form is used. I used Omsgclas.exe utility to change the message class of the contacts. It shows as changed. However, when I click on an old contact (previous to changing the form), A message form comes up (not the old contact form and not my new contact form). Anyone have any help how to get my new form pulled up for old messages? Note: I had a form with a ' in the name, I made a new form w...

topographical data maps in excel
I have seen this done, and would like to know how to create topgraphical maps of data sets using excel. I want to take a sample of data ponts and plot the points (easy), than color the plot based upon the values of the points You seem to have been neglected by our community. Yes, it can be done, if I understand your intention correctly. The topography in your approach means, in a sense, the 3D chart. The first two of the three values defininig each point specify the x- and y-coordinates (like on a map); the third value is represented by prescribed colors or shades. You must have you...

FormulaR1C1 using variables
I want to do this but can't: ActiveCell.FormulaR1C1 = "=MyFunction(R[variable]C[variable])" What are my options? Try something like ActiveCell.FormulaR1C1 = _ "=MyFunction(R" & CStr(variable) & "C" & CStr(variable) & ")" Cordially, Chip Pearson Microsoft Most Valuable Professional, Excel, 1998 - 2010 Pearson Software Consulting, LLC On Wed, 21 Apr 2010 13:52:01 -0700, Cheah <> wrote: >I want to do this but can't: > >ActiveCell.Fo...

Using lookup formula using more than one cell
I have a spreadsheet which lists clients by first name, last name, postcode and phone number - all in separate columns e.g. Andy Roberts M56 7HN 0161 428 3856 I have these all in one worksheets and in a named range called "Clients" On a separate worksheet (within the same workbook) I log all my enquiries. What I want to be able to do is type in to a cell the first name then in the next cell the last name and the following cells get populated with postcode and phone number based on BOTH of the first two cells by looking up the "Clients" range. I can get it...

Using XML with ASP.NET
I want to know where can I find Tutorials/Articles to learn implementing XML with I am working on ASP.NET using C# from last one month. I have idea about XML but had not implemented yet with ASP.NET. Thanks in advance. Thanks Vinod Jajoo ...

Compile error using CTypedPtrList
Hi, I am having problems at compile time using the following line: CTypedPtrList<CPtrList, CString*> m_ClientList ; When compiled I get the following errors: emailcfgdlg.h(114) : error C2143: syntax error : missing ';' before '<' emailcfgdlg.h(114) : error C2501: 'CTypedPtrList' : missing storage-class or type specifiers emailcfgdlg.h(114) : error C2059: syntax error : '<' emailcfgdlg.h(114) : error C2238: unexpected token(s) preceding ';' I am using the version 6 of the compiler with SP5. Now I think this is something to do with the c...

Importing Excel data into Access?
Can Excel data be imported into Access easily!? I know from Word table I can simply copy and paste but it is not that easy when doing from Excel to Access! I downloaded this manual from but couldn't find this topic If anyone knows please let me know! Cheers Raj Hello, there are plenty of sources. e.g.: Stefan. "Rajeev Rawat" wrote: > Can Excel data be imported into Access easily!? I know from Word table &g...

Using secured OMA
Hi, Please help me with my misunderstanding. When I try ro connect by t68i or z600 (WAP 2.0) to OMA directly with SSL required, using, of course, I get 403 error. When I use I get "Couldn't reach the indicated web server." altough it works fine with Pocket PC. What's wrong? What should I configure to establish secured connection from mobile phone? Best regards, Vit Knyshevich. "Vit Knyshevich" <> wrote: >Please help me with my misunderstanding. When I try ro connect by t68i or >z60...

scatter plots using pivot table data
In older versions of Excel, you could directly create xy scatter plots using pivot table data. In Excel 2000, the chart wizard says you can't use an xy scatter plot with pivot table data. Why????? Is there any way around this limitation? Dan - Don't tell the pivot table you're making a regular chart. Select a cell away from the PT and start the chart wizard. Select the XY Scatter type you want in step 1. In step 2, use the Series tab to select the ranges for the names, X values, and Y values of each series in your chart. Make sure you don't select one of the PT but...

Using resources, how to ?
Hi guys, I am using MS Visual Studio 2005 Express ( yes, the one that u can download for free from MS website ) and I have a "little-big" problem with my program. First of all let me say that I created a simple console program, with his main and few functions, and I wish that my ..exe file can drop another .exe when launched. The other exe is another compiled program, and I wish to handle it from my main program as resource. There are some topics about handling resources, but I cannot find anything of good; I know how to use LoadResource, FindResource, etc, but both fail since I am...

Refresh data in Protected worksheet
Does the work sheet protection work properly when refreshing data from access. I have the range I want to refresh Unlocked and unhidden and the rest of the worksheet protected, but when i refresh it tells me the worksheet is protected and I cant refresh. Is there something I'm missing or is this a shortcoming of worksheet protection? KT just hazarding two guesses. are you talking about a macro that does it? if so... are you providing a password to unprotect before you refresh the data? ActiveSheet.Unprotect "password" 'your refresh code would go after the above sta...

Allow temporarily use of right click
I have made a databse in which I have disabled the right-click option. However, I have a form which opens reports, and I want to temporarily allow (only for the opened report) the right click option so the user can save and print the report. I have also no clue how to create a custom menu with only a few of the normal right-click options I hope my question is clear. Thanks -- Message posted via "greeknl via" <u30909@uwe> wrote in message news:71abb764263d9@uwe... >I have made a databse in which I have disabled the right-c...

How to use interfaces
Hi ... How can you show in an UML diagram using visio that you have 1 class who uses the interface implementet by another ?? ex: C# public class MyClass : ImyInterface { //some code } //And then in another class you will do something like: private ImyInterface imi = new MyClass(); can you show this via UML shapes in Visio ?? thanks in advance ... -- ------------------------------- Med Venlig Hilsen Tonni Schm�cker ...

Using two pictures from clipart as my background
I can't seem to get more than one clipart as my background. When I try to add another one, it overrides the first one. I want two pictures, each on half the page, and faded. Thanks. On Jan 13, 7:31=A0pm, Michele <> wrote: > I can't seem to get more than one clipart as my background. When I try to= add > another one, it overrides the first one. I want two pictures, each on hal= f > the page, and faded. Thanks. You can place multiple pictures on your slide (or slide master), but each slide can only contain one as it's ...

Using stationary when Word is used as the editor
Hello, I am having a problem with stationary when using word as the email editor. What is required is for a logo to be placed as a backgroun image in the top right hand corner. this works fine in outlook using this code: <HTML> <HEAD> <STYLE> BODY { font-family: Arial; font-size: 10pt; color: 000000; background-position: right top; background-repeat: no-repeat; background-image: url(Pic.jpg); } </STYLE> </HEAD> <BODY> </BODY> </HTML> However when Word is used as the email editor the background image is no longer placed in the top righ...

What do you use Excel for?
Just a general query really. Anybody willing to tell me what they use Excel for? Does anybody use it on a daily basis as part of the personal life? I'm not really looking for the reasons why people use it at the workplace, but why do people use it at home? Do you use it to manage your budgets etc???? Do you use it as a diary? Thanks in advance Excel is excellent for manipulating data. The uses are as wide as the imagination. There are people who use it to track the standings in a bowling league, others for managing a local golf tournament. One can build a loan calculator, kee...

using extended desktop mode
How can I move an Excel spreadsheet onto my second monitor. Word and Internet provide no problems, I just click & drag. Same way. You have to have the application window in a non-maximised state though, and you can then drag it from one to the other, or even size it so it spreads across the two screens completely. If I have the window maximised though, I am unable to drag it from screen to screen. -- Regards Ken....................... Microsoft MVP - Excel Sys Spec - Win XP Pro / XL 97/00/02/03 ------------------------------�-------------------------...

How do I used the outlook?
I don't know my microsoft exchange sever so I can't put in the right user name. What should I do? Version of Outlook? Close outlook. Go to control panel, mail and delete the current profile and make a new profile - Choose the correct account type - for most people its POP3, but could be IMAP. If you need more assistance with this we need to know the version of Outlook and who your email provider is. -- Diane Poremsky [MVP - Outlook] Outlook Tips: Outlook & Exchange Solutions Center: Outlook Tips by email: mailto:daily...

excel 2002 data filter
hello this is the case if i have in column A data like this: ok. When i press select complete column A and then select DATA - FILTER - ADVANCE FILTER - UNIQUE RECORDS ONLY i get folowing result: this is not what i want. I want to get folowing result: u see what i meen? Can u help please and thank you very much!!! On Feb 14, 2:10=A0am, Ivanko <> wrote: > hello > this is the case > > if i have in column A data lik...