Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 270
  • Last Modified:

WPF project and COM objects

Hi Experts,

I have a WPF application that talks to a CLR class library that calls into C++.  The reverse is proving more difficult.  I've seen the method where you can pass a delegate as function pointer, but I find that too intrusive and need to change my C++ implementation to support it.

So I think my current best option might be to turn a class in my WPF application into a COM server.  I have done so, but since this is a WPF application, there is no dll output.  Clearly I could create another intermediate class library just for this COM object, and then use this class library from my WPF application.  But is there a way to use the exe instead of a dll to register in WIndows?

Also, if I do use an intermediate class library, how do I get this COM object to talk to the rest of the WPF application?  I can't instantiate it in my WPF program and have it CoCreated by the C++ native code that will be creating it as well....  

Thanks,
Mike
0
thready
Asked:
thready
  • 3
  • 3
3 Solutions
 
jkrCommented:
>> The reverse is proving more difficult.

Have you considered just passing windows messages to the WPF app by the C++ layer? Not sure if that is applicable, but you can pass a lot of stuff via the message parameters.
0
 
threadyAuthor Commented:
I did not think of that.  That's a much simpler idea!  I can keep this out of the cross platform c++ and inside of the class library as well...

I'm still curious about how one is supposed to CoCreate a class and have the class implementation talk to WPF...   It's created by the C++ side, so then it's in-process.  Does this mean that callbacks from the COM class will need to be static?  (I wonder if I'm not making sense here)....
0
 
jkrCommented:
You could still pass a C# delgate sink to the class in question upon construction or via an 'InitializeContext()' method after creating it - yet it is still a bit  to vague to say 'just do it'.
0
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
threadyAuthor Commented:
I don't really understand that method.  It makes sense to me, but how to do it with a .lib...  I don't know...  I'm starting to lose interest in trying to keep all business logic in c++ so that it's reusable everywhere.  Too time consuming- and what does it give me?  Not that much in the end.  I just wish my code base would never have to be touched again... But it seems I keep writing the same kinds of things for new projects.

If I do everything in C#, I'll be much better off.  Just no cross-platform stuff.  Please talk me out of dropping this if you think it's all worth it?  :-)
0
 
jkrCommented:
If you can do most of the stuff in C#, even the better - yet since you are still vague about your setup, it is hard to give any advice. If e,g, your underlying C++ lib&dll can take a target window handle that receives the messages I mentoined earlier, you could pass structs/classes via the 'lParam' parameter (either by custom messages or by utilizing WM_COPYDATA) that are close to give you the flexibility you might need.
0
 
threadyAuthor Commented:
I have/had a goal to write all my business logic in pure cross-platform c++, with the idea that c++ was the most common denominator between systems with the best chance for reuse.  However, I don't have much code, but wanted to write everything one last time.  I think I'm not getting that much out of this goal though.  And I do like C# best.  I think in the name of completing projects fast with less headaches, I'll stick to C# for now....   and hopefully not kick myself later on..
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

  • 3
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now