<?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[Grundlegende Fragen zu ActiveX, COM uvm.]]></title><description><![CDATA[<p>hallo,</p>
<p>weiß nicht ob ich in diesem Forum richtig bin, aber ich find es passt in kein andres so richtig rein...</p>
<p>Ich versuche ein ActiveX-Control für IE zu schreiben, das Bilder lädt und anzeigt (vorest von der Platte, später über Netzwerk, wie genau ist noch nicht spezifiziert). Das Problem, das ich dabei habe ist, dass ich zwar ausreichende Kenntnisse von C++ besitze, jedoch weder von ActiveX, noch von COM oder GDI den Hauch einer Ahnung habe.</p>
<p>Ich habe mir in den letzten Tagen einen groben Überblick aneignen können, jedoch ist es leider dabei geblieben -- MSDN ist für den Einstieg viel zu umfangreich, Bücher hab ich keine zur Verfügung, brauchbare online-Resourcen konnte ich nicht finden.</p>
<p>Ich habe ATL Tutorials von MSDN nachgebaut, wollte in diese jetzt eine prototypische Bildanzeige einbauen, hätte dafür GDI und GDI+ verwendet, bin aber zweimal gescheitert.</p>
<p>Meine Frage an euch: Könnt ihr mir einen Schubser in die richtige Richtung geben, damit ich mich nicht verzettle und nach 'ner Woche merke, dass ich einen komplett anders an die Aufgabe herangehen muss? Kann ich ein ActiveX-Control mithilfe von ATL bauen, das GDI verwendet (MFC möchte ich vermeiden)? oder brauche ich dafür GDI+? benötige ich für die Netzwerkkommunikation COM+? Ist es mit der in [1] verwendeten, Event-basierten Kommunikation möglich, die Bilder vom Server zum Client zu transportieren?</p>
<p>Danke schon mal für die Infos!</p>
<p>[1] <a href="http://msdn2.microsoft.com/en-us/library/h89x2xwb(VS.80).aspx" rel="nofollow">http://msdn2.microsoft.com/en-us/library/h89x2xwb(VS.80).aspx</a></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/206681/grundlegende-fragen-zu-activex-com-uvm</link><generator>RSS for Node</generator><lastBuildDate>Tue, 21 Apr 2026 17:08:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/206681.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 27 Feb 2008 15:18:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Grundlegende Fragen zu ActiveX, COM uvm. on Wed, 27 Feb 2008 15:20:44 GMT]]></title><description><![CDATA[<p>hallo,</p>
<p>weiß nicht ob ich in diesem Forum richtig bin, aber ich find es passt in kein andres so richtig rein...</p>
<p>Ich versuche ein ActiveX-Control für IE zu schreiben, das Bilder lädt und anzeigt (vorest von der Platte, später über Netzwerk, wie genau ist noch nicht spezifiziert). Das Problem, das ich dabei habe ist, dass ich zwar ausreichende Kenntnisse von C++ besitze, jedoch weder von ActiveX, noch von COM oder GDI den Hauch einer Ahnung habe.</p>
<p>Ich habe mir in den letzten Tagen einen groben Überblick aneignen können, jedoch ist es leider dabei geblieben -- MSDN ist für den Einstieg viel zu umfangreich, Bücher hab ich keine zur Verfügung, brauchbare online-Resourcen konnte ich nicht finden.</p>
<p>Ich habe ATL Tutorials von MSDN nachgebaut, wollte in diese jetzt eine prototypische Bildanzeige einbauen, hätte dafür GDI und GDI+ verwendet, bin aber zweimal gescheitert.</p>
<p>Meine Frage an euch: Könnt ihr mir einen Schubser in die richtige Richtung geben, damit ich mich nicht verzettle und nach 'ner Woche merke, dass ich einen komplett anders an die Aufgabe herangehen muss? Kann ich ein ActiveX-Control mithilfe von ATL bauen, das GDI verwendet (MFC möchte ich vermeiden)? oder brauche ich dafür GDI+? benötige ich für die Netzwerkkommunikation COM+? Ist es mit der in [1] verwendeten, Event-basierten Kommunikation möglich, die Bilder vom Server zum Client zu transportieren?</p>
<p>Danke schon mal für die Infos!</p>
<p>[1] <a href="http://msdn2.microsoft.com/en-us/library/h89x2xwb(VS.80).aspx" rel="nofollow">http://msdn2.microsoft.com/en-us/library/h89x2xwb(VS.80).aspx</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1464100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1464100</guid><dc:creator><![CDATA[iko79]]></dc:creator><pubDate>Wed, 27 Feb 2008 15:20:44 GMT</pubDate></item><item><title><![CDATA[Reply to Grundlegende Fragen zu ActiveX, COM uvm. on Wed, 27 Feb 2008 15:42:31 GMT]]></title><description><![CDATA[<p>iko79 schrieb:</p>
<blockquote>
<p>Meine Frage an euch: Könnt ihr mir einen Schubser in die richtige Richtung geben, damit ich mich nicht verzettle und nach 'ner Woche merke, dass ich einen komplett anders an die Aufgabe herangehen muss? Kann ich ein ActiveX-Control mithilfe von ATL bauen, das GDI verwendet (MFC möchte ich vermeiden)? oder brauche ich dafür GDI+?</p>
</blockquote>
<p>die GDI kannst du eigentlich grundsätzlich immer verwenden, wenn du einen DeviceContext hast, und den solltest du eigentlich auch immer kriegen kriegen können, wenn du ein handle zu nem Fenster hast.<br />
über die Unterschiede zwischen GDI und GDI+ findest du bei google viel. Ich denke für dein Projekt ist die GDI+ wohl angebrachter, vorallem wenn es darum geht, die &quot;internettauglichen&quot; Formate wie PNG, JPEG und GIF zu unterstützen, das erspart dir eine menge arbeit im gegensatz zur verwendung von GDI.</p>
<p>letztendlich ist (fast) alles gezeichnete unter windows (hardware-beschleunigstes mal außen vor jetzt), z.B. die darstellung dieser seite, alles weitere, unter verwendung der gdi gerendert.<br />
aber einarbeiten in ATL, COM und GDI+? da hast du ja viel vor :&gt;</p>
<p>darf man fragen, wo du spezielle GDI-(Zeichen-)Probleme hast?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1464133</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1464133</guid><dc:creator><![CDATA[hey]]></dc:creator><pubDate>Wed, 27 Feb 2008 15:42:31 GMT</pubDate></item><item><title><![CDATA[Reply to Grundlegende Fragen zu ActiveX, COM uvm. on Wed, 27 Feb 2008 16:37:46 GMT]]></title><description><![CDATA[<p>hey schrieb:</p>
<blockquote>
<p>aber einarbeiten in ATL, COM und GDI+? da hast du ja viel vor :&gt;</p>
</blockquote>
<p>Allerdings ^^</p>
<p>hey schrieb:</p>
<blockquote>
<p>über die Unterschiede zwischen GDI und GDI+ findest du bei google viel.</p>
</blockquote>
<p>Ja, man könnte sagen schon ZU viel <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title="=D"
      alt="😃"
    /> beispielsweise bin ich auf widersprüchliche Informationen zur Geschwindigkeit gestoßen: Ich hab gelesen, dass GDI hardwarebeschleunigt ist, GDI+ allerdings nicht. Anderswo wurde diese Aussage wieder entkräftet... Was is jetzt wirklich schneller?</p>
<p>hey schrieb:</p>
<blockquote>
<p>Ich denke für dein Projekt ist die GDI+ wohl angebrachter, [...] PNG, JPEG und GIF</p>
</blockquote>
<p>Stimmt, darum is mir GDI+ prinzipiell a Spur sympathischer.</p>
<p>hey schrieb:</p>
<blockquote>
<p>letztendlich ist (fast) alles gezeichnete unter windows (hardware-beschleunigstes mal außen vor jetzt), z.B. die darstellung dieser seite, alles weitere, unter verwendung der gdi gerendert.</p>
</blockquote>
<p>Warum nicht mit GDI+?</p>
<p>hey schrieb:</p>
<blockquote>
<p>darf man fragen, wo du spezielle GDI-(Zeichen-)Probleme hast?</p>
</blockquote>
<p>Klar:</p>
<p>Der Wizard erstellt mir das ATL-Projekt mit der Compiler-Option /MDd, ich nehme an, aus gutem Grund. Verwende ich die GDI Klasse CBitmap und inkludiere dazu das File afxwin.h, meckert der Compiler:</p>
<blockquote>
<p>#error Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]</p>
</blockquote>
<p>Interessant ist dabei allerdings, dass die entsprechende Zeile in afx.h, nämlich</p>
<pre><code class="language-cpp">#ifdef _DLL
#ifndef _AFXDLL
#error Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]
#endif
#endif
</code></pre>
<p>ausgegraut ist, da ich 'ne DLL builde. Versuche ich anstelle von /MD[d] die Option /MT[d], bekomme ich den Fehler hier, aus afxv_win32.h:</p>
<pre><code class="language-cpp">#ifdef _WINDOWS_
	#error WINDOWS.H already included.  MFC apps must not #include &lt;windows.h&gt;
#endif
</code></pre>
<p>Ganz davon abgesehen weisen beide Fehler darauf hin, dass ich dabei bin, MFC zu verwenden, wo doch in der MSDN zu lesen ist, dass durch ATL die Verwendung von MFC vermieden werden sollte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1464166</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1464166</guid><dc:creator><![CDATA[iko79]]></dc:creator><pubDate>Wed, 27 Feb 2008 16:37:46 GMT</pubDate></item><item><title><![CDATA[Reply to Grundlegende Fragen zu ActiveX, COM uvm. on Wed, 27 Feb 2008 18:20:56 GMT]]></title><description><![CDATA[<p>iko79 schrieb:</p>
<blockquote>
<p>Was is jetzt wirklich schneller?<br />
Um die Geschwindigkeit musst du dich erstmal kümmern. Aber es ist falsch, dass GDI hardwarebeschleunigt sein soll. Es ist genau anders herum, sie dient dazu, hardware zu wrappen, um immer das gleiche interface bereitstellen zu können.</p>
</blockquote>
<p>iko79 schrieb:</p>
<blockquote>
<p>hey schrieb:</p>
<blockquote>
<p>Ich denke für dein Projekt ist die GDI+ wohl angebrachter, [...] PNG, JPEG und GIF</p>
</blockquote>
<p>Stimmt, darum is mir GDI+ prinzipiell a Spur sympathischer.</p>
</blockquote>
<p>guut, da du das ganze sowieso in C++ bewerkstelligen willst, lohnt sich der Blick auf die GDI+ eher, denn die GDI ist eine sammlung von C-Funktionen, Strukturen und Zeigern auf void (STRICT möge mich verschonen) x))</p>
<blockquote>
<p>warum nicht mit GDI+</p>
</blockquote>
<p>naja theoretisch könnte man diese auch als weiteren &quot;ersatz&quot; sehen, evt. sogar gewrappt; also ich glaube kaum, dass sich der code eines LineTo() mit HPEN und dem GDI+ äquivalent ernsthaft unterscheided.<br />
die GDI+ ist prinzipiell nichts &quot;anderes&quot;, sie erwartet die möglichkeit der grafik-bearbeitung sowie -ausgabe.</p>
<p>---------------</p>
<blockquote>
<p>Der Wizard erstellt mir das ATL-Projekt mit der Compiler-Option /MDd, ich nehme an, aus gutem Grund. Verwende ich die GDI Klasse CBitmap und inkludiere dazu das File afxwin.h, meckert der Compiler:</p>
</blockquote>
<p>STOP! wenn du die &quot;GDI Klasse&quot; CBitmap, die es schonmal gar nicht gibt, denn wie oben erwähnt ist die GDI eine implementierung in C, verwendest, verwendest du doch bereits die MFC. außer du benutzt die klasse aus atlgdi.h, was aber wiederum zur WTL gehört (soweit ich weiß, achtung HALBWISSEN!)</p>
<p>zu deinen Fehlern kann ich dir nix sagen, außer, dass du auf den fehler hören könntest und &lt;windows.h&gt; aus den #includes nehmen könntest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1464267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1464267</guid><dc:creator><![CDATA[hey]]></dc:creator><pubDate>Wed, 27 Feb 2008 18:20:56 GMT</pubDate></item><item><title><![CDATA[Reply to Grundlegende Fragen zu ActiveX, COM uvm. on Wed, 27 Feb 2008 21:46:08 GMT]]></title><description><![CDATA[<p>Sowohl GDI als auch GDI+ sind hardwarebeschleunigt* soweit die Graka-Treiber das unterstützen. Generell scheint aber GDI noch einen kleinen Tacken schneller zu sein, GDI+ hat aber dafür Sachen wie Kantenglättung, wesentlich besseren Support für Alpha-Channel, kann direkt png, jpeg, gif laden...</p>
<p>/me votes for GDI+</p>
<p>*:</p>
<p>msdn schrieb:</p>
<blockquote>
<p>Windows-based applications do not access the graphics hardware directly. Instead, GDI interacts with device drivers on behalf of applications.</p>
</blockquote>
<p>...wie schnell das ganze ist hängt quasi vom Graka-Treiber und dessen Implementierung ab.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1464422</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1464422</guid><dc:creator><![CDATA[geeky]]></dc:creator><pubDate>Wed, 27 Feb 2008 21:46:08 GMT</pubDate></item><item><title><![CDATA[Reply to Grundlegende Fragen zu ActiveX, COM uvm. on Thu, 28 Feb 2008 10:54:02 GMT]]></title><description><![CDATA[<p>Herzlichen Dank für die Antworten, haben mich schon a Stück weiter gebracht. Bin grad dabei, mal an Prototypen für das Teil mit GDI+ zu entwickeln...</p>
<p>Was ich allerdings immer noch nicht ganz herausgefunden habe: Wofür brauche ich COM+? Und brauch' ich das für meinen Anwendungsfall überhaupt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1464619</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1464619</guid><dc:creator><![CDATA[iko79]]></dc:creator><pubDate>Thu, 28 Feb 2008 10:54:02 GMT</pubDate></item><item><title><![CDATA[Reply to Grundlegende Fragen zu ActiveX, COM uvm. on Thu, 28 Feb 2008 12:49:11 GMT]]></title><description><![CDATA[<p>ActiveX-Control==COM!</p>
<p>Wieso denkst Du ohne COM auskommen zu können wenn Du ein ActiveX Control erzeugen willst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1464701</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1464701</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 28 Feb 2008 12:49:11 GMT</pubDate></item><item><title><![CDATA[Reply to Grundlegende Fragen zu ActiveX, COM uvm. on Thu, 28 Feb 2008 13:27:36 GMT]]></title><description><![CDATA[<p>Mir ist sehr wohl bewusst, dass ActiveX auf COM basiert. Die Frage war nicht, ob ich COM, sondern ob ich COM+ verwenden muss.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1464732</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1464732</guid><dc:creator><![CDATA[iko79]]></dc:creator><pubDate>Thu, 28 Feb 2008 13:27:36 GMT</pubDate></item><item><title><![CDATA[Reply to Grundlegende Fragen zu ActiveX, COM uvm. on Thu, 28 Feb 2008 13:37:24 GMT]]></title><description><![CDATA[<p>COM+ ist eine Erweiterung zu COM! Mehr nicht.</p>
<p>Wenn Du also eines der folgenden Themen benötigst dann hast Du es mit COM+ zu tun:<br />
-Deklarative Transaktionen<br />
-Synchronisation<br />
-Just-in-Time-Aktivierung<br />
-Queued Components (Komponenten in der Warteschlange)<br />
-Objekt-Pooling<br />
-Rollenbasierte Sicherheit</p>
<p>Im Allgemeinen benötigt man all' dies nicht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1464744</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1464744</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 28 Feb 2008 13:37:24 GMT</pubDate></item><item><title><![CDATA[Reply to Grundlegende Fragen zu ActiveX, COM uvm. on Thu, 28 Feb 2008 14:15:16 GMT]]></title><description><![CDATA[<p>Martin Richter schrieb:</p>
<blockquote>
<p>COM+ ist eine Erweiterung zu COM! Mehr nicht.</p>
</blockquote>
<p>Ich weiß <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="🙂"
    /> allerdings scheint's so, als sollte man sich früh entscheiden, nachdem der Project-Wizzard schon wissen will ob man COM+ Unterstützung haben will. Nachträglich einbauen is für an Anfänger sicher wieder der Höllenaufwand, drum frag ich vorher, damit ich nicht irgendwann mal drauf komm dass ichs doch brauch. Keine Ahnung, was das alles ist, was du da aufzählst, aber ich glaub, ich lass es einfach mal weg... Danke trotzdem jedenfalls.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1464772</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1464772</guid><dc:creator><![CDATA[iko79]]></dc:creator><pubDate>Thu, 28 Feb 2008 14:15:16 GMT</pubDate></item><item><title><![CDATA[Reply to Grundlegende Fragen zu ActiveX, COM uvm. on Thu, 28 Feb 2008 15:41:32 GMT]]></title><description><![CDATA[<p>Nein es ist kein Höllenaufwand...</p>
<p>Ansonsten:<br />
<a href="http://msdn2.microsoft.com/de-de/library/bb979194.aspx" rel="nofollow">http://msdn2.microsoft.com/de-de/library/bb979194.aspx</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1464832</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1464832</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 28 Feb 2008 15:41:32 GMT</pubDate></item><item><title><![CDATA[Reply to Grundlegende Fragen zu ActiveX, COM uvm. on Thu, 28 Feb 2008 17:05:58 GMT]]></title><description><![CDATA[<p>okay, thx!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1464912</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1464912</guid><dc:creator><![CDATA[iko79]]></dc:creator><pubDate>Thu, 28 Feb 2008 17:05:58 GMT</pubDate></item><item><title><![CDATA[Reply to Grundlegende Fragen zu ActiveX, COM uvm. on Tue, 15 Apr 2008 09:48:12 GMT]]></title><description><![CDATA[<p><a href="http://msdn2.microsoft.com/de-de/library/bb978981.aspx" rel="nofollow">Hier</a> hab ich gelesen, dass ActiveX-DLLs die Funktionen DllRegisterServer und DllUnregisterServer bereit stellen müssen, um in der Registry eingetragen werden zu können.</p>
<blockquote>
<p>Tatsächlich erfolgt eine solche Aktion nämlich nicht durch Hilfsprogramme wie regsvr32.exe, sondern durch die Komponenten selbst. Dafür stellen sie – wie API-Funktionen aus anderen DLLs – jeweils die Funktionen &quot;DllRegisterServer&quot; und &quot;DllUnregisterServer&quot; zur Verfügung, die sich um die notwendigen Eintragungen in der Registry kümmern und lediglich &quot;von außen angestoßen&quot; werden müssen.</p>
</blockquote>
<p>Meine ActiveX-DLL beinhaltet keine dieser Funktionen, das COM Control erbt von folgenden Klassen, die ebenfalls keine der beiden Funktionen bereit stellen.</p>
<pre><code class="language-cpp">class CRTSClientObj :
	public CComControl&lt;CRTSClientObj&gt;,
	public IRTSClientObj,
	public IPersistStreamInitImpl&lt;CRTSClientObj&gt;,
	public IPersistStorageImpl&lt;CRTSClientObj&gt;,
	public IOleControlImpl&lt;CRTSClientObj&gt;,
	public IOleObjectImpl&lt;CRTSClientObj&gt;,
	public IOleInPlaceActiveObjectImpl&lt;CRTSClientObj&gt;,
	public IOleInPlaceObjectWindowlessImpl&lt;CRTSClientObj&gt;,
	public IViewObjectExImpl&lt;CRTSClientObj&gt;,
	public IObjectSafetyImpl&lt;CRTSClientObj, INTERFACESAFE_FOR_UNTRUSTED_CALLER&gt;
</code></pre>
<p>Das Registrieren per regsvr32 funktioniert aber trotzdem. Wie ist das möglich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1492288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1492288</guid><dc:creator><![CDATA[iko79]]></dc:creator><pubDate>Tue, 15 Apr 2008 09:48:12 GMT</pubDate></item></channel></rss>