<?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[Mit VC++ DLL auf VisualBasic Form Grafik zeichnen]]></title><description><![CDATA[<p>Ich will von einem VC++ DLL aus<br />
auf eine aufrufende VB-Form<br />
Grafik zeichnen. (MS Visual Studio 6.0)<br />
Doch das klappt bisher nicht, da das DLL die VB &quot;Form&quot; als Fenster nicht kennt und daher keine DC definieren kann.<br />
Übergabe eines Zeigers auf die Form von VB an DLL ist auch keine Lösung; denn davon ausgehend lässt sich keine DC definieren (s.u.).<br />
kann mir jemand helfen?<br />
Tulgan</p>
<p>Beispiel:</p>
<p>extern &quot;C&quot; BOOL PASCAL EXPORT Ellipse (int * F, void * p)<br />
{<br />
AFX_MANAGE_STATE(AfxGetStaticModuleState());<br />
CClientDC dc (( CWnd * ) p); // Meldung: &quot;Debug Assertion failed&quot;<br />
dc.Ellipse(F[0], F[1], F[2], F[3]);<br />
return TRUE;<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/199940/mit-vc-dll-auf-visualbasic-form-grafik-zeichnen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Apr 2026 01:14:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/199940.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 08 Dec 2007 18:05:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Mit VC++ DLL auf VisualBasic Form Grafik zeichnen on Sat, 08 Dec 2007 18:05:58 GMT]]></title><description><![CDATA[<p>Ich will von einem VC++ DLL aus<br />
auf eine aufrufende VB-Form<br />
Grafik zeichnen. (MS Visual Studio 6.0)<br />
Doch das klappt bisher nicht, da das DLL die VB &quot;Form&quot; als Fenster nicht kennt und daher keine DC definieren kann.<br />
Übergabe eines Zeigers auf die Form von VB an DLL ist auch keine Lösung; denn davon ausgehend lässt sich keine DC definieren (s.u.).<br />
kann mir jemand helfen?<br />
Tulgan</p>
<p>Beispiel:</p>
<p>extern &quot;C&quot; BOOL PASCAL EXPORT Ellipse (int * F, void * p)<br />
{<br />
AFX_MANAGE_STATE(AfxGetStaticModuleState());<br />
CClientDC dc (( CWnd * ) p); // Meldung: &quot;Debug Assertion failed&quot;<br />
dc.Ellipse(F[0], F[1], F[2], F[3]);<br />
return TRUE;<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1417197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1417197</guid><dc:creator><![CDATA[tulgan]]></dc:creator><pubDate>Sat, 08 Dec 2007 18:05:58 GMT</pubDate></item><item><title><![CDATA[Reply to Mit VC++ DLL auf VisualBasic Form Grafik zeichnen on Sun, 09 Dec 2007 14:41:50 GMT]]></title><description><![CDATA[<p>Müsstest Du nicht einfach me.hwnd aus VB an die Funktion übergeben. Dann kannst Du auch einen CCLientDC erzeugen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1417593</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1417593</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Sun, 09 Dec 2007 14:41:50 GMT</pubDate></item><item><title><![CDATA[Reply to Mit VC++ DLL auf VisualBasic Form Grafik zeichnen on Sat, 15 Dec 2007 15:22:01 GMT]]></title><description><![CDATA[<p>Vielen Dank! - Tulgan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1420996</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1420996</guid><dc:creator><![CDATA[tulgan]]></dc:creator><pubDate>Sat, 15 Dec 2007 15:22:01 GMT</pubDate></item><item><title><![CDATA[Reply to Mit VC++ DLL auf VisualBasic Form Grafik zeichnen on Wed, 19 Dec 2007 19:19:16 GMT]]></title><description><![CDATA[<p>Leider funktioniert es immer noch nicht-</p>
<p>Auf der C++ Seite:</p>
<p>extern &quot;C&quot; int PASCAL EXPORT Kreis (int* F, int n, void* p)<br />
{<br />
AFX_MANAGE_STATE(AfxGetStaticModuleState());<br />
HDC hDC = GetWindowDC(<em>(HWND</em>)p);<br />
Ellipse(hDC, F[0], F[1], F[2], F[3]);<br />
return n;<br />
}</p>
<p>Auf der VB-Seite:</p>
<p>Private Declare Function Kreis _<br />
Lib &quot;MFC.dll&quot; _<br />
(ByRef F0 As Integer, ByVal n As Long, ByRef p) As Integer</p>
<p>Private Sub Form_Click()<br />
Dim F(3) As Integer<br />
F(0) = 500<br />
F(1) = 500<br />
F(2) = 1000<br />
F(3) = 1000<br />
n = 4<br />
MsgBox (Kreis(F(0), n, Me.hWnd))<br />
End Sub</p>
<p>Ergebnis: Keine Fehlermeldung... MsgBox meldet tatsächlich 4. (also läuft die Function auch &quot;fehlerfrei&quot;)...<br />
Doch der Kreis wird nicht gezeichnet!</p>
<p>Das DC, das über GetWindowDC gefunden wird, hat offenbar keine Wirkung auf die Malfläche der VB-Form??? Wie kann man doch noch auf VB-Form malen? Oder ist es etwa überhaupt unmöglich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1423402</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1423402</guid><dc:creator><![CDATA[tulgan]]></dc:creator><pubDate>Wed, 19 Dec 2007 19:19:16 GMT</pubDate></item><item><title><![CDATA[Reply to Mit VC++ DLL auf VisualBasic Form Grafik zeichnen on Wed, 19 Dec 2007 23:55:11 GMT]]></title><description><![CDATA[<p>Du musst nach HWND casten, nicht nach HWND*.<br />
Schätze ich mal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1423527</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1423527</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 19 Dec 2007 23:55:11 GMT</pubDate></item><item><title><![CDATA[Reply to Mit VC++ DLL auf VisualBasic Form Grafik zeichnen on Thu, 20 Dec 2007 14:15:47 GMT]]></title><description><![CDATA[<p>[quote=&quot;hustbaer&quot;]Du musst nach HWND casten, nicht nach HWND*. Schätze ich mal.[/quote]</p>
<p>vielen dank hustbear... doch eigentlich muesste es ohne all diesen umweg gehen (und geht trotzdem nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /> )</p>
<p>- das objekt &quot;form&quot; besitzt schon in VB die (windowsspezifische) eigenschaft hDC, die als long weitergegeben werden kann.<br />
- C++ empfängt das, akzeptiert als DC, zeichnet (angeblich) die Ellipse und meldet zurueck die ellipse sei fehlerlos gezeichnet...<br />
- und es erscheint doch nichts auf der VB-form:<br />
--------------------------------------------------------<br />
C++ seitig:</p>
<pre><code class="language-cpp">extern &quot;C&quot; int PASCAL EXPORT MyEllipse (int* F, HDC hDC)
{
  AFX_MANAGE_STATE(AfxGetStaticModuleState());
  if(Ellipse(hDC, F[0], F[1], F[2], F[3])!=0) 
    return -1;             // falls fehlerlos, dann -1 zurueckgeben, 
  else 
    return GetLastError(); // falls fehler, fehlercode zurueckgeben (&gt; 0).
}
</code></pre>
<p>--------------------------------------------------------<br />
VB-seitig:</p>
<p>Private Declare Function MyEllipse _<br />
Lib &quot;MFC.dll&quot; _<br />
(ByRef F0 As Integer, ByVal hDC As Long) As Integer</p>
<p>Private Sub Form_Load()<br />
Dim F(3) As Integer<br />
F(0) = 500<br />
F(1) = 500<br />
F(2) = 1000<br />
F(3) = 1000<br />
n = MyEllipse(F(0), pcBild.hDC)<br />
MsgBox (n) ' meldet -1, dh. &quot;ellipse mit erfolg gezeichnet!&quot;<br />
End Sub</p>
<p>--------------------------------------------------------<br />
hoffnungsloser fall???<br />
tulgan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1423853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1423853</guid><dc:creator><![CDATA[tulgan]]></dc:creator><pubDate>Thu, 20 Dec 2007 14:15:47 GMT</pubDate></item></channel></rss>