<?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[Gruppenfeld]]></title><description><![CDATA[<p>Hallo zusammen.</p>
<p>Habe ein kleines prob. mit einem Gruppenfeld. Ich habe ein Gruppenfeld mit<br />
ein paar Optionsfeldern drin. Habe im Gruppenfeld &quot;Gruppe&quot; angeklickt und habe dem Gruppenfeld eine Steuervariable CButton zugeordnet. Jetzt möchte ich das komplette<br />
Gruppenfeld inclusive Optionsfelder bei bedarf mit ShowWindow sichtbar oder unsichtbar machen. wie kann ich das in einen aufwand machen? oder muss ich für jedes Optionsfeld einzeln ShowWindow aufrufen also auch genausoviele CButton erzeuge? Wobei das meine ich nicht geht da ich ja pro Gruppe nur eine Variable zuordnen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/154024/gruppenfeld</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Jul 2026 13:53:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/154024.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 23 Jul 2006 16:57:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Gruppenfeld on Sun, 23 Jul 2006 16:57:51 GMT]]></title><description><![CDATA[<p>Hallo zusammen.</p>
<p>Habe ein kleines prob. mit einem Gruppenfeld. Ich habe ein Gruppenfeld mit<br />
ein paar Optionsfeldern drin. Habe im Gruppenfeld &quot;Gruppe&quot; angeklickt und habe dem Gruppenfeld eine Steuervariable CButton zugeordnet. Jetzt möchte ich das komplette<br />
Gruppenfeld inclusive Optionsfelder bei bedarf mit ShowWindow sichtbar oder unsichtbar machen. wie kann ich das in einen aufwand machen? oder muss ich für jedes Optionsfeld einzeln ShowWindow aufrufen also auch genausoviele CButton erzeuge? Wobei das meine ich nicht geht da ich ja pro Gruppe nur eine Variable zuordnen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1102673</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1102673</guid><dc:creator><![CDATA[TomTom85]]></dc:creator><pubDate>Sun, 23 Jul 2006 16:57:51 GMT</pubDate></item><item><title><![CDATA[Reply to Gruppenfeld on Mon, 24 Jul 2006 08:51:39 GMT]]></title><description><![CDATA[<p>Weiß das wirklich niemand????</p>
<p>mfg Tom</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1102960</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1102960</guid><dc:creator><![CDATA[TomTom85]]></dc:creator><pubDate>Mon, 24 Jul 2006 08:51:39 GMT</pubDate></item><item><title><![CDATA[Reply to Gruppenfeld on Tue, 25 Jul 2006 14:02:39 GMT]]></title><description><![CDATA[<p>Ein Trippel Hinweise (vgl. ein Paar (=2) Hinweise) °~&gt;<br />
<em><strong>1.</strong></em><br />
Es gibt die Funktion</p>
<pre><code>GetDialogItem
</code></pre>
<p>,<br />
mit der man die einzelnen Steuerelemente<br />
anhand der ID ansprechen kann, ohne<br />
Variablen zu erstellen:</p>
<pre><code class="language-cpp">/*  Optional:
this-&gt;       */
    GetDialogItem( IDC_BUTTON1 );
</code></pre>
<p><em><strong>2.</strong></em><br />
Wenn du das Gruppenfeld unsichtbar machst,<br />
verschwinden nicht die Optionsfelder, die<br />
angeblich auf ihm plaziert sind.<br />
Denn alle sinjd sozusagen auf gleicher<br />
Ebene.<br />
Um dies zu verändern, muss man viele Ein-<br />
Stellungen ändern, und das bei jedem<br />
Optionsefeld einzeln:<br />
<strong>Schritt 1:</strong></p>
<pre><code class="language-cpp">// Man muss alle Steuerelemte dem Gruppenfeld
//  unterorndnen:
/*  Optional:
this-&gt;       */
    GetDlgItem(/* Optionsfeld-ID */)-&gt;
        SetParent(
            GetDlgItem(/* Gruppenfeld-ID */));
...
</code></pre>
<p><strong>Schritt 2:</strong></p>
<pre><code class="language-cpp">// Man muss alle Steuerelemte verschieben, da
//  der Koorinatenursprung (wo x=0 und y=0 ist)
//  Dialogfeldes ungleich dem des Gruppenfeldes
//  ist (meißt oben links in der Ecke).
CRect rGrp, // Größe des Gruppenfeldes
      rOpt; // Größe des Optionsefeldes

/*  Optional:
this-&gt;       */
    GetDlgItem(/* Gruppenfeld-ID */)-&gt;
        GetWindowRect( rGrp );

    GetDlgItem(/* Optionsfeld-ID */)-&gt;
        GetWindowRect( rOpt );

    GetDlgItem(/* Optionsfeld-ID */)-&gt;
        SetWindowRect( rOpt - rGrp ); // &lt;- Hier bin ich mir nicht so sicher
...
</code></pre>
<p><strong>Schritt 3:</strong></p>
<pre><code class="language-cpp">// Man muss jedes Steuerelement informieren, dass
//  sich was getan hat.
    GetDlgItem(/* Gruppenfeld-ID */)-&gt;
        UpdateWindow();

    GetDlgItem(/* Optionsfeld-ID */)-&gt;
        UpdateWindow();
...
</code></pre>
<p><em><strong>3.</strong></em><br />
Ich würde alle ID in einem Array speichern<br />
und dann jedes Optionsfeld einzelnd<br />
mithilfe einer For-Schleife abklappern<br />
&quot;abklappern&quot;.</p>
<p>Ich Entschuldige mich schon einmal vorweg<br />
für die Die Rechtschreib-, Syntax- und oder oder logische Fehler.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1103894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1103894</guid><dc:creator><![CDATA[denNis++]]></dc:creator><pubDate>Tue, 25 Jul 2006 14:02:39 GMT</pubDate></item><item><title><![CDATA[Reply to Gruppenfeld on Thu, 27 Jul 2006 09:51:02 GMT]]></title><description><![CDATA[<p>Oder etwas in der Art:</p>
<pre><code>void EnableWindowGroup(HWND hwnd, int enable)
{
	// Find first window of group
	while (hwnd &amp;&amp; !(::GetWindowLong(hwnd,GWL_STYLE) &amp; WS_GROUP))
            hwnd = ::GetWindow(hwnd, GW_HWNDPREV);

	if (!hwnd) {
	    ASSERT(FALSE); 
            return;
	}

	// Perform operation for all windows of this group
	do {
	    if (!enable) {
		::EnableWindow(hwnd, FALSE); ::ShowWindow(hwnd, SW_SHOW);
	    }
	    else if (enable &gt; 0) {
		::EnableWindow(hwnd, TRUE);  ::ShowWindow(hwnd, SW_SHOW);
	    }
	    else {
		::ShowWindow(hwnd, SW_HIDE); ::EnableWindow(hwnd, FALSE);
	    }
	    // Cannot use GetNextDlgGroupItem() here,
	    // because hidden windows are skipped by Windows.
	    hwnd = ::GetWindow(hwnd,GW_HWNDNEXT);
	} while (hwnd &amp;&amp; !(::GetWindowLong(hwnd,GWL_STYLE) &amp; WS_GROUP));
}
</code></pre>
<p>und an das HWND eines CWnd kommst Du ja über dessen Membervariable m_hWnd</p>
<p>P.S: Sorry, die Formatierung ist leider etwas aus dem Tritt geraten, da ich hier ne Tabsize von 4 eingestellt habe.</p>
<p>P.P.S: Sowas sollte man eigentlich in die FAQ packen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1105063</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1105063</guid><dc:creator><![CDATA[jencas]]></dc:creator><pubDate>Thu, 27 Jul 2006 09:51:02 GMT</pubDate></item></channel></rss>