<?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[Ein Konsolenfenster mithilfe einer Standardmeldeschleife offen halten (mithilfe von MVC?)]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich schildere kurz mal meine Herausforderung ^^:<br />
Es gibt ein VoIP-SDK, welches ich unter .NET C# nutzen konnte um<br />
Sprachverbindungen zwischen 2 Stationen (Windows XP PCs) zu ermöglichen.<br />
Da dieses SDK unter DotNET auf ActiveX aufbaut, muss eine OCX Datei ins<br />
System registriert werden, dies ist aber nicht gewünscht und sollte umgangen werden.</p>
<p>Jetzt bietet das SDK aber auch Unterstützung für C++ an, eine Lib/DLL sowie eine<br />
Beispielanwendung (welche die MFC nutzt) sind mitgeliefert.</p>
<p>Da man in C# mit DLLImport nur Funktionen, aber keine (nötigen) Klassen aus unmanaged Code importieren kann, wollte ich den Umweg über eine Managed C++ Library gehen, dafür wollte ich die gleiche DotNET Anwendung aber erst einmal als Unmanaged C++ realisieren.</p>
<p>So, der Punkt wo ich gerade feststecke: Weil ich unter unmanaged C++ versuche das ganze als Konsolenanwendung zu realisieren, gibt es ein kleines Problem.<br />
Und zwar, sobald die Verbindung aufgebaut werden soll, muss sich das Programm in einer Standardmeldeschleife befinden, damit es sich nicht beendet. Ansonsten läuft es einfach weiter (bis zum Ende).</p>
<p>Unter DotNET habe ich das wie folgt gelöst:</p>
<pre><code>// Reference auf System.Windows.Forms hinzugefügt
System.Windows.Forms.Application.Run(); //Standardmelgeschleife gestartet
</code></pre>
<p>Nun habe ich aber keine Ahnung wie/wo ich das unter C++ und eventuell mit der MFC lösen kann, ich hoffe das mir hier einer helfen kann.</p>
<p>Danke im voraus!</p>
<p>PS: Hier ein Artikel wie man eine Unmanaged C++ DLL unter DotNET nutzen kann, mit dem Umweg über einen Managed C++ DLL:<br />
<a href="http://codeguru.earthweb.com/cpp/cpp/cpp_managed/interop/article.php/c6867/" rel="nofollow">http://codeguru.earthweb.com/cpp/cpp/cpp_managed/interop/article.php/c6867/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/196717/ein-konsolenfenster-mithilfe-einer-standardmeldeschleife-offen-halten-mithilfe-von-mvc</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Apr 2026 01:25:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/196717.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 02 Nov 2007 09:09:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ein Konsolenfenster mithilfe einer Standardmeldeschleife offen halten (mithilfe von MVC?) on Fri, 02 Nov 2007 09:09:46 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich schildere kurz mal meine Herausforderung ^^:<br />
Es gibt ein VoIP-SDK, welches ich unter .NET C# nutzen konnte um<br />
Sprachverbindungen zwischen 2 Stationen (Windows XP PCs) zu ermöglichen.<br />
Da dieses SDK unter DotNET auf ActiveX aufbaut, muss eine OCX Datei ins<br />
System registriert werden, dies ist aber nicht gewünscht und sollte umgangen werden.</p>
<p>Jetzt bietet das SDK aber auch Unterstützung für C++ an, eine Lib/DLL sowie eine<br />
Beispielanwendung (welche die MFC nutzt) sind mitgeliefert.</p>
<p>Da man in C# mit DLLImport nur Funktionen, aber keine (nötigen) Klassen aus unmanaged Code importieren kann, wollte ich den Umweg über eine Managed C++ Library gehen, dafür wollte ich die gleiche DotNET Anwendung aber erst einmal als Unmanaged C++ realisieren.</p>
<p>So, der Punkt wo ich gerade feststecke: Weil ich unter unmanaged C++ versuche das ganze als Konsolenanwendung zu realisieren, gibt es ein kleines Problem.<br />
Und zwar, sobald die Verbindung aufgebaut werden soll, muss sich das Programm in einer Standardmeldeschleife befinden, damit es sich nicht beendet. Ansonsten läuft es einfach weiter (bis zum Ende).</p>
<p>Unter DotNET habe ich das wie folgt gelöst:</p>
<pre><code>// Reference auf System.Windows.Forms hinzugefügt
System.Windows.Forms.Application.Run(); //Standardmelgeschleife gestartet
</code></pre>
<p>Nun habe ich aber keine Ahnung wie/wo ich das unter C++ und eventuell mit der MFC lösen kann, ich hoffe das mir hier einer helfen kann.</p>
<p>Danke im voraus!</p>
<p>PS: Hier ein Artikel wie man eine Unmanaged C++ DLL unter DotNET nutzen kann, mit dem Umweg über einen Managed C++ DLL:<br />
<a href="http://codeguru.earthweb.com/cpp/cpp/cpp_managed/interop/article.php/c6867/" rel="nofollow">http://codeguru.earthweb.com/cpp/cpp/cpp_managed/interop/article.php/c6867/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1396249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1396249</guid><dc:creator><![CDATA[King_Florian]]></dc:creator><pubDate>Fri, 02 Nov 2007 09:09:46 GMT</pubDate></item><item><title><![CDATA[Reply to Ein Konsolenfenster mithilfe einer Standardmeldeschleife offen halten (mithilfe von MVC?) on Fri, 02 Nov 2007 10:13:29 GMT]]></title><description><![CDATA[<p>Dann bau doch keine Consolen Anwendung sondern eine Windows Anwendung.<br />
Dann kannst Du acuh eine eigene MessageLoop einbauen.</p>
<p>while (GetMessage(...</p>
<p>Aber wie terminiert das Programm denn?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1396291</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1396291</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Fri, 02 Nov 2007 10:13:29 GMT</pubDate></item><item><title><![CDATA[Reply to Ein Konsolenfenster mithilfe einer Standardmeldeschleife offen halten (mithilfe von MVC?) on Fri, 02 Nov 2007 11:02:18 GMT]]></title><description><![CDATA[<p>Martin Richter schrieb:</p>
<blockquote>
<p>Dann bau doch keine Consolen Anwendung sondern eine Windows Anwendung.<br />
Dann kannst Du acuh eine eigene MessageLoop einbauen.</p>
<p>while (GetMessage(...</p>
<p>Aber wie terminiert das Programm denn?</p>
</blockquote>
<p>Eine Windows-Anwendung ist nicht praktikabel, weil ich später eh eine DLL daraus machen will (werde).</p>
<p>Eine eigene MessageLoop würde ich gerne bauen, aber ich weiß leider nicht welche Nachrichten ich abfragen muss.<br />
Und ob es reicht einfach eine Endlosschleife zu integrieren, bezweifle ich (ich habe es aber noch nicht getestet).</p>
<p>Momentan habe ich es etwas anders gelöst, ohne den Lerneffekt (wenn man so will).<br />
Ich habe ein neues Managed C++ Projekt angefangen und dort durch meine bisherigen Erfahrungen mit dem unmanaged Code alles soweit hinbekommen das ich dann mit System::Windows::Forms::Application::Run(); alles soweit funktioniert.</p>
<p>Momentan kämpfe ich damit wie ich einen LPCTSTR aus C++ in einen .NET System::String umwandeln kann..<br />
Ich denke ich gehe den Umweg über ein CharArray.</p>
<p>Ich denke ich werde das auch so lassen, aber mich interessiert brennent ob/wie man das Problem sonst beheben könnte (die Endlosschleife werde ich nachher mal ausprobieren).</p>
<p>Erstmal danke für die Anregung.</p>
<p>Achso, das SDK wirft Events, so kann ich reagieren und das Programm ggf. beenden.</p>
<p>Gruß<br />
Florian</p>
<p>Edit: Kleine Änderungen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1396314</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1396314</guid><dc:creator><![CDATA[King_Florian]]></dc:creator><pubDate>Fri, 02 Nov 2007 11:02:18 GMT</pubDate></item><item><title><![CDATA[Reply to Ein Konsolenfenster mithilfe einer Standardmeldeschleife offen halten (mithilfe von MVC?) on Fri, 02 Nov 2007 11:17:29 GMT]]></title><description><![CDATA[<p>Das hake mal ganz schnell ab. Eine DLL mit MessageLoop?<br />
Das kann doch nicht gehen.</p>
<p>Der STA Thread in dem die MessageLoop läuft muss autark sein. Deshlab ist eine Windows GUI Applikation hier genau der richtige Ansatz!<br />
Gerade weil die Events asynchron letzten Endes die Message Loop benötigen kann Dein DLL Ansatz nur in die Hose gehen...</p>
<p>Außer Du möchtest die Funktion aus der DLL aufrufen und sie kehrt nicht zurück.</p>
<p>Oder Du musst das ganze in der DLL in einen eigenen Thread auslagern. Aber auch hier ist eine MessageLoop im Stile eine Windows UI Programmes der richtige Ansatz.</p>
<p>Wenn Du jetzt straucheslt einen char* nach System::String zu konvertieren wünsche ich Dir weiterhin Happy Coding.<br />
HOW TO: Convert from System::String* to Char* in Visual C++ .NET<br />
<a href="http://support.microsoft.com/?kbid=311259" rel="nofollow">http://support.microsoft.com/?kbid=311259</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1396329</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1396329</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Fri, 02 Nov 2007 11:17:29 GMT</pubDate></item><item><title><![CDATA[Reply to Ein Konsolenfenster mithilfe einer Standardmeldeschleife offen halten (mithilfe von MVC?) on Fri, 02 Nov 2007 11:42:22 GMT]]></title><description><![CDATA[<p>Martin Richter schrieb:</p>
<blockquote>
<p>Das hake mal ganz schnell ab. Eine DLL mit MessageLoop?<br />
Das kann doch nicht gehen.</p>
<p>Der STA Thread in dem die MessageLoop läuft muss autark sein. Deshlab ist eine Windows GUI Applikation hier genau der richtige Ansatz!<br />
Gerade weil die Events asynchron letzten Endes die Message Loop benötigen kann Dein DLL Ansatz nur in die Hose gehen...</p>
<p>Außer Du möchtest die Funktion aus der DLL aufrufen und sie kehrt nicht zurück.</p>
<p>Oder Du musst das ganze in der DLL in einen eigenen Thread auslagern. Aber auch hier ist eine MessageLoop im Stile eine Windows UI Programmes der richtige Ansatz.</p>
<p>Wenn Du jetzt straucheslt einen char* nach System::String zu konvertieren wünsche ich Dir weiterhin Happy Coding.<br />
HOW TO: Convert from System::String* to Char* in Visual C++ .NET<br />
<a href="http://support.microsoft.com/?kbid=311259" rel="nofollow">http://support.microsoft.com/?kbid=311259</a></p>
</blockquote>
<p>Naja, ich musste erstmal wissen das LPCTSTR ein char* ist, ich bin damals von den Grundlagen von C++ direkt auf C# umgestiegen und dort fühle ich mich auch wohl. (C++ nie richtig ausführlich gelernt)<br />
Bloss leider musste ich in diesen Fall wieder zurück und da merkt man halt, wenn gewisses Wissen einfach nicht vorhanden ist.</p>
<p>Die DLL wird quasi die komplette Sprachverbindung regeln und nur Events an das aufrufende Programm zurückgeben, damit dort auf eventuelle Verbindungsabbrüche reagiert werden kann.<br />
War wie gesagt unter DotNET alles kein Problem, man muss sich halt mit vielen Sachen nicht herumschlagen, hat zwar nicht alle Freiheiten, aber es reicht meistens doch aus.</p>
<p>Naja, werde mal weiterarbeiten, eventuell ist gleich Mittag, ein Kollege hat Pizza mitgebracht ^^.</p>
<p>Gruß<br />
Florian</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1396346</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1396346</guid><dc:creator><![CDATA[King_Florian]]></dc:creator><pubDate>Fri, 02 Nov 2007 11:42:22 GMT</pubDate></item></channel></rss>