<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[MFC Anwendung nachträglich in COM Objekt wandeln]]></title><description><![CDATA[<p>Hallo,<br />
ich habe eine DirectShow Anwendung, die die MFCs benutzt. Diese möchte ich nachträglich in eine COM-Komponente verwandeln, damit ich sie in einem C#-Programm (geschrieben mit Visual Studio .NET) verwenden kann.<br />
Ein einfaches COM-Objekt habe ich mit Visual C++ 6.0 bereits erstellt und erfolgreich in der C# Anwendung eingebaut.</p>
<p>Kann mir jemand Tips geben wie ich am besten nachträglich aus meiner Anwendung ein COM-Objekt bastle?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/81216/mfc-anwendung-nachträglich-in-com-objekt-wandeln</link><generator>RSS for Node</generator><lastBuildDate>Tue, 14 Apr 2026 02:31:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/81216.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 29 Jul 2004 09:41:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to MFC Anwendung nachträglich in COM Objekt wandeln on Thu, 29 Jul 2004 09:41:49 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe eine DirectShow Anwendung, die die MFCs benutzt. Diese möchte ich nachträglich in eine COM-Komponente verwandeln, damit ich sie in einem C#-Programm (geschrieben mit Visual Studio .NET) verwenden kann.<br />
Ein einfaches COM-Objekt habe ich mit Visual C++ 6.0 bereits erstellt und erfolgreich in der C# Anwendung eingebaut.</p>
<p>Kann mir jemand Tips geben wie ich am besten nachträglich aus meiner Anwendung ein COM-Objekt bastle?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/570786</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/570786</guid><dc:creator><![CDATA[Manuel Lukas]]></dc:creator><pubDate>Thu, 29 Jul 2004 09:41:49 GMT</pubDate></item><item><title><![CDATA[Reply to MFC Anwendung nachträglich in COM Objekt wandeln on Thu, 29 Jul 2004 13:33:31 GMT]]></title><description><![CDATA[<p>Manuel Lukas schrieb:</p>
<blockquote>
<p>Kann mir jemand Tips geben wie ich am besten nachträglich aus meiner Anwendung ein COM-Objekt bastle?</p>
</blockquote>
<p>Dazu brauchst du nicht viel.<br />
Du hast deine Anwendung, die läuft, deine Business Logic muss ehe von der GUI/COM unabhängig sein.</p>
<p>Du fügst einfach über ATL-Wizard ein/mehrere COM Interfaces deiner Anwendung hinzu, dann kann deine App auch als COM Server agieren. Je nach dem über was sie gestartet wurde. Drum musst du dich nicht kümmern.</p>
<p>Das Design sollte dann ung. so aussehen:<br />
[ GUI Klassen] | [ BL und COM &quot;nicht verschmutzte&quot; Klassen] | [ Klassen die Interfaces implementieren ] | [ COM Interfaces ]. Einfach alles trennen.</p>
<p>z.B.: Interface IFoobar, Klasse, die IFoobar implementiert: FoobarImpl, &quot;nicht verschmutzte&quot; COM Klasse: FoobarCore.<br />
IFoobar hat eine Methode Test([out, retval] BOOL* pSuccess)<br />
FoobarImpl implementiert sie: Ruft einfach die Methode m_FoobarCore.Test() auf.<br />
(FobarImpl hat ein private Objekt vom Typ FoobarCore: m_FoobarCore)<br />
In der Klasse Foobar wird die Methode bool Test() ohne COM ganz sauber implementiert.<br />
Und so weiter..</p>
<p>Ich arbeite immer nach dizem Prinzip, funktioniert recht gut <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title="=)"
      alt="🙂"
    /></p>
<p>Und Mehr brauchst du echt nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title="=)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/571001</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/571001</guid><dc:creator><![CDATA[lazydot]]></dc:creator><pubDate>Thu, 29 Jul 2004 13:33:31 GMT</pubDate></item><item><title><![CDATA[Reply to MFC Anwendung nachträglich in COM Objekt wandeln on Mon, 02 Aug 2004 07:37:42 GMT]]></title><description><![CDATA[<p>HAllo,<br />
danke für die Tips. Wenn ich allergings versuche meinem Projekt ein ATL-Objekt hinzuzufügen erscheint direkt die Fehlermeldung: &quot;Momentan können ATL-Objekte nur zu ATL-Projekten oder zu bestimmten MFC-Projekten (EXE, Steuerelement, Standard-DLL) hinzugefügt werden.&quot; Ich kann also aus irgendeinem Grund keine COM-Interfaces einbinden. Warum muss ich erst rausfinden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/573088</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/573088</guid><dc:creator><![CDATA[Manuel Lukas]]></dc:creator><pubDate>Mon, 02 Aug 2004 07:37:42 GMT</pubDate></item><item><title><![CDATA[Reply to MFC Anwendung nachträglich in COM Objekt wandeln on Mon, 02 Aug 2004 10:08:35 GMT]]></title><description><![CDATA[<p>Manuel Lukas schrieb:</p>
<blockquote>
<p>&quot;Momentan können ATL-Objekte nur zu ATL-Projekten oder zu bestimmten MFC-Projekten (EXE, Steuerelement, Standard-DLL) hinzugefügt werden.&quot;</p>
</blockquote>
<p>Womit und als was hast du denn deine DirectShow App erstellt? Und was hast du da alles eingebunden/rausgelassen?</p>
<p>Hast du das mit msvc 6.0 gemacht, genauso, wie dein Com Interface, was funktioniert hat?<br />
Die einzigen Voraussetzungen, soweit ich es weiß sind: exe oder dll und Automatisierung unterstützen. Ob du MFC einbindest oder nicht ist egal.<br />
ATL wird dann später beim ersten Interface eingebunden. Ist eher besser als MFC.<br />
Genauso egal ist es, ob du deine App von Anfang an als ATL App erstellt hast oder als SDI/MDI/Dialog/Konsole.</p>
<p>Sag mal die genauere Konfiguration deines Projekts. Dann sehen wir weiter..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/573198</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/573198</guid><dc:creator><![CDATA[lazydot]]></dc:creator><pubDate>Mon, 02 Aug 2004 10:08:35 GMT</pubDate></item><item><title><![CDATA[Reply to MFC Anwendung nachträglich in COM Objekt wandeln on Mon, 02 Aug 2004 10:26:25 GMT]]></title><description><![CDATA[<p>Also das Projekt ist auch mit MSVC++6.0 erstellt worden. Nun ja, das Problem ist, dass ich ein Beispielprojekt, dass ich nicht selbst angelegt habe erweitern musste. Deshalb kann ich dir nicht genau sagen, wie das Projekt angelegt ist. Müsste aber eine MFC-Anwendung sein, da eine GUI vorhanden ist und in der Datei stdafx folgendes steht:</p>
<p>// stdafx.h : include file for standard system include files,<br />
// or project specific include files that are used frequently, but<br />
// are changed infrequently<br />
//</p>
<p>#if !defined(AFX_STDAFX_H__2F03E48C_E8CD_4085_84B0_774B60153E94__INCLUDED_)<br />
#define AFX_STDAFX_H__2F03E48C_E8CD_4085_84B0_774B60153E94__INCLUDED_</p>
<p>#if _MSC_VER &gt; 1000<br />
#pragma once<br />
#endif // _MSC_VER &gt; 1000</p>
<p>#ifndef _WIN32_DCOM<br />
#define _WIN32_DCOM<br />
#endif // _WIN32_DCOM</p>
<p>#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers</p>
<p>#include &lt;afxwin.h&gt; // MFC core and standard components<br />
#include &lt;afxext.h&gt; // MFC extensions<br />
#include &lt;afxdtctl.h&gt; // MFC support for Internet Explorer 4 Common Controls<br />
#ifndef _AFX_NO_AFXCMN_SUPPORT<br />
#include &lt;afxcmn.h&gt; // MFC support for Windows Common Controls<br />
#endif // _AFX_NO_AFXCMN_SUPPORT</p>
<p>#include &lt;sdkBC.h&gt; //specific BaseClasses: DirectShow stuff</p>
<p>#include &lt;string&gt;<br />
#include &lt;vector&gt;</p>
<p>#include &lt;dvdmedia.h&gt;<br />
#include &lt;bdaiface.h&gt;<br />
...</p>
<p>Ich habe in den msdn Bibliotheken nachgeschaut, dass man ein Projekt ATL-tauglich machen kann. Allerdings funktioniert das (ohne weiteres) nur mit <a href="http://VS.Net" rel="nofollow">VS.Net</a>. Einige Dateien werden dabei erweitert und anschließend kann man ATL-Objekte hinzufügen. Bei Vs 6.0 gibts diese Funktion nicht. Oder doch?<br />
Grüße amartinez <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/573225</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/573225</guid><dc:creator><![CDATA[a_martinez]]></dc:creator><pubDate>Mon, 02 Aug 2004 10:26:25 GMT</pubDate></item><item><title><![CDATA[Reply to MFC Anwendung nachträglich in COM Objekt wandeln on Mon, 02 Aug 2004 11:17:34 GMT]]></title><description><![CDATA[<p>--------------------------------------------------------------------------------<br />
Also das Projekt ist auch mit MSVC++6.0 erstellt worden. Nun ja, das Problem ist, dass ich ein Beispielprojekt, dass ich nicht selbst angelegt habe erweitern musste. Deshalb kann ich dir nicht genau sagen, wie das Projekt angelegt ist. Müsste aber eine MFC-Anwendung sein, da eine GUI vorhanden ist und in der Datei stdafx folgendes steht:</p>
<p>// stdafx.h : include file for standard system include files,<br />
// or project specific include files that are used frequently, but<br />
// are changed infrequently<br />
//</p>
<p>#if !defined(AFX_STDAFX_H__2F03E48C_E8CD_4085_84B0_774B60153E94__INCLUDED_)<br />
#define AFX_STDAFX_H__2F03E48C_E8CD_4085_84B0_774B60153E94__INCLUDED_</p>
<p>#if _MSC_VER &gt; 1000<br />
#pragma once<br />
#endif // _MSC_VER &gt; 1000</p>
<p>#ifndef _WIN32_DCOM<br />
#define _WIN32_DCOM<br />
#endif // _WIN32_DCOM</p>
<p>#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers</p>
<p>#include &lt;afxwin.h&gt; // MFC core and standard components<br />
#include &lt;afxext.h&gt; // MFC extensions<br />
#include &lt;afxdtctl.h&gt; // MFC support for Internet Explorer 4 Common Controls<br />
#ifndef _AFX_NO_AFXCMN_SUPPORT<br />
#include &lt;afxcmn.h&gt; // MFC support for Windows Common Controls<br />
#endif // _AFX_NO_AFXCMN_SUPPORT</p>
<p>#include &lt;sdkBC.h&gt; //specific BaseClasses: DirectShow stuff</p>
<p>#include &lt;string&gt;<br />
#include &lt;vector&gt;</p>
<p>#include &lt;dvdmedia.h&gt;<br />
#include &lt;bdaiface.h&gt;<br />
...</p>
<p>Ich habe in den msdn Bibliotheken nachgeschaut, dass man ein Projekt ATL-tauglich machen kann. Allerdings funktioniert das (ohne weiteres) nur mit <a href="http://VS.Net" rel="nofollow">VS.Net</a>. Einige Dateien werden dabei erweitert und anschließend kann man ATL-Objekte hinzufügen. Bei Vs 6.0 gibts diese Funktion nicht. Oder doch?<br />
Grüße amartinez</p>
]]></description><link>https://www.c-plusplus.net/forum/post/573268</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/573268</guid><dc:creator><![CDATA[Manuel Lukas]]></dc:creator><pubDate>Mon, 02 Aug 2004 11:17:34 GMT</pubDate></item><item><title><![CDATA[Reply to MFC Anwendung nachträglich in COM Objekt wandeln on Mon, 02 Aug 2004 11:22:40 GMT]]></title><description><![CDATA[<p>Das eine GUI vorhanden ist, heißt noch lange nicht, dass das eine MFC App ist.<br />
Es kann eine Win App ohne MFC sein, eine C++ Win App mit Qt, etc.</p>
<p>So sieht die STDAFX.H in einem Standard SDI Projekt aus:</p>
<pre><code class="language-cpp">//..
#define VC_EXTRALEAN		// Selten verwendete Teile der Windows-Header nicht einbinden

#include &lt;afxwin.h&gt;         // MFC-Kern- und -Standardkomponenten
#include &lt;afxext.h&gt;         // MFC-Erweiterungen
#include &lt;afxdisp.h&gt;        // MFC Automatisierungsklassen
#include &lt;afxdtctl.h&gt;		// MFC-Unterstützung für allgemeine Steuerelemente von Internet Explorer 4
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include &lt;afxcmn.h&gt;			// MFC-Unterstützung für gängige Windows-Steuerelemente
#endif // _AFX_NO_AFXCMN_SUPPORT
//..
</code></pre>
<p>Das sind Standard Sachen, die für eine ATL/COM Fähige App benötigt werden.<br />
Projekt Name: &quot;Foo&quot;. Mit MFC, als SDI (Single Document Interface), mit ExplorerAnsicht, mit Active-X und Automatisierung Unterstützung.<br />
Im KlassenBrowser ist ein IFoo Interface (dispinterface) zu sehen (Foo.odl Datei)<br />
Jetzt habe ich ein ATl-Objekt hinzugefügt (Interface Name: Foobar), ATL-Unterstüzung wurde aut. meinem Projekt hinzugefügt (ich wurde nachgefragt) und meine SDTAFX.H hat sich geändert:</p>
<pre><code class="language-cpp">// ....
// dazu gekommen:
	#define _ATL_APARTMENT_THREADED
#include &lt;atlbase.h&gt;
//Sie können eine Klasse von CComModule ableiten und dies verwenden, wenn Sie
//etwas überladen wollen. Ändern Sie aber nicht den Namen von _Module
class CFooModule : public CComModule
{
public:
	LONG Unlock();
	LONG Lock();
	DWORD dwThreadID;
};
extern CFooModule _Module;
#include &lt;atlcom.h&gt;
//..
</code></pre>
<p>Du hast 2 Möglichkeiten:<br />
1. Eine neue App erstellen:<br />
- Projekteinstellungen vergleichen/anpassen (HotKey: &lt;ALT&gt;+&lt;F7&gt;).<br />
- Alle benötigte Dateien/Klassen/Lib's des alten Projekts, Präprozessor Makros (--&gt; Abhängigkeiten) deinem Neuem Projekt hinzufügen.<br />
2. Suchen, wie man nachträglich ATL/COM Unterstützung deinem Projekt hinzufügen kann.</p>
<p>Das erste wäre einfacher und sicherer, da AppWizzard sehr wahrscheinlich die Abhängigkeiten/Konfiguration besser wissen wird als du oder ich.</p>
<p>Viel Spaß!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/573275</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/573275</guid><dc:creator><![CDATA[lazydot]]></dc:creator><pubDate>Mon, 02 Aug 2004 11:22:40 GMT</pubDate></item><item><title><![CDATA[Reply to MFC Anwendung nachträglich in COM Objekt wandeln on Tue, 17 Aug 2004 11:56:06 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe das gleiche Problem, dass beim Einbinden des ATL-Objektes eine Fehlermeldeung erscheint (siehe oben)... jedoch weiss ich nicht, warum...ich habe eine Konsolenanwendung,also konnte ich auch nicht den Register für Automatisierung aktivieren. Die Anwendung selsbt ist eigentlich eine .EXE-Anwendung, nur haut es nicht hin, mit dem einbinden... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>gruss,</p>
<p>chullain</p>
]]></description><link>https://www.c-plusplus.net/forum/post/584553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/584553</guid><dc:creator><![CDATA[chullain]]></dc:creator><pubDate>Tue, 17 Aug 2004 11:56:06 GMT</pubDate></item></channel></rss>