<?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[Mal was perverses: pass char* to vb6 proc]]></title><description><![CDATA[<p>hi,<br />
ich bin irgendwie dem c++ noch nicht so ganz mächtig muss aber nun<br />
eine c++ dll in vb nutzen diese dll liest kontinuierlich werte ...<br />
nun dachte ich mir ich mache das so das wenn ein wert kommt das ich eine<br />
prozedur aufrufe die von einem anderen programm übergeben wurde<br />
z.b. ein vb programm</p>
<p>so nun habe ich mal folgenden code geschrieben der sehr vereinfacht ist</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
void __stdcall DoSomething(int someint, char* name, void* UserProc){
void ( __stdcall *lpUserProc ) (int);  // point to UserProc
lpUserProc = UserProc;
(*lpUserProc)(199); // call the UserProc
}
</code></pre>
<p>das ganze gestaltet sich in vb wie folgt ...</p>
<pre><code>Private Declare Sub DoSomething Lib &quot;my.dll&quot; _
        (ByVal retries As Integer, ByVal portname As String, ByVal lpfnMyFunc As Long)

Private Sub Command1_Click()
    DoScale 10, &quot;COM1&quot;, AddressOf MyCallBackFunction
End Sub
</code></pre>
<p>und in einem extra modul braucht man natürlich die callbackfunction</p>
<pre><code>Sub MyCallBackFunction(ByVal i As Integer)
MsgBox i
End Sub
</code></pre>
<p>das geht leider nicht anders in vb es muss ein extra modul sein<br />
so das funzt alles wunderbarstens<br />
aber wehe ich versuche dem UserProc char* zu übergeben dann hagelts read error<br />
die callbackfunction wollte ich eigentlich so haben :</p>
<pre><code>Sub MyCallBackFunction(ByVal i As String)
MsgBox i
End Sub
</code></pre>
<p>ich bin mir sicher es sind nur ein paar kleine sachen zu ändern doch ich schaffe es seit tagen nicht lol</p>
<p>danke für eure hilfe</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/117951/mal-was-perverses-pass-char-to-vb6-proc</link><generator>RSS for Node</generator><lastBuildDate>Fri, 03 Jul 2026 20:14:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/117951.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 12 Aug 2005 19:02:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Mal was perverses: pass char* to vb6 proc on Fri, 12 Aug 2005 19:02:38 GMT]]></title><description><![CDATA[<p>hi,<br />
ich bin irgendwie dem c++ noch nicht so ganz mächtig muss aber nun<br />
eine c++ dll in vb nutzen diese dll liest kontinuierlich werte ...<br />
nun dachte ich mir ich mache das so das wenn ein wert kommt das ich eine<br />
prozedur aufrufe die von einem anderen programm übergeben wurde<br />
z.b. ein vb programm</p>
<p>so nun habe ich mal folgenden code geschrieben der sehr vereinfacht ist</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
void __stdcall DoSomething(int someint, char* name, void* UserProc){
void ( __stdcall *lpUserProc ) (int);  // point to UserProc
lpUserProc = UserProc;
(*lpUserProc)(199); // call the UserProc
}
</code></pre>
<p>das ganze gestaltet sich in vb wie folgt ...</p>
<pre><code>Private Declare Sub DoSomething Lib &quot;my.dll&quot; _
        (ByVal retries As Integer, ByVal portname As String, ByVal lpfnMyFunc As Long)

Private Sub Command1_Click()
    DoScale 10, &quot;COM1&quot;, AddressOf MyCallBackFunction
End Sub
</code></pre>
<p>und in einem extra modul braucht man natürlich die callbackfunction</p>
<pre><code>Sub MyCallBackFunction(ByVal i As Integer)
MsgBox i
End Sub
</code></pre>
<p>das geht leider nicht anders in vb es muss ein extra modul sein<br />
so das funzt alles wunderbarstens<br />
aber wehe ich versuche dem UserProc char* zu übergeben dann hagelts read error<br />
die callbackfunction wollte ich eigentlich so haben :</p>
<pre><code>Sub MyCallBackFunction(ByVal i As String)
MsgBox i
End Sub
</code></pre>
<p>ich bin mir sicher es sind nur ein paar kleine sachen zu ändern doch ich schaffe es seit tagen nicht lol</p>
<p>danke für eure hilfe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/851186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/851186</guid><dc:creator><![CDATA[Noob-O-Mat]]></dc:creator><pubDate>Fri, 12 Aug 2005 19:02:38 GMT</pubDate></item><item><title><![CDATA[Reply to Mal was perverses: pass char* to vb6 proc on Fri, 12 Aug 2005 19:04:28 GMT]]></title><description><![CDATA[<p>es muss natürlich auch</p>
<pre><code>Private Sub Command1_Click()
    DoSomethin 10, &quot;COM1&quot;, AddressOf MyCallBackFunction
End Sub
</code></pre>
<p>heissen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> ich habe die sache sehr stark vereinfacht damit es nicht so vil lesearbeit ist hoffe mir kann jemand helfen<br />
danke nochmal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/851188</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/851188</guid><dc:creator><![CDATA[Noob-O-Mat]]></dc:creator><pubDate>Fri, 12 Aug 2005 19:04:28 GMT</pubDate></item><item><title><![CDATA[Reply to Mal was perverses: pass char* to vb6 proc on Sat, 13 Aug 2005 10:25:17 GMT]]></title><description><![CDATA[<p>so wie ich es dort verstehe: <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon98/html/vbconpassingstringstodllprocedure.asp" rel="nofollow">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon98/html/vbconpassingstringstodllprocedure.asp</a><br />
musst du der callback-function einen BSTR (VB String = C++ BSTR) übergeben, der mit SysAllocString aus einem Unicode-String erzeugt werden kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/851403</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/851403</guid><dc:creator><![CDATA[D*niel *chumann]]></dc:creator><pubDate>Sat, 13 Aug 2005 10:25:17 GMT</pubDate></item></channel></rss>