<?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[Steuerelemente aus &amp;quot;fremder&amp;quot; Klasse erstellen]]></title><description><![CDATA[<p>Hi,</p>
<p>Ich hab ein Problem, meine dynamisch erzeugten Buttons auch in meinem Dialog angezeigt zu bekommen. Sie wollen einfach nicht so, wie ich will...<br />
Folgendermaßen bin ich vorgegangen: Ich hab eine Klasse erstellt</p>
<pre><code>class CTest : public CWnd
</code></pre>
<p>In dieser Klasse versuche ich meine Buttons zu erstellen</p>
<pre><code>static int z=0;

	CButtonST *m_button1, *m_button2;
	m_button1 = new CButtonST;
	m_button2 = new CButtonST;

	m_button1-&gt;Create(NULL,WS_VISIBLE | WS_TABSTOP | BS_VCENTER, 
                CRect(20, 60, 40, 90), this, z); z++;
	m_button2-&gt;Create(NULL,WS_VISIBLE | WS_TABSTOP | BS_VCENTER, 
                CRect(60, 60, 80, 90), this, z); z++;

	delete m_button1,m_button2;
</code></pre>
<p>Wenn ich den unteren Code in meine Hauptklasse eingebe funktioniert es.<br />
this habe ich auch schon einmal gegen einen Zeiger auf meine Dialogklasse getauscht, aber dies hat auch nichts gebracht.</p>
<p>Ich hoffe mir kann jemand helfen.<br />
Gruß Eddy</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/156220/steuerelemente-aus-quot-fremder-quot-klasse-erstellen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 25 Jul 2026 11:15:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/156220.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 14 Aug 2006 18:35:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Steuerelemente aus &amp;quot;fremder&amp;quot; Klasse erstellen on Mon, 14 Aug 2006 18:35:13 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>Ich hab ein Problem, meine dynamisch erzeugten Buttons auch in meinem Dialog angezeigt zu bekommen. Sie wollen einfach nicht so, wie ich will...<br />
Folgendermaßen bin ich vorgegangen: Ich hab eine Klasse erstellt</p>
<pre><code>class CTest : public CWnd
</code></pre>
<p>In dieser Klasse versuche ich meine Buttons zu erstellen</p>
<pre><code>static int z=0;

	CButtonST *m_button1, *m_button2;
	m_button1 = new CButtonST;
	m_button2 = new CButtonST;

	m_button1-&gt;Create(NULL,WS_VISIBLE | WS_TABSTOP | BS_VCENTER, 
                CRect(20, 60, 40, 90), this, z); z++;
	m_button2-&gt;Create(NULL,WS_VISIBLE | WS_TABSTOP | BS_VCENTER, 
                CRect(60, 60, 80, 90), this, z); z++;

	delete m_button1,m_button2;
</code></pre>
<p>Wenn ich den unteren Code in meine Hauptklasse eingebe funktioniert es.<br />
this habe ich auch schon einmal gegen einen Zeiger auf meine Dialogklasse getauscht, aber dies hat auch nichts gebracht.</p>
<p>Ich hoffe mir kann jemand helfen.<br />
Gruß Eddy</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1117206</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1117206</guid><dc:creator><![CDATA[edmundy]]></dc:creator><pubDate>Mon, 14 Aug 2006 18:35:13 GMT</pubDate></item><item><title><![CDATA[Reply to Steuerelemente aus &amp;quot;fremder&amp;quot; Klasse erstellen on Mon, 14 Aug 2006 23:16:06 GMT]]></title><description><![CDATA[<p>hmm also dein extremes eigenleben was deine button so entwickeln kommt bestimmt einmal daher weil du ihnen keine IDC_ zuweist. wenn du mal einen blick in die MSDN wirfst steht unter CButton::Create als letzter parameter UINT nID du übergibst ihnen ein static int das du auch noch hochzählst!!</p>
<p>und der erste parameter bei create der LPCTSTR lpszCaption würde ich jetzt nicht mit NULL belegen wenn ich nix im Button stehn haben will sondern mit &quot;&quot;.</p>
<p>das nächste was da gänzlich aus dem ruder läuft ist du willst nachdem du die button erstellst sie wieder löschen. das wäre das gleiche wenn du nen text auf ein blatt papier schreibst ihn sofort wieder wegradierst und dich wunderst warum da nix geschrieben steht. <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="😉"
    /></p>
<p>versuch mal folgenden code bei mir funzen die steuerelemente einwandfrei</p>
<pre><code>#define IDC_BUTTEN1 3001
#define IDC_BUTTEN2 3002

    CButton *m_button1, *m_button2; 

    m_button1 = new CButton(); 
    m_button2 = new CButton(); 

    m_button1-&gt;Create(&quot;Test&quot;,WS_VISIBLE | WS_TABSTOP , 
                CRect(40, 60, 80, 90), GetParent(), IDC_BUTTEN1);  

    m_button2-&gt;Create(&quot;Test&quot;,WS_VISIBLE | WS_TABSTOP , 
                CRect(100, 150, 200, 200), this, IDC_BUTTEN2);
</code></pre>
<p>mfg<br />
LowFly</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1117310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1117310</guid><dc:creator><![CDATA[LowFly]]></dc:creator><pubDate>Mon, 14 Aug 2006 23:16:06 GMT</pubDate></item><item><title><![CDATA[Reply to Steuerelemente aus &amp;quot;fremder&amp;quot; Klasse erstellen on Tue, 15 Aug 2006 08:30:48 GMT]]></title><description><![CDATA[<p>1. Wenn Du einen delete direkt am Ende durchführst werden die Controls auch wieder zerstört. So sieht zumindest Dein Snipplett aus.<br />
2. Ist Deine Control in dem Du die Buttons erzeugen möchtest auch große genug. Beachte vor allem, das die Koordinaten hier relativ zum Parent sind. Also würde Deine Buttons irgendwo rechts vom Start Deines Controls erscheinen.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9213">@LowFly</a>: Er vergibt IDs beginnent mit 0</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1117381</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1117381</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 15 Aug 2006 08:30:48 GMT</pubDate></item><item><title><![CDATA[Reply to Steuerelemente aus &amp;quot;fremder&amp;quot; Klasse erstellen on Tue, 15 Aug 2006 10:09:28 GMT]]></title><description><![CDATA[<p>Danke an euch beiden, aber leider funktioniert es immer noch nicht.</p>
<p>Ich hab alles durchgeführt, was LowFly bemängelt hat, aber es erscheint immer noch nichts in meinem Dialog.</p>
<p>GetParent() erzeugt bei mir auch einen Fehler</p>
<pre><code>Fehler: Debug Assertion Failed
afxwin2.inl
Line 265
</code></pre>
<p>Wenn ich den Code in meiner Hauptklasse aufrufe funktioniert bei mir auch alles. Muss ich die neue Klasse irgendwie einbinden?</p>
<p>@ Martin Richter: Die Koordinaten stimmen. Ich konnte sie ja wie oben geschrieben testen.</p>
<p>Soll ich euch sonst noch etwas mitteilen?</p>
<p>Gruß Eddy</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1117434</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1117434</guid><dc:creator><![CDATA[edmundy]]></dc:creator><pubDate>Tue, 15 Aug 2006 10:09:28 GMT</pubDate></item><item><title><![CDATA[Reply to Steuerelemente aus &amp;quot;fremder&amp;quot; Klasse erstellen on Tue, 15 Aug 2006 11:37:39 GMT]]></title><description><![CDATA[<blockquote>
<p>Muss ich die neue Klasse irgendwie einbinden</p>
</blockquote>
<p>was meinst du damit</p>
<p>erstellst du die button in einer eigenen classe (kein dialog) und ruft sie dann auf??<br />
oder ist die neuen classe ein dialog.</p>
<p>wenn die neue klasse kein dialog ist ist es klar warum es nicht funzt.<br />
ich zitiere mal kurz die MSDN</p>
<p>MSDN Button::Create(..,..,..,CWnd* pParentWnd,..) schrieb:</p>
<blockquote>
<p>pParentWnd<br />
Specifies the button control's parent window, usually a CDialog. It must not be NULL</p>
</blockquote>
<p>ich übersetzt das mal mit meinem bescheidenen englisch.</p>
<p>Low's übersetzung schrieb:</p>
<blockquote>
<p>pParentWnd<br />
spezifiziert das tastensteuer elternfenster , normalerweise ein CDialog. Es darf nicht <strong>UNGÜLTIG</strong> sein.</p>
</blockquote>
<p>wird es jetzt ein bischen deutlicher warum es vieleicht nicht geht du brauchst das händel auf das fenster indem du die button erstellst.</p>
<p>Dein Handle ist UNGÜLTIG WEIL wenn das kein CDialog ist deine neue classe, dann ist <strong>this</strong> kein CWnd bzw. <strong>GetParent()</strong> auch nicht. <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="😉"
    /></p>
<p>ich nehm jetzt mal an das die klasse in der du die butten erstellst die CButtonST ist. übergib beim erstellen der classe CButtonST das CWnd des Dialogs.</p>
<pre><code>CButtonST *pButSt = new CButtonST(GetParent());
CButtonST *pButSt = new CButtonST(this);
</code></pre>
<p>im Konstrucktor der classe schreibst dann.</p>
<pre><code>CButtonST::CButtonST(CWnd *pWnd)
{
   m_pWnd = pWnd;
}
</code></pre>
<p>m_pWnd setzte dann anstatt this o. GetParent ein</p>
<pre><code>m_button-&gt;Create(&quot;Test&quot;,WS_VISIBLE | WS_TABSTOP , 
                CRect(100, 150, 200, 200), m_pWnd, IDC_BUTTEN2);
</code></pre>
<p>dann sollte es eigendlich klappen</p>
<p>ansonsten wüste ich jetzt nicht warum.</p>
<p>mfg<br />
LowFly</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1117509</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1117509</guid><dc:creator><![CDATA[LowFly]]></dc:creator><pubDate>Tue, 15 Aug 2006 11:37:39 GMT</pubDate></item><item><title><![CDATA[Reply to Steuerelemente aus &amp;quot;fremder&amp;quot; Klasse erstellen on Tue, 15 Aug 2006 21:18:43 GMT]]></title><description><![CDATA[<p>Ich hab jetzt alles so gemacht, wie du es gesagt hast ( hoffe ich <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> )</p>
<p>Test.cpp</p>
<pre><code>CButtonST *m_button1, *m_button2;
	m_button1 = new CButtonST(GetParent());
	m_button2 = new CButtonST(this);
	m_button1-&gt;Create(&quot;&quot;,WS_VISIBLE | WS_TABSTOP | BS_VCENTER, 
                CRect(40, 60, 80, 90), m_pWnd, 1);
</code></pre>
<p>BtnSt.h</p>
<pre><code>class CButtonST : public CButton
{
public:
    CButtonST(CWnd *pWnd);
	CTestDlg* m_pWnd;
</code></pre>
<p>BtnSt.cpp</p>
<pre><code>CButtonST::CButtonST(CWnd *pWnd)
 {
   m_pWnd = pWnd;
</code></pre>
<p>Leider bekomme ich immer noch Fehler.</p>
<pre><code>'IDD_TEST_DIALOG' : nichtdeklarierter Bezeichner 
error C2057: Konstanter Ausdruck erwartet
Test.cpp
error C2440: '=' : 'class CWnd *' kann nicht in 'class CTestDlg *' konvertiert werden
        Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator
 oder eine Typumwandlung im C- oder Funktionsformat
</code></pre>
<p>Liegt es an der <a href="http://www.codeproject.com/buttonctrl/cbuttonst.asp" rel="nofollow">CButtonST</a> die ich von Codeprojekt habe? Muss ich da irgendwie anders vorgehen?</p>
<p>Danke nochmals für die tolle Erklärung. Leider war ich zu dumm es umzusetzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1117892</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1117892</guid><dc:creator><![CDATA[edmundy]]></dc:creator><pubDate>Tue, 15 Aug 2006 21:18:43 GMT</pubDate></item><item><title><![CDATA[Reply to Steuerelemente aus &amp;quot;fremder&amp;quot; Klasse erstellen on Tue, 15 Aug 2006 22:12:07 GMT]]></title><description><![CDATA[<p>lol ja hätteste das mal früher gesagt.<br />
dann hätte man sich das hier sparen können.</p>
<p>hab mir die klasse mal runtergezogen vo cp.</p>
<p>konnte es zwar nicht testen da ich die alt...h nicht hab. aber allein vom reinschaun würde ich sagen.</p>
<p>in die header deines dialogs kommt</p>
<pre><code>CButtonST	 m_btnSTLogo;
CButtonST	 m_btnFace;
</code></pre>
<p>in die OnInit deines dialogs kommt</p>
<pre><code>m_btnSTLogo.SubclassWindow(GetDlgItem(IDC_DEINBUTTON1));
m_btnFace.SubclassWindow(GetDlgItem(IDC_DEINBUTTON2));

m_btnSTLogo.SetBitmaps(IDB_DEINICON1, RGB(255, 255, 255));

m_btnFace.SetBitmaps(IDB_DEINICON2, RGB(0, 255, 0));
</code></pre>
<p>das wars ganz einfach und simpel.<br />
wenn man vor hat sich andere classen einzuverleiben sollte man zumindest ansatzweise verstehn was darin passiert.</p>
<p>Ich hab das jetzt zuende gebracht weil ich es angefangen hab. normalerweise mach ich das nicht jemandem helfen eine classe in sein project zu prügeln der diese nicht mal ansatzweise versteht.</p>
<p>aber nix für ungut<br />
hab spaß damit</p>
<p>mfg<br />
LowFly</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1117909</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1117909</guid><dc:creator><![CDATA[LowFly]]></dc:creator><pubDate>Tue, 15 Aug 2006 22:12:07 GMT</pubDate></item><item><title><![CDATA[Reply to Steuerelemente aus &amp;quot;fremder&amp;quot; Klasse erstellen on Tue, 15 Aug 2006 22:20:48 GMT]]></title><description><![CDATA[<p>Vielen Dank und nochmals Entschuldigung für deine Mühen.</p>
<p>Gruß Eddy</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1117913</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1117913</guid><dc:creator><![CDATA[edmundy]]></dc:creator><pubDate>Tue, 15 Aug 2006 22:20:48 GMT</pubDate></item></channel></rss>