<?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[Wert aus CEdit bekommen]]></title><description><![CDATA[<p>Hallo Leute,<br />
ich habe ein Dialog OHNE den Anwendungsassistenten erstellt da ich ziemlich häufig ein CEdit Element benötige und ich mir dachte, mit ein paar for Schleifen ist das schnell erledigt. Daher Habe ich dem Dialog eine Membervariable für ein CEdit-Array verpast und im Konstruktor erzeuge ich Sie dann dynamisch</p>
<pre><code class="language-cpp">DialogEingabeDynamisch::DialogEingabeDynamisch(CWnd* pParent /*=NULL*/)
	: CDialog(DialogEingabeDynamisch::IDD, pParent)
{
	int i;

	for ( i = 0; i &lt; ANZAHL; i++ )
		this-&gt;m_pEditArray[i] = new CEdit;
}
</code></pre>
<p>In der <strong>OnInitDialog()</strong>-Methode rufe ich dann <strong>Create</strong> auf um die Objekte zu erzeugen. Das funktioniert auch wunderbar. Nun möchte ich aber mal zu Testzwecken on der <strong>OnOK</strong>-Mezhode sehen ob überhaupt die Werte enthalten sind die ich eingegeben habe. Dafür habe ich zwei Varianten gefunden</p>
<p>1.:</p>
<pre><code class="language-cpp">for (int i = 0; i &lt; ANZAHL; i++ )
    nEingegbenenerWert = this-&gt;m_pEditArray[i]-&gt;GetDlgItemInt(i+MYDEFINE);
</code></pre>
<p>Es wird aber immer nur 0 zurückgegeben obwohl ich nicht 0 eingegeben habe.</p>
<p>2.:</p>
<pre><code class="language-cpp">LPTSTR str;
this-&gt;m_pEditArray[i]-&gt;GetLine(0, str);
</code></pre>
<p>Da gibt es zur Laufzeit einen Fahler</p>
<pre><code>Unbehandelte Ausnahme bei 0x77d33523 in MeinProg.exe: 0xC0000005: Zugriffsverletzung-Schreibposition 0x00426230.
</code></pre>
<p>Der hängt wohl mit dem LPTSTR str zusammen, aber ich weiss nicht warum.</p>
<p>Kann mir jemand einen Tipp geben wie ich nun die Werte aus meinen Editfeldern bekomme?</p>
<p>Danke im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/156126/wert-aus-cedit-bekommen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 26 Jul 2026 09:31:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/156126.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 13 Aug 2006 17:28:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wert aus CEdit bekommen on Sun, 13 Aug 2006 17:28:47 GMT]]></title><description><![CDATA[<p>Hallo Leute,<br />
ich habe ein Dialog OHNE den Anwendungsassistenten erstellt da ich ziemlich häufig ein CEdit Element benötige und ich mir dachte, mit ein paar for Schleifen ist das schnell erledigt. Daher Habe ich dem Dialog eine Membervariable für ein CEdit-Array verpast und im Konstruktor erzeuge ich Sie dann dynamisch</p>
<pre><code class="language-cpp">DialogEingabeDynamisch::DialogEingabeDynamisch(CWnd* pParent /*=NULL*/)
	: CDialog(DialogEingabeDynamisch::IDD, pParent)
{
	int i;

	for ( i = 0; i &lt; ANZAHL; i++ )
		this-&gt;m_pEditArray[i] = new CEdit;
}
</code></pre>
<p>In der <strong>OnInitDialog()</strong>-Methode rufe ich dann <strong>Create</strong> auf um die Objekte zu erzeugen. Das funktioniert auch wunderbar. Nun möchte ich aber mal zu Testzwecken on der <strong>OnOK</strong>-Mezhode sehen ob überhaupt die Werte enthalten sind die ich eingegeben habe. Dafür habe ich zwei Varianten gefunden</p>
<p>1.:</p>
<pre><code class="language-cpp">for (int i = 0; i &lt; ANZAHL; i++ )
    nEingegbenenerWert = this-&gt;m_pEditArray[i]-&gt;GetDlgItemInt(i+MYDEFINE);
</code></pre>
<p>Es wird aber immer nur 0 zurückgegeben obwohl ich nicht 0 eingegeben habe.</p>
<p>2.:</p>
<pre><code class="language-cpp">LPTSTR str;
this-&gt;m_pEditArray[i]-&gt;GetLine(0, str);
</code></pre>
<p>Da gibt es zur Laufzeit einen Fahler</p>
<pre><code>Unbehandelte Ausnahme bei 0x77d33523 in MeinProg.exe: 0xC0000005: Zugriffsverletzung-Schreibposition 0x00426230.
</code></pre>
<p>Der hängt wohl mit dem LPTSTR str zusammen, aber ich weiss nicht warum.</p>
<p>Kann mir jemand einen Tipp geben wie ich nun die Werte aus meinen Editfeldern bekomme?</p>
<p>Danke im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1116589</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1116589</guid><dc:creator><![CDATA[jeanfischer]]></dc:creator><pubDate>Sun, 13 Aug 2006 17:28:47 GMT</pubDate></item><item><title><![CDATA[Reply to Wert aus CEdit bekommen on Sun, 13 Aug 2006 18:18:20 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int nValue;
CString strText;
for(int i = 0; i &lt; ANZAHL; ++i)
{
    m_pEditArray[i]-&gt;GetWindowText(strText); // Holt den Text.
    nValue = atoi(strText);                  // Verwandelt den Text in Integer.

    // Weitere Verwendung von nValue.
}
</code></pre>
<p>Gäbe aber gerade für die OnOk Methode noch eine besser Lösung, wodurch du auch nicht atoi aufrufen musst, um den Text in Integer umzuwandeln.</p>
<pre><code class="language-cpp">CMyDialog : public CDialog
{
    // ...
private:
    int* m_pEditIntegers;
    // ...
}

CMyDialog::CMyDialog(CWnd* pParent /*=NULL*/)
    : CDialog(CMyDialog::IDD, pParent)
{
    m_pEditIntegers = new int[ANZAHL];
}

CMyDialog::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExChange(pDX);

    // Zu beachten ist, dass deine Edits die IDs hintereinander haben. Also zum Beispiel:
    // Deine Edit IDs sind von 100 bis 100 + ANZAHL.
    for(int i = 0; i &lt; ANZAHL; ++i)
    { DDX_Text(pDX, IDC_EDITONE + i, m_pEditIntegers[i]); }
}

CMyDialog::OnOK()
{
    CDialog::OnOK();

    // Da in CDialog::OnOK() UpdateData(TRUE) ausgeführt wird, hast du hier bereits alle Integer im Array.
}
</code></pre>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1116613</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1116613</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 13 Aug 2006 18:18:20 GMT</pubDate></item><item><title><![CDATA[Reply to Wert aus CEdit bekommen on Sun, 13 Aug 2006 19:37:47 GMT]]></title><description><![CDATA[<p>Danke <strong>Dravere</strong>,<br />
aber leider funktioniert dein 1. Vorschlag nicht. <strong>atoi</strong> gibt immer 0 zurück. Habs mit und ohne <strong>UpdateData(...)</strong> versucht. Bringt nichts <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="😞"
    /><br />
Dein 2. Vorschlag schein interessant zu sein. Allerdings weiss ich nicht genau wie ich die Steuerelemente registrieren soll.<br />
Ist DDX_TEXT da überhaupt das richtige Makro? Handelt sich doch um ints.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1116653</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1116653</guid><dc:creator><![CDATA[jeanfischer]]></dc:creator><pubDate>Sun, 13 Aug 2006 19:37:47 GMT</pubDate></item><item><title><![CDATA[Reply to Wert aus CEdit bekommen on Sun, 13 Aug 2006 19:44:52 GMT]]></title><description><![CDATA[<p>naja wenn atoi immer null zurück gibt dann erreichst du den test im Editfeld nicht.</p>
<p>du könntest es mal mit GetDlgItemText versuchen sofern ich dich richtig versteh und m_pEditArray ne ansamlung von IDC_EDITS beherbergt.</p>
<pre><code>for(int i = 0; i &lt; ANZAHL; ++i)
{
    GetDlgItemText(m_pEditArray[i],strText);
    nValue = atoi(strText);                  
}
</code></pre>
<p>mfg<br />
LowFly</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1116658</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1116658</guid><dc:creator><![CDATA[LowFly]]></dc:creator><pubDate>Sun, 13 Aug 2006 19:44:52 GMT</pubDate></item><item><title><![CDATA[Reply to Wert aus CEdit bekommen on Sun, 13 Aug 2006 20:01:27 GMT]]></title><description><![CDATA[<p>Hmm steht das Edit auf Number? Guck ob das Edit existiert... sonnst kackt die Anwendung ab. Usw usf...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1116664</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1116664</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sun, 13 Aug 2006 20:01:27 GMT</pubDate></item><item><title><![CDATA[Reply to Wert aus CEdit bekommen on Sun, 13 Aug 2006 22:52:00 GMT]]></title><description><![CDATA[<p>jeanfischer schrieb:</p>
<blockquote>
<p>Danke <strong>Dravere</strong>,<br />
aber leider funktioniert dein 1. Vorschlag nicht. <strong>atoi</strong> gibt immer 0 zurück.</p>
</blockquote>
<p>Wenn atoi 0 zurückgibt, dann ist entweder die Zahl 0 oder ein Fehler im String. z.b. a043 ergibt 0. Während 045a 45 ergibt. Auch ist zu beachten, dass atoi nur ganze Zahlen umwandeln kann. Für Kommastellen sollte man eher atof nehmen. Wobei dann zu beachten ist, dass man den Punkt '.' für das Trennzeichen nimmt und nicht das Komma ','.</p>
<p>jeanfischer schrieb:</p>
<blockquote>
<p>Habs mit und ohne <strong>UpdateData(...)</strong> versucht. Bringt nichts <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>
</blockquote>
<p>Bei GetWindowText muss man kein UpdateData aufrufen. Da greift man direkt drauf zu.</p>
<p>jeanfischer schrieb:</p>
<blockquote>
<p>Dein 2. Vorschlag scheint interessant zu sein. Allerdings weiss ich nicht genau wie ich die Steuerelemente registrieren soll.</p>
</blockquote>
<pre><code class="language-cpp">CEdit::Create(DWORD dwStyle, const RECT&amp; rect, CWnd* pParentWnd, UINT nID)
</code></pre>
<p>Mit der Zahl bei nID. In deinen Resourcen kannst du IDs registrieren. Die kannst du bei nID dann setzen. Um eine ID zu registrieren gehst du (Bei VS2003) auf die Resourcen und rechtsklickst den Ordner mit dem Namen deines Projekts. Dort steht dann irgendwo ein ID= und daneben Resource Symbols. Draufklicken. Und dort kannst du mit New neue IDs registrieren. Diese sollten dann eben hintereinander liegen, um das zweite Beispiel Funktionstüchtig zu machen.</p>
<p>jeanfischer schrieb:</p>
<blockquote>
<p>Ist DDX_TEXT da überhaupt das richtige Makro? Handelt sich doch um ints.</p>
</blockquote>
<p>Nein ... DDX_Text ist das richtige ^^<br />
Mit DDX_Text kannst du alles holen. Von Ints über Strings bis zu COleDateTime's. Schau dir es mal in der MSDN an <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>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1116705</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1116705</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 13 Aug 2006 22:52:00 GMT</pubDate></item><item><title><![CDATA[Reply to Wert aus CEdit bekommen on Mon, 14 Aug 2006 20:16:53 GMT]]></title><description><![CDATA[<p>Hey Leute, danke für Eure Antworten, funktionieren tut das Ganze aber noch immer NICHT!</p>
<pre><code class="language-cpp">for(int i = 0; i &lt; ANZAHL; ++i)
{
    GetDlgItemText(m_pEditArray[i],strText);
    nValue = atoi(strText);                  
}
</code></pre>
<p>bringt nichts. Die Werte in den Feldern sind eingegeben und der String ist immer <strong>&quot;&quot;</strong>, so kann <strong>atoi</strong> auch keinen Wert heraus ziehen.</p>
<p>Ich glaube ich habe das Problem falsch beschrieben. Daher probiere ich es noch einmal genauer zu formulieren.</p>
<ul>
<li>Ich habe der Header-Datei eine Private Membervariable hinzugefügt mit der Bezeichnung *<em>CEdit <em>m_pEditArray[ANZAHL];</em></em></li>
<li>Im Konstruktor habe ich den CEdit-Pointer wie folgt initialisiert</li>
</ul>
<pre><code class="language-cpp">for ( int i = 0; i &lt; ANZAHL; i++ )
    this-&gt;m_pEditArray[i] = new CEdit;
</code></pre>
<ul>
<li>In <strong>OnInitDialog()</strong> habe ich alle mit <strong>new</strong> erzeugten CEdit Objekte mit [n]Create[/b] initialisiert</li>
</ul>
<pre><code class="language-cpp">for ( int i= 0; i &lt; ANZAHL; i++ )
    this-&gt;m_pEditArray[i]-&gt;Create(WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER, 
        CRect(nLocHor*60+nGlobHor*200+10,nLocVert*15+nGlobVert*65+10, 50,10),
        this,
        i+ID_STARTPUNKT);
</code></pre>
<ul>
<li>Nun bin ich der Meinung sind die CEdit Objekte bereit verwendet zu werden. D.H. Meiner Meinung nach kann ich jetzt in der <strong>OnOK</strong>-Methode die Werte Abfragen, aber nix passiert.</li>
</ul>
<p>Langsam habe ich das Gefühl das ich irgend einen Wichtigen Schritt vergessen habe um mit den Steuerelemnten arbeiten zu können. Aber ich habe genau den Weg der da oben steht beschritten und alle Methoden die eigentlich den Text aus den Felder bekommen sollten scheitern. Muss man noch irgend etwas beachten wenn man Steuerelemente OHNE Assistenten erstellen möchte <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>PS: muss ich eigentlich die CEdit Objekte im Destruktor oder in <strong>OnDestroy</strong> mir <strong>delete</strong> löschen? Und worin liegt der Unterschied?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1117257</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1117257</guid><dc:creator><![CDATA[jeanfischer]]></dc:creator><pubDate>Mon, 14 Aug 2006 20:16:53 GMT</pubDate></item><item><title><![CDATA[Reply to Wert aus CEdit bekommen on Mon, 14 Aug 2006 22:27:17 GMT]]></title><description><![CDATA[<p>jeanfischer schrieb:</p>
<blockquote>
<p>Hey Leute, danke für Eure Antworten, funktionieren tut das Ganze aber noch immer NICHT!</p>
<pre><code class="language-cpp">for(int i = 0; i &lt; ANZAHL; ++i)
{
    GetDlgItemText(m_pEditArray[i],strText);
    nValue = atoi(strText);                  
}
</code></pre>
</blockquote>
<p>Der Code ist ja auch falsch. Das der überhaupt funktioniert erstaunt mich, bzw. das da keine Warnmeldung kommt.<br />
Probiers mal so:</p>
<pre><code class="language-cpp">for(int i = 0; i &lt; ANZAHL; ++i)
{
    m_pEditArray[i]-&gt;GetWindowText(strText);
    nValue = atoi(strText);                  
}
</code></pre>
<p>jeanfischer schrieb:</p>
<blockquote>
<p>PS: muss ich eigentlich die CEdit Objekte im Destruktor oder in <strong>OnDestroy</strong> mir <strong>delete</strong> löschen? Und worin liegt der Unterschied?</p>
</blockquote>
<p>Jo im D'tor solltest du die CEdits schon mit delete löschen. Mit new reservierst du dir ja Speicher auf dem Heap für die CEdits. Die muss man in C++ selber wieder freigeben, sonst entstehen speicherlecks.<br />
Also:</p>
<pre><code class="language-cpp">// Im Destruktor
for(int i = 0; i &lt; ANZAHL; ++i)
{ delete m_pEditArray[i]; }
</code></pre>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1117299</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1117299</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Mon, 14 Aug 2006 22:27:17 GMT</pubDate></item><item><title><![CDATA[Reply to Wert aus CEdit bekommen on Mon, 14 Aug 2006 22:42:31 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9752">@Dravere</a><br />
naja der code ist nicht unbedingt falsch denn wenn du mal meine annahme list, so sagte ich</p>
<p>LowFly schrieb:</p>
<blockquote>
<p>sofern ich dich richtig versteh und m_pEditArray ne ansamlung von <strong>IDC_EDITS</strong> beherbergt</p>
</blockquote>
<p>ist der code VOLLKOMMEN RICHTIG denn so verwende ich ihn auch zwar in einem anderen zusammenhang aber das spielt keine rolle <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>leider hab ich ihn falsch verstanden und es kann so sicher nicht funzen <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>aber nix für ungut<br />
mfg<br />
LowFly</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1117302</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1117302</guid><dc:creator><![CDATA[LowFly]]></dc:creator><pubDate>Mon, 14 Aug 2006 22:42:31 GMT</pubDate></item><item><title><![CDATA[Reply to Wert aus CEdit bekommen on Sat, 19 Aug 2006 09:06:00 GMT]]></title><description><![CDATA[<p>Hallo Dravere,<br />
der Code</p>
<pre><code class="language-cpp">for(int i = 0; i &lt; ANZAHL; ++i)
{
    m_pEditArray[i]-&gt;GetWindowText(strText);
    nValue = atoi(strText);                  
}
</code></pre>
<p>läuft zwar durch, aber er gibt mir nicht den Inhalt der Editfelder zurück. Es wird immer &quot;&quot; zurückgegeben. Wenn du schon mal soetwas ähnliches gemacht hast, kannst du davon den Code posten (Natürlich dürfen andere auch <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>Danke!</p>
<p>PS: ich habe jetzt mal etwas anderes versucht. Nachdem ich die Felder in der <strong>OnInitDialog</strong>-Methode erzeugt habe, habe ich versucht mit SetWindowText mit text zu füllen. Aber die Felder sind leer geblieben! Also ich denke noch immer ich mache etwas grundlegendes falsch!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1120134</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1120134</guid><dc:creator><![CDATA[jeanfischer]]></dc:creator><pubDate>Sat, 19 Aug 2006 09:06:00 GMT</pubDate></item><item><title><![CDATA[Reply to Wert aus CEdit bekommen on Sat, 19 Aug 2006 10:23:48 GMT]]></title><description><![CDATA[<p>Also ich hab mal schnell was nachgebaut und bei mir funktioniert es. Ich schreib mal den Code hier rein.</p>
<pre><code class="language-cpp">// TestDlg.h
//
#pragma once

// CTestDlg dialog

class CTestDlg : public CDialog
{
	DECLARE_DYNAMIC(CTestDlg)

public:
	CTestDlg(CWnd* pParent = NULL);   // standard constructor
	virtual ~CTestDlg();

// Dialog Data
	enum { IDD = IDD_DIALOG1 };

protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support

	DECLARE_MESSAGE_MAP()
private:
	CEdit* m_EditArray;

public:
	virtual BOOL OnInitDialog();
	afx_msg void OnBnClickedOk();
};
</code></pre>
<pre><code class="language-cpp">// TestDlg.cpp : implementation file
//

#include &quot;stdafx.h&quot;
#include &quot;TestDlg.h&quot;

// CTestDlg dialog

IMPLEMENT_DYNAMIC(CTestDlg, CDialog)
CTestDlg::CTestDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CTestDlg::IDD, pParent)
{
	m_EditArray = new CEdit[81];
}

CTestDlg::~CTestDlg()
{
	for(int i = 0; i &lt; 81; ++i)
	{ delete m_EditArray[i]; }
}

void CTestDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
	ON_BN_CLICKED(IDOK, OnBnClickedOk)
END_MESSAGE_MAP()

// CTestDlg message handlers

BOOL CTestDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	CRect rect(30, 30, 60, 60);
	int nWidth = rect.Width();
	int nHeight = rect.Height();

	for(int i = 0; i &lt; 81; ++i)
	{
		if(!(i % 9) &amp;&amp; i != 0)
		{
			rect.left -= 8 * nWidth;
			rect.right -= 8 * nWidth;
			rect.top += nHeight;
			rect.bottom += nHeight;
		}
		else
		{
			rect.left += nWidth;
			rect.right += nWidth;
		}

		m_EditArray[i].Create(ES_LEFT | WS_VISIBLE | WS_CHILD | WS_BORDER | WS_TABSTOP,
							  rect, this, IDC_EDIT_START + i);
	}

	return TRUE;  // return TRUE unless you set the focus to a control
	// EXCEPTION: OCX Property Pages should return FALSE
}

void CTestDlg::OnBnClickedOk()
{
	CString strText[81];

	for(int i = 0; i &lt; 81; ++i)
	{ m_EditArray[i].GetWindowText(strText[i]); }

	for(int i = 0; i &lt; 81; ++i)
	{ AfxMessageBox(strText[i], MB_OK, 0); }

	OnOK();
}
</code></pre>
<p>Das ganze ist jetzt nur so dahin gepfuscht, vor allem z.b bei !(i % 9). ^^<br />
Aber es funktioniert. Man kann schön die Quadrate mit dem Tabulator durchlaufen und eines nach dem anderen füllen. Und am Ende, wenn man auf OK drückt, bekommt man 81 Messageboxen, mit dem jeweiligen Inhalt des Edits.</p>
<p>Das ist nun die Version mit den Ctrls. Also mit CEdits. Und sogar selber erstellt. Ich habe hier noch ein Beispiel mit den Value-Variablen und nicht selbst erstellten Edits. Bzw. per Dialog-Editor erstellt. Also einfach nicht mit Create ^^</p>
<pre><code class="language-cpp">// SLDKDlg.h : Headerdatei
//
#pragma once

// CSLDKDlg Dialogfeld
class CSLDKDlg : public CDialog
{
// Konstruktion
public:
	CSLDKDlg(CWnd* pParent = NULL);	// Standardkonstruktor

	DECLARE_DYNAMIC(CSLDKDlg);

// Dialogfelddaten
	enum { IDD = IDD_SOLUDOKU_DIALOG };

protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV-Unterstützung

	// Attribute //
public:
	static const int nEDITCOUNT = 81;
	static const int nROWCOLCOUNT = 9;

// Implementierung
protected:
	HICON m_hIcon;

	// Generierte Funktionen für die Meldungstabellen

	virtual BOOL OnInitDialog();

	DECLARE_MESSAGE_MAP()
private:
	CString m_strEdit[nROWCOLCOUNT][nROWCOLCOUNT];
	CEdit m_ctrlEdit[nROWCOLCOUNT][nROWCOLCOUNT];
};
</code></pre>
<pre><code class="language-cpp">// SLDKDlg.cpp : Implementierungsdatei
//

#include &quot;stdafx.h&quot;
#include &quot;SLDKDlg.h&quot;

// CSLDKDlg Dialogfeld

IMPLEMENT_DYNAMIC(CSLDKDlg, CDialog)

CSLDKDlg::CSLDKDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CSLDKDlg::IDD, pParent)
{
	for(int c = 0; c &lt; nROWCOLCOUNT; c++)
	{
		for(int r = 0; r &lt; nROWCOLCOUNT; r++)
		{
			m_strEdit[r][c] = _T(&quot;&quot;);
			m_strTempEdit[r][c] = _T(&quot;&quot;);
		}
	}
}

void CSLDKDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);

	for(int c = 0; c &lt; nROWCOLCOUNT; c++)
	{
		for(int r = 0; r &lt; nROWCOLCOUNT; r++)
		{
			DDX_Text(pDX, (IDC_EDIT1 + ((c * nROWCOLCOUNT) + r)), m_strEdit[r][c]);
			DDX_Control(pDX, (IDC_EDIT1 + ((c * nROWCOLCOUNT) + r)), m_ctrlEdit[r][c]);
		}
	}
}

BEGIN_MESSAGE_MAP(CSLDKDlg, CDialog)
END_MESSAGE_MAP()
</code></pre>
<p>Das ist ein altes Projekt von mir. Daher habe ich einiges rausgekürzt und nur das allerwichtigste da gelassen. Wenn man in diesem Dialog nun UpdateData(TRUE), bwz. FALSE, aufruft, dann werden alle Daten aus den Edits in das 2D Array m_strEdit gespeichert oder geladen.<br />
Das ist wie gesagt mit Edits gemacht, welche ich im Dialog-Editor dazufgefügt habe. IDC_EDIT1 bis IDC_EDIT81 sind als Nummern auch wirklich hintereinander, dafür habe ich gesorgt. IDC_EDIT1 ist in dem Fall 1000 und IDC_EDIT81 1080.</p>
<p>So ich hoffe, dass dies dir nun weiterhelfen wird.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1120175</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1120175</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sat, 19 Aug 2006 10:23:48 GMT</pubDate></item><item><title><![CDATA[Reply to Wert aus CEdit bekommen on Sat, 19 Aug 2006 10:51:01 GMT]]></title><description><![CDATA[<p>DANKE!!! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Der einzige Unterschied zwischen deinem und meinem Code ist das du im <strong>Create</strong> Aufruf nuch ein <strong>ES_LEFT |</strong> drin hast!</p>
<p>Aber nun Funzt es!</p>
<p>Also noch mal einen herzlichen Dank!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1120191</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1120191</guid><dc:creator><![CDATA[jeanfischer]]></dc:creator><pubDate>Sat, 19 Aug 2006 10:51:01 GMT</pubDate></item></channel></rss>