<?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[Neues Window in einer Funktion öffnen]]></title><description><![CDATA[<p>Hola!</p>
<p>Ich habe folgendes Problem:</p>
<p>Innerhalb einer DLL benötige ich zum Anzeigen von Daten, die ich von der seriellen Schnittstelle gelesen habe, ein neues Window. Dazu habe ich eine Klasse übernommen, die von CFrameWnd abgeleitet ist. Im Konstruktor wird ein Zeiger auf ein Array und ein int übergeben.</p>
<pre><code class="language-cpp">CDataWnd::CDataWnd(BYTE * buffer, int length)
{
    itsLength = length;
    itsBuffer = buffer;
    Create(NULL, &quot;Data&quot;, WS_VISIBLE|WS_OVERLAPPEDWINDOW, CRect(0,0,500,500));
    UpdateWindow();
}
</code></pre>
<p>Nun soll das Window innerhalb einer Funktion &quot;Anzeigen&quot; erzeugt werden und dann in der KlassenMethode OnPaint() beschrieben werden.</p>
<pre><code class="language-cpp">void ShowData(BYTE sBuffer[], int iLength, UINT iAdresse)

{
   /* Fenster erzeugen und Daten anzeigen */
   CFlashDataWnd *flashDataWnd = new CFlashDataWnd(sDataBuffer, iLength) ;

}

void CDataWnd::OnPaint()
{
    ......

    for (lPos = 0; lPos &lt; itsLength; lPos++) 
    {
       ...    
    dc.DrawText(sDataline, &amp;rect ,DT_LEFT );
               ....    
    }
</code></pre>
<p>Danach soll die Funktion ShowData ()zurückkehren. Soweit funktioniert's ja, aber sobald ich dann irgendwas im Fenster mache (z.B. mit dem Cursor hineinfahren) bekomme ich eine Access Violation. Es verliert ja irgendwie die Gültigkeit, wenn die Funktion zurückkehrt. Was ich machen will, ist, dass man erst das Fenster schließen muss, damit die Funktion ShowData() zurückkehrt und dann sollte es ja keine Probleme mehr geben. Bzw. gibt es eine möglichkeit, dass das Fenster auch danach noch gültig ist?</p>
<p>Das Ganze läuft wie gesagt in einer DLL, die wiederum in einem Applikationsprogramm geladen wird, ist also nicht unbedingt einfach zu handlen.</p>
<p>Danke schon mal im voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/78346/neues-window-in-einer-funktion-öffnen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Apr 2026 01:34:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/78346.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 30 Jun 2004 15:52:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Neues Window in einer Funktion öffnen on Wed, 30 Jun 2004 15:52:31 GMT]]></title><description><![CDATA[<p>Hola!</p>
<p>Ich habe folgendes Problem:</p>
<p>Innerhalb einer DLL benötige ich zum Anzeigen von Daten, die ich von der seriellen Schnittstelle gelesen habe, ein neues Window. Dazu habe ich eine Klasse übernommen, die von CFrameWnd abgeleitet ist. Im Konstruktor wird ein Zeiger auf ein Array und ein int übergeben.</p>
<pre><code class="language-cpp">CDataWnd::CDataWnd(BYTE * buffer, int length)
{
    itsLength = length;
    itsBuffer = buffer;
    Create(NULL, &quot;Data&quot;, WS_VISIBLE|WS_OVERLAPPEDWINDOW, CRect(0,0,500,500));
    UpdateWindow();
}
</code></pre>
<p>Nun soll das Window innerhalb einer Funktion &quot;Anzeigen&quot; erzeugt werden und dann in der KlassenMethode OnPaint() beschrieben werden.</p>
<pre><code class="language-cpp">void ShowData(BYTE sBuffer[], int iLength, UINT iAdresse)

{
   /* Fenster erzeugen und Daten anzeigen */
   CFlashDataWnd *flashDataWnd = new CFlashDataWnd(sDataBuffer, iLength) ;

}

void CDataWnd::OnPaint()
{
    ......

    for (lPos = 0; lPos &lt; itsLength; lPos++) 
    {
       ...    
    dc.DrawText(sDataline, &amp;rect ,DT_LEFT );
               ....    
    }
</code></pre>
<p>Danach soll die Funktion ShowData ()zurückkehren. Soweit funktioniert's ja, aber sobald ich dann irgendwas im Fenster mache (z.B. mit dem Cursor hineinfahren) bekomme ich eine Access Violation. Es verliert ja irgendwie die Gültigkeit, wenn die Funktion zurückkehrt. Was ich machen will, ist, dass man erst das Fenster schließen muss, damit die Funktion ShowData() zurückkehrt und dann sollte es ja keine Probleme mehr geben. Bzw. gibt es eine möglichkeit, dass das Fenster auch danach noch gültig ist?</p>
<p>Das Ganze läuft wie gesagt in einer DLL, die wiederum in einem Applikationsprogramm geladen wird, ist also nicht unbedingt einfach zu handlen.</p>
<p>Danke schon mal im voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/550424</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/550424</guid><dc:creator><![CDATA[BokonTaylay]]></dc:creator><pubDate>Wed, 30 Jun 2004 15:52:31 GMT</pubDate></item><item><title><![CDATA[Reply to Neues Window in einer Funktion öffnen on Wed, 30 Jun 2004 16:07:44 GMT]]></title><description><![CDATA[<p>hast du schon DoModal(); versucht ??</p>
<p>(hört sich so an als ob du nicht mehr der neuste auf dem gebiet bist, aber ich frage trotzdem mal ;))</p>
]]></description><link>https://www.c-plusplus.net/forum/post/550440</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/550440</guid><dc:creator><![CDATA[Red Skall]]></dc:creator><pubDate>Wed, 30 Jun 2004 16:07:44 GMT</pubDate></item><item><title><![CDATA[Reply to Neues Window in einer Funktion öffnen on Wed, 30 Jun 2004 16:10:20 GMT]]></title><description><![CDATA[<p>Ist das nicht nur bei Dialogen notwendig??</p>
<p>Ja, das ganze ist recht neu für mich!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/550445</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/550445</guid><dc:creator><![CDATA[BokonTaylay]]></dc:creator><pubDate>Wed, 30 Jun 2004 16:10:20 GMT</pubDate></item><item><title><![CDATA[Reply to Neues Window in einer Funktion öffnen on Wed, 30 Jun 2004 17:19:34 GMT]]></title><description><![CDATA[<p>aso, hörtest dich so an, als ob du schon ne zeit lang dabei bist. aber ok.</p>
<p>du sagtest doch das du ein window anzeigen lassen willst; hast du vor ein im dialogfeldassistenten erstelltes fenster anzeigen zulassen ?? das könntest du dann mit werten füllen.</p>
<p>wenn du das vor hast, dann machst du in deinem hauptdialogfeld eine variable vom datentyp deines fensters und führst die DoModal() -funktion auf die variable aus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/550508</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/550508</guid><dc:creator><![CDATA[Red Skall]]></dc:creator><pubDate>Wed, 30 Jun 2004 17:19:34 GMT</pubDate></item></channel></rss>