Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

Loading MFC Dll in C# Form

Posted on 2006-06-28
13
Medium Priority
?
1,405 Views
Last Modified: 2013-11-20
Suppose there is an MFC dll which creates some CWnd.

Some Functions are exported in MFC dll.

I need to display this CWnd on C# Form as otherchild controls of Form.

How Should I do to implement it?

Thanks in advance.
0
Comment
Question by:jitendra_wadhwani
[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
  • 7
  • 6
13 Comments
 
LVL 22

Expert Comment

by:mahesh1402
ID: 17000831
// Sample program to call unmanaged code

using System;
using System.Runtime.InteropServices;

class PInvoke1App
{
    [DllImport("user32.dll")]
    static extern int MessageBoxA(int hWnd, string strMsg,string strCaption,int iType);

    public static void Main()
    {
        MessageBoxA(0,   "Hello, World!", "This is called from a C# app!",  0);
    }
}

above calls MessageBoxA function from user32.dll



following may be of your use refer:
'Call Unmanaged DLLs from C#, ' :http://msdn.microsoft.com/msdnmag/issues/02/08/CQA/
'Using Unmanage Code in C# ' http://www.codeguru.com/Csharp/Csharp/cs_syntax/unmanagedcode/article.php/c5887/

-MAHESH
0
 
LVL 3

Author Comment

by:jitendra_wadhwani
ID: 17001308
Hi mahesh...

Thanks for the quick response

I have implemented this method....

I have more than 500 dlls in my project and I dont want to import each and every dll althought all the dlls have same exported functions for creating and destroying.

Suppose I have created One CWnd and I want to set its parent as C# form.

I need to pass the parent to MFC dll and want to use in MFC dll....

I am anyhow able to pass the handle of C# form as long but getting CWnd* from that long created some problem in MFC.


I need one function in which I will pass DLL Name and parameters. Want to load that particular DLL and also there should be any unloading process.

Dll name will be decided on runtime.

Hope you understood my requirement.




0
 
LVL 3

Author Comment

by:jitendra_wadhwani
ID: 17001350
Will see the specified urls also...
0
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 
LVL 22

Expert Comment

by:mahesh1402
ID: 17002160
>>Dll name will be decided on runtime.

you can also create a DLL which can forward function calls to any location and load any DLL further into your address space... using LoadLibrary() function..

Have a look following codeproject article :
Late binding on native DLLs with C#
http://www.codeproject.com/csharp/dyninvok.asp

-MAHESH
0
 
LVL 22

Expert Comment

by:mahesh1402
ID: 17002187
rather look into this for quick solution :

Dynamic Invoke from Unmanaged DLL
http://www.codeproject.com/csharp/dynamicinvokedll.asp <== this may be of your use

-MAHESH
0
 
LVL 3

Author Comment

by:jitendra_wadhwani
ID: 17007108
>>http://www.codeproject.com/csharp/dyninvok.asp
Already seen.......

>>http://www.codeproject.com/csharp/dynamicinvokedll.asp 
Tried similar to this one not exactly same......

Will try and confirm....
0
 
LVL 22

Accepted Solution

by:
mahesh1402 earned 2000 total points
ID: 17007267
You may take consider using LoadLibrary() and GetProcAddress()

Also You can create dynamic PInvoke methods with Reflection Emit. See
http://www.msjogren.net/dotnet/eng/samples/dotnet_dynpinvoke.asp 

-MAHESH
0
 
LVL 3

Author Comment

by:jitendra_wadhwani
ID: 17007277


http://www.msjogren.net/dotnet/eng/samples/dotnet_dynpinvoke.asp 

404

The requested document was not found on this server.


--------------------------------------------------------------------------------

Web Server at msjogren.net
0
 
LVL 22

Expert Comment

by:mahesh1402
ID: 17007292
check this link if u able to download this
http://www.msjogren.net/dotnet/download.asp?dynpinvoke.zip
0
 
LVL 3

Author Comment

by:jitendra_wadhwani
ID: 17007315
yes downloaded....
wil check it..
0
 
LVL 22

Expert Comment

by:mahesh1402
ID: 17007368
again click on link it will open its opening at my end
0
 
LVL 3

Author Comment

by:jitendra_wadhwani
ID: 17007432
Not opening....

Downloaded the zip.....


I treid to open
http://www.msjogren.net/dotnet/

Showing

The site is temporarily down, sorry. Please check back in a couple of weeks.


Anyway....trying to understad the code given in zip file and will implement...
0
 
LVL 3

Author Comment

by:jitendra_wadhwani
ID: 17008746
Hi Mahesh,
Thanks for the help.....

Although The provided Help has not solved my issue but I have achieved the Displaying part now other part is remainning....

My 500 Dlls were developed in 3000 man days.....

Your provide help has enriched my knowledge. You are the only person who responded for this question...Giving Grade A

Thanks

Jitendra
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

Question has a verified solution.

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

In this article, I'll describe -- and show pictures of -- some of the significant additions that have been made available to programmers in the MFC Feature Pack for Visual C++ 2008.  These same feature are in the MFC libraries that come with Visual …
Introduction: Dynamic window placements and drawing on a form, simple usage of windows registry as a storage place for information. Continuing from the first article about sudoku.  There we have designed the application and put a lot of user int…
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.
Want to learn how to record your desktop screen without having to use an outside camera. Click on this video and learn how to use the cool google extension called "Screencastify"! Step 1: Open a new google tab Step 2: Go to the left hand upper corn…
Suggested Courses

610 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