Solved

Accessing a C# COM control from C++

Posted on 2006-11-01
8
175 Views
Last Modified: 2012-05-05
Hi all,

I wrote a very simple user control in C#, and I'm trying to access it from my C++/MFC code. The control contains a single label in it. Here's the control code itself:

namespace HelloCom {

    [Guid("F0AE1BB2-A840-4341-B785-D8A54C81E643")]
    public interface HelloCom {
       
    }
   
    [Guid("111DCC11-900D-431c-B3A0-4B95C539A47D")]
    public partial class HelloComImpl : UserControl, HelloCom {
        public HelloComImpl() {
            InitializeComponent();
        }
    }
}


Here's what I've done so far:
* Signed my control with a strong key
* Clicked the "expose assembly to COM interop" and "make visible to COM" options
* regasm HelloCom.dll /tlb:HelloCom.tlb
* gacutil -i HelloCom.dll

However, despite all this, I still cannot see my control in the Toolbox on the C++ side, nor can I insert it via the "Insert ActiveX Control" menu option. What am I doing wrong ?
0
Comment
Question by:Sinclair
  • 4
  • 4
8 Comments
 
LVL 22

Expert Comment

by:mnasman
ID: 17856173
You can't create ActiveX controls with C#

what you did will work with Dlls, but I'm not sure if that will work for contorls with other languages than .Net
0
 
LVL 2

Author Comment

by:Sinclair
ID: 17856225
Ugh... I really need this to be an ActiveX control. Are you sure there's no way to do this easily ? If so, what would you recommend ? Wrap the DLL in a C-based ActiveX wrapper, maybe ?

0
 
LVL 22

Expert Comment

by:mnasman
ID: 17857392
honesntly, I haven't tried to do that before

but why you want to use C# to created managed component that will be access from unmanaged code?
0
 
LVL 22

Accepted Solution

by:
mnasman earned 125 total points
ID: 17857409
take a look at this article, and notice the first paragraph in red

.NET Interop: Get Ready for Microsoft .NET by Using Wrappers to Interact with COM-based Applications
http://msdn.microsoft.com/msdnmag/issues/01/08/Interop/
0
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 
LVL 2

Author Comment

by:Sinclair
ID: 17860748
mnasman:

I need a C# ActiveX control because our company is slowly switching to C#, but we have a massive (as in, prohibitively huge with respect to porting) legacy app written in C++/MFC that still needs to be extended from time to time with new features.

Thanks for that "red paragraph" article; I'll check it out right now and let you know how things turned out.
0
 
LVL 2

Author Comment

by:Sinclair
ID: 17883089
Yeah, so it looks like there really isn't a good solution to this, unfortunately. Thanks for your help, mnasman, even though it's bad news for me :-)
0
 
LVL 22

Expert Comment

by:mnasman
ID: 17887659
I'm sorry I didn't help much
0
 
LVL 2

Author Comment

by:Sinclair
ID: 17887700
I don't blame you, I blame Microsoft :-/
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

Article by: Ivo
C# And Nullable Types Since 2.0 C# has Nullable(T) Generic Structure. The idea behind is to allow value type objects to have null values just like reference types have. This concerns scenarios where not all data sources have values (like a databa…
This article describes a simple method to resize a control at runtime.  It includes ready-to-use source code and a complete sample demonstration application.  We'll also talk about C# Extension Methods. Introduction In one of my applications…
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…
This video gives you a great overview about bandwidth monitoring with SNMP and WMI with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're looking for how to monitor bandwidth using netflow or packet s…

746 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

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now