<?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[Editfelder deaktivieren!]]></title><description><![CDATA[<p>Hallo Profis,</p>
<p>ich habe lauter Editfelder in meiner Anwendung. Ich will die<br />
aber nach einer bestimmten Abfrage deaktivieren oder aktivieren.<br />
Meine Frage ist, ob es eine Möglichkeit gibt, die ID's dieser Editfelder als Übergabeparameter einer Methode zu definieren. Wenn ja, was für einen<br />
Datentyp sind die ID's ?</p>
<p>Gruss</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/81445/editfelder-deaktivieren</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Apr 2026 07:05:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/81445.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 31 Jul 2004 18:53:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Editfelder deaktivieren! on Sat, 31 Jul 2004 18:53:48 GMT]]></title><description><![CDATA[<p>Hallo Profis,</p>
<p>ich habe lauter Editfelder in meiner Anwendung. Ich will die<br />
aber nach einer bestimmten Abfrage deaktivieren oder aktivieren.<br />
Meine Frage ist, ob es eine Möglichkeit gibt, die ID's dieser Editfelder als Übergabeparameter einer Methode zu definieren. Wenn ja, was für einen<br />
Datentyp sind die ID's ?</p>
<p>Gruss</p>
]]></description><link>https://www.c-plusplus.net/forum/post/572312</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/572312</guid><dc:creator><![CDATA[Helen]]></dc:creator><pubDate>Sat, 31 Jul 2004 18:53:48 GMT</pubDate></item><item><title><![CDATA[Reply to Editfelder deaktivieren! on Sat, 31 Jul 2004 19:06:31 GMT]]></title><description><![CDATA[<p>Verwend mal die Suche <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>CEdit::EnableWindow(true|false);<br />
ist was du suchst.</p>
<p>Entweder membervariable erstellen, oder GetDlgItem verwenden. (evtl dann dort casten)</p>
<p>Alternativ bietet CEdit auch noch SetReadOnly an, wobei dann nur der Hintergrund<br />
grau wird, und die Schrift schwarz bleibt...</p>
<p>Devil</p>
]]></description><link>https://www.c-plusplus.net/forum/post/572314</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/572314</guid><dc:creator><![CDATA[phlox81]]></dc:creator><pubDate>Sat, 31 Jul 2004 19:06:31 GMT</pubDate></item><item><title><![CDATA[Reply to Editfelder deaktivieren! on Sat, 31 Jul 2004 19:23:43 GMT]]></title><description><![CDATA[<p>Das mache ich ja schon.</p>
<pre><code>if(g&gt;2)
	{
		GetDlgItem(IDC_Y5_D)-&gt;EnableWindow(TRUE);
		GetDlgItem(IDC_Y5_C)-&gt;EnableWindow(TRUE);
		GetDlgItem(IDC_Y5_B)-&gt;EnableWindow(TRUE);
		GetDlgItem(IDC_Y5_A)-&gt;EnableWindow(TRUE);	
	}
	else 
	{	
		GetDlgItem(IDC_Y5_D)-&gt;EnableWindow(FALSE);
		GetDlgItem(IDC_Y5_C)-&gt;EnableWindow(FALSE);
		GetDlgItem(IDC_Y5_B)-&gt;EnableWindow(FALSE);
		GetDlgItem(IDC_Y5_A)-&gt;EnableWindow(FALSE);	
	}
</code></pre>
<p>Ich wollte nur wissen, um den Quellcon zu verbessern. Dieser Cod wiederholt<br />
sich in meiner Anwendung immer, nur die ID's (z.B IDC_Y5_D) ändern sich.<br />
Kann man eine Methode zum Deaktivieren anderer Editfelder schreiben, indem man als Übergaberparameter die ID's gibt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/572319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/572319</guid><dc:creator><![CDATA[Helen]]></dc:creator><pubDate>Sat, 31 Jul 2004 19:23:43 GMT</pubDate></item><item><title><![CDATA[Reply to Editfelder deaktivieren! on Sat, 31 Jul 2004 20:08:56 GMT]]></title><description><![CDATA[<p>Ja, kann man. Resourcen ID sind vom typ unsigned int (UINT).</p>
<p>Devil</p>
]]></description><link>https://www.c-plusplus.net/forum/post/572341</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/572341</guid><dc:creator><![CDATA[phlox81]]></dc:creator><pubDate>Sat, 31 Jul 2004 20:08:56 GMT</pubDate></item><item><title><![CDATA[Reply to Editfelder deaktivieren! on Mon, 02 Aug 2004 06:05:01 GMT]]></title><description><![CDATA[<p>Wenn du das kürzen willst, dann schreib doch:</p>
<pre><code class="language-cpp">GetDlgItem(IDC_Y5_D)-&gt;EnableWindow(g&gt;2); 
        GetDlgItem(IDC_Y5_C)-&gt;EnableWindow(g&gt;2); 
        GetDlgItem(IDC_Y5_B)-&gt;EnableWindow(g&gt;2); 
        GetDlgItem(IDC_Y5_A)-&gt;EnableWindow(g&gt;2);
</code></pre>
<p>bzw, ich leg mir immer eine bool Variable an, dann muss ich die Bedingung nur an einer Stelle ändern. <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/573049</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/573049</guid><dc:creator><![CDATA[estartu]]></dc:creator><pubDate>Mon, 02 Aug 2004 06:05:01 GMT</pubDate></item><item><title><![CDATA[Reply to Editfelder deaktivieren! on Mon, 02 Aug 2004 09:02:19 GMT]]></title><description><![CDATA[<p>Eine Kontrolle über GetDlgItem zu aktivieren/deaktivieren ist zwar sauberer, aber im Hintergrund wird dann immer ein temporäres CWnd-Objekt angelegt. Außerdem muss man noch den Returnwert von GetDlgItem überprüfen, weil der kann ja auch NULL sein, falls nämlich eine Kontrolle mit der ID gar nicht da ist.</p>
<p>Also so:</p>
<pre><code class="language-cpp">CWnd *myctl = GetDlgItem(IDC_Y5_D);
if (myctl != NULL)
    myctl-&gt;EnableWindow(g &gt; 2);
</code></pre>
<p>Weil das ein wenig umständlich ist, wenn viele Kontrollen bearbeitet werden, habe ich mir eine einfache Funktion geschrieben, die sich den Umweg über die MFC spart:</p>
<pre><code class="language-cpp">void EnableDlgItem(CWnd *dlg, int id, BOOL bEnable)
{
    HWND hWnd = ::GetDlgItem(dlg-&gt;GetSafeHwnd(), id);

    if (hWnd != NULL)
        ::EnableWindow(hWnd, bEnable);
}
</code></pre>
<p>Damit sehen die Aufrufe dann so aus:</p>
<pre><code class="language-cpp">EnableDlgItem(this, IDC_Y5_A, g &gt; 2); 
EnableDlgItem(this, IDC_Y5_B, g &gt; 2);
</code></pre>
<p>Die Funktion kann natürlich auch Memberfunktion des Dialoges sein, dann spart man sich auch noch den Parameter dlg. Wichtig sind dann aber auf jeden Fall die <strong>::</strong> vor <strong>GetDlgItem</strong> und <strong>EnableWindow</strong>, damit sichergestellt ist, dass die API-Funktionen und nicht die Memberfunktionen gemeint sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/573138</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/573138</guid><dc:creator><![CDATA[Uwe Philipps]]></dc:creator><pubDate>Mon, 02 Aug 2004 09:02:19 GMT</pubDate></item><item><title><![CDATA[Reply to Editfelder deaktivieren! on Mon, 02 Aug 2004 09:17:03 GMT]]></title><description><![CDATA[<p>@uwe</p>
<p>den this Zeiger kannste auch sparen, weil du kommst ja mit GetParent() zum Dialog.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/573151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/573151</guid><dc:creator><![CDATA[fffffff]]></dc:creator><pubDate>Mon, 02 Aug 2004 09:17:03 GMT</pubDate></item><item><title><![CDATA[Reply to Editfelder deaktivieren! on Mon, 02 Aug 2004 09:30:12 GMT]]></title><description><![CDATA[<p>Hallo fffffff (heißt du wirklich so?)</p>
<p>So wie <strong>EnableDlgItem</strong> geschrieben ist, ist es kein Memberfunktion von einem Dialog. Der Zeiger auf den Dialog muss also übergeben werden. Auf diese Weise kann die Funktion auch für andere Dialoge verwendet werden.</p>
<p>Und, ja - da hast du recht, wenn <strong>EnableDlgItem</strong> Member des Dialoges ist, kann man den this-Zeiger weglassen (habe ich aber auch im letzten Absatz geschrieben). Aber dann nutzt mir <strong>GetParent</strong> nichts, weil ich ja schon im Dialog bin:</p>
<pre><code class="language-cpp">void CMyDlg::EnableDlgItem(int id, BOOL bEnable)
{
    HWND hWnd = ::GetDlgItem(GetSafeHwnd(), id);

    if (hWnd != NULL)
        ::EnableWindow(hWnd, bEnable);
}
...
    EnableDlgItem(IDC_Y5_A, g &gt; 2); 
    EnableDlgItem(IDC_Y5_B, g &gt; 2);
</code></pre>
<p>Am praktischsten ist es natürlich einen Basisdialog zu definieren, von dem alle Dialoge einer Applikation abgeleitet werden. Das lohnt sich schon bei kleinen Projekten, weil ja beispielsweise <strong>EnableDlgItem</strong> sehr häufig benötigt wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/573161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/573161</guid><dc:creator><![CDATA[Uwe Philipps]]></dc:creator><pubDate>Mon, 02 Aug 2004 09:30:12 GMT</pubDate></item><item><title><![CDATA[Reply to Editfelder deaktivieren! on Mon, 02 Aug 2004 11:21:19 GMT]]></title><description><![CDATA[<p>Brauchst ja nur eine Klasse erstellen die von CDialog erbt. Stat CDialog für deine Dialog nimmst du dann eben deine neue Klasse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/573273</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/573273</guid><dc:creator><![CDATA[Unix-Tom]]></dc:creator><pubDate>Mon, 02 Aug 2004 11:21:19 GMT</pubDate></item></channel></rss>