<?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[Verständnisfrage zu Controls in OnInitDialog]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe diesen Quelltext in meinem Dialog:</p>
<pre><code class="language-cpp">BOOL CNotizDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();

	if (m_lVerfasserID != -1)
	{
		m_cbxVerfasser.EnableWindow(FALSE); // 1
 		GetDlgItem(IDC_EDT_NOTIZTEXT)-&gt;EnableWindow(FALSE); // 2
		// TODO:
		m_edtText.SetReadOnly(); // 3
		CEdit* pEdit = dynamic_cast&lt;CEdit*&gt;(GetDlgItem(IDC_EDT_NOTIZTEXT)); // 4
		ASSERT(pEdit);
		if (pEdit)
		{
			pEdit-&gt;SetReadOnly();
		}
		UpdateData(FALSE);
	}

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX-Eigenschaftenseiten sollten FALSE zurückgeben
}
</code></pre>
<p>Da treten jetzt aber &quot;lustige&quot; Phänomene auf:<br />
1: Funktioniert.<br />
2: Funktioniert.<br />
3: Funktioniert.<br />
4: pEdit ist NULL. Das ist aber das Edit, was in 3 funktioniert hat. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Klar, ich habe eine Lösung, aber kann mir das trotzdem bitte jemand erklären? Warum ist der Zeiger NULL sobald ich auf CEdit* caste?<br />
RTTI ist an und sonst funktionieren dynamic_casts ja auch.</p>
<p>Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/82337/verständnisfrage-zu-controls-in-oninitdialog</link><generator>RSS for Node</generator><lastBuildDate>Tue, 14 Apr 2026 23:24:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/82337.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 10 Aug 2004 12:58:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verständnisfrage zu Controls in OnInitDialog on Tue, 10 Aug 2004 12:58:11 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe diesen Quelltext in meinem Dialog:</p>
<pre><code class="language-cpp">BOOL CNotizDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();

	if (m_lVerfasserID != -1)
	{
		m_cbxVerfasser.EnableWindow(FALSE); // 1
 		GetDlgItem(IDC_EDT_NOTIZTEXT)-&gt;EnableWindow(FALSE); // 2
		// TODO:
		m_edtText.SetReadOnly(); // 3
		CEdit* pEdit = dynamic_cast&lt;CEdit*&gt;(GetDlgItem(IDC_EDT_NOTIZTEXT)); // 4
		ASSERT(pEdit);
		if (pEdit)
		{
			pEdit-&gt;SetReadOnly();
		}
		UpdateData(FALSE);
	}

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX-Eigenschaftenseiten sollten FALSE zurückgeben
}
</code></pre>
<p>Da treten jetzt aber &quot;lustige&quot; Phänomene auf:<br />
1: Funktioniert.<br />
2: Funktioniert.<br />
3: Funktioniert.<br />
4: pEdit ist NULL. Das ist aber das Edit, was in 3 funktioniert hat. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Klar, ich habe eine Lösung, aber kann mir das trotzdem bitte jemand erklären? Warum ist der Zeiger NULL sobald ich auf CEdit* caste?<br />
RTTI ist an und sonst funktionieren dynamic_casts ja auch.</p>
<p>Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/579000</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/579000</guid><dc:creator><![CDATA[estartu]]></dc:creator><pubDate>Tue, 10 Aug 2004 12:58:11 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisfrage zu Controls in OnInitDialog on Tue, 10 Aug 2004 13:09:27 GMT]]></title><description><![CDATA[<p>Vermutlich, weil GetDlgItem() einfach mal wirklich nur ein CWnd* zurückliefert. Demzufolge liegen für RTTI keine Informationen vor, um korrekt zu casten. Was passiert denn bei:</p>
<p>CEdit* pEdit = dynamic_cast&lt;CEdit*&gt;((CWnd*)&amp;m_cbxVerfasser);</p>
<p>Das sollte doch dann funktionieren, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/579009</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/579009</guid><dc:creator><![CDATA[TheBigW@Work]]></dc:creator><pubDate>Tue, 10 Aug 2004 13:09:27 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisfrage zu Controls in OnInitDialog on Tue, 10 Aug 2004 13:17:59 GMT]]></title><description><![CDATA[<p>Mit dem richtigen Typ funktioniert das, ja.</p>
<p>Es funktioniert auch das hier:</p>
<pre><code class="language-cpp">CComboBox* pcb = dynamic_cast&lt;CComboBox*&gt;(GetDlgItem(IDC_CBX_VERFASSER));
</code></pre>
<p>Das &quot;lustige&quot; ist - hab ich grade rausgefunden - dass es nur funktioniert, wenn ich eine Membervariable dazu anlege.<br />
DANN funktioniert auch 4.</p>
<p>Okay, die für die Combobox hab ich jetzt nicht gelöscht, nur die vom Edit...</p>
<p>Kann das jemand erklären? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/579019</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/579019</guid><dc:creator><![CDATA[estartu]]></dc:creator><pubDate>Tue, 10 Aug 2004 13:17:59 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisfrage zu Controls in OnInitDialog on Tue, 10 Aug 2004 15:25:15 GMT]]></title><description><![CDATA[<p>Sag ich ja!</p>
<p>CEdit* pEdit = dynamic_cast&lt;CEdit*&gt;((CWnd*)&amp;m_cbxVerfasser);</p>
<p>funktioniert, weil das CWnd* von m_cbxVerfasser die Typeinformation ja mitbekommt. GetDlgItem kapselt vermutlich die WinAPI - Funktion GetDlgItem und die liefert ein HWND und daraus kreiert er dann das CWnd - Object. -&gt; ergo kann RTTI an der Stelle maximal erkenne, das es ein CWnd* - Object ist.</p>
<p>So würde ich es mir zumindest erklären.</p>
<p>oder besser:</p>
<p>CWnd aWnd;<br />
aWnd.Attach( m_cbxVerfasser.m_hWnd );</p>
<p>das CWnd weiß nicht, das es eigentlich eine Combobox ist <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/579149</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/579149</guid><dc:creator><![CDATA[TheBigW]]></dc:creator><pubDate>Tue, 10 Aug 2004 15:25:15 GMT</pubDate></item></channel></rss>