<?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[Daten werden beim schließen des Dialoges nicht gespeichert]]></title><description><![CDATA[<p>Ich habe einen Dialog CTestDlg, welcher für jedes Element eine Variable hat um<br />
den Wert zu speichern (hab ich im Ressourceneditor über Membervariable hinzufügen<br />
hinzugefügt). Wenn ich jedoch nach schließen des Dialoges die Werte in einer<br />
MessageBox ausgebe sind die Werte alle nicht initialisiert. Nun stellt sich mir<br />
die Frage woran das liegt, da laut meinem Buch die Funktio DoDataExchange von<br />
der MFC automatisch beim schließen des Dialoges aufgerufen wird.</p>
<p>Ich weiß nicht was ihr so an Code braucht, ich gebe euch mal ein paar Auszüge:</p>
<pre><code class="language-cpp">// Die Deklaration von CTestDlg
#pragma once
#include &quot;resource.h&quot;

// CTestDlg-Dialogfeld

class CTestDlg : public CDialog
{
	DECLARE_DYNAMIC(CTestDlg)

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

// Dialogfelddaten
	enum { IDD = IDD_DIALOG1 };

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

	DECLARE_MESSAGE_MAP()
public:
	virtual BOOL OnInitDialog();
	afx_msg void OnEnChangeEdit1();
	CString m_Edit1;
	afx_msg void OnBnClickedCheck1();
	afx_msg void OnBnClickedRadio1();
	afx_msg void OnBnClickedRadio2();
	afx_msg void OnBnClickedRadio3();
	BOOL m_Check1;
	int m_Radio1;
	afx_msg void OnLbnSelchangeList1();
	afx_msg void OnCbnSelchangeCombo1();
	afx_msg void OnCbnEditchangeCombo1();
	CString m_Combo1;
	CString m_List1;
	afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
	afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
	int m_Scrollbar1;
	int m_Scrollbar2;
	afx_msg void OnBnClickedButton1();
};
</code></pre>
<pre><code class="language-cpp">// Definition von DoDataExchange
oid CTestDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Text(pDX, IDC_EDIT1, m_Edit1);
	DDX_Check(pDX, IDC_CHECK1, m_Check1);
	DDX_Radio(pDX, IDC_RADIO1, m_Radio1);
	DDX_CBString(pDX, IDC_COMBO1, m_Combo1);
	DDX_LBString(pDX, IDC_LIST1, m_List1);
	DDX_Scroll(pDX, IDC_SCROLLBAR1, m_Scrollbar1);
	DDX_Scroll(pDX, IDC_SCROLLBAR2, m_Scrollbar2);
}
</code></pre>
<pre><code class="language-cpp">// Der Aufrufende Code des Dialoges, aus CChildView
void CChildView::OnEigeneTestdialoganzeigen()
{
	CTestDlg dlg;
	dlg.DoModal ();

	CString strMsg;
	strMsg.Format (
		&quot;Kontrollkästchen: %d\n&quot;
		&quot;Kombinationsfeld: %s\n&quot;
		&quot;Listenfeld: %s\n&quot;
		&quot;Eingabefeld: %s\n&quot;
		&quot;Optionsgruppe: %d\n&quot;
		&quot;Horizontale Bildlaufleiste: %d\n&quot;
		&quot;Vertikale Bildlaufleiste: %d\n&quot;,
		dlg.m_Check1, dlg.m_Combo1, dlg.m_List1,
		dlg.m_Edit1, dlg.m_Radio1,
		dlg.m_Scrollbar1, dlg.m_Scrollbar2);

	AfxMessageBox (strMsg);
}
</code></pre>
<p>Hoffe ihr könnt mir helfen <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/68747/daten-werden-beim-schließen-des-dialoges-nicht-gespeichert</link><generator>RSS for Node</generator><lastBuildDate>Sat, 20 Jun 2026 01:25:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/68747.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 20 Mar 2004 20:37:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Daten werden beim schließen des Dialoges nicht gespeichert on Sat, 20 Mar 2004 20:37:56 GMT]]></title><description><![CDATA[<p>Ich habe einen Dialog CTestDlg, welcher für jedes Element eine Variable hat um<br />
den Wert zu speichern (hab ich im Ressourceneditor über Membervariable hinzufügen<br />
hinzugefügt). Wenn ich jedoch nach schließen des Dialoges die Werte in einer<br />
MessageBox ausgebe sind die Werte alle nicht initialisiert. Nun stellt sich mir<br />
die Frage woran das liegt, da laut meinem Buch die Funktio DoDataExchange von<br />
der MFC automatisch beim schließen des Dialoges aufgerufen wird.</p>
<p>Ich weiß nicht was ihr so an Code braucht, ich gebe euch mal ein paar Auszüge:</p>
<pre><code class="language-cpp">// Die Deklaration von CTestDlg
#pragma once
#include &quot;resource.h&quot;

// CTestDlg-Dialogfeld

class CTestDlg : public CDialog
{
	DECLARE_DYNAMIC(CTestDlg)

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

// Dialogfelddaten
	enum { IDD = IDD_DIALOG1 };

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

	DECLARE_MESSAGE_MAP()
public:
	virtual BOOL OnInitDialog();
	afx_msg void OnEnChangeEdit1();
	CString m_Edit1;
	afx_msg void OnBnClickedCheck1();
	afx_msg void OnBnClickedRadio1();
	afx_msg void OnBnClickedRadio2();
	afx_msg void OnBnClickedRadio3();
	BOOL m_Check1;
	int m_Radio1;
	afx_msg void OnLbnSelchangeList1();
	afx_msg void OnCbnSelchangeCombo1();
	afx_msg void OnCbnEditchangeCombo1();
	CString m_Combo1;
	CString m_List1;
	afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
	afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
	int m_Scrollbar1;
	int m_Scrollbar2;
	afx_msg void OnBnClickedButton1();
};
</code></pre>
<pre><code class="language-cpp">// Definition von DoDataExchange
oid CTestDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Text(pDX, IDC_EDIT1, m_Edit1);
	DDX_Check(pDX, IDC_CHECK1, m_Check1);
	DDX_Radio(pDX, IDC_RADIO1, m_Radio1);
	DDX_CBString(pDX, IDC_COMBO1, m_Combo1);
	DDX_LBString(pDX, IDC_LIST1, m_List1);
	DDX_Scroll(pDX, IDC_SCROLLBAR1, m_Scrollbar1);
	DDX_Scroll(pDX, IDC_SCROLLBAR2, m_Scrollbar2);
}
</code></pre>
<pre><code class="language-cpp">// Der Aufrufende Code des Dialoges, aus CChildView
void CChildView::OnEigeneTestdialoganzeigen()
{
	CTestDlg dlg;
	dlg.DoModal ();

	CString strMsg;
	strMsg.Format (
		&quot;Kontrollkästchen: %d\n&quot;
		&quot;Kombinationsfeld: %s\n&quot;
		&quot;Listenfeld: %s\n&quot;
		&quot;Eingabefeld: %s\n&quot;
		&quot;Optionsgruppe: %d\n&quot;
		&quot;Horizontale Bildlaufleiste: %d\n&quot;
		&quot;Vertikale Bildlaufleiste: %d\n&quot;,
		dlg.m_Check1, dlg.m_Combo1, dlg.m_List1,
		dlg.m_Edit1, dlg.m_Radio1,
		dlg.m_Scrollbar1, dlg.m_Scrollbar2);

	AfxMessageBox (strMsg);
}
</code></pre>
<p>Hoffe ihr könnt mir helfen <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/485168</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/485168</guid><dc:creator><![CDATA[SirLant]]></dc:creator><pubDate>Sat, 20 Mar 2004 20:37:56 GMT</pubDate></item><item><title><![CDATA[Reply to Daten werden beim schließen des Dialoges nicht gespeichert on Sun, 21 Mar 2004 10:55:50 GMT]]></title><description><![CDATA[<p>Du kannst in der CTestDlg::OnInitDialog() (oder Konstruktor) einfach die Werte zuweisen (z.B.: m_Combo=&quot;bla&quot;; ) und dann UpdateData(FALSE); aufrufen, dann sind sie initialisiert. Alternativ kannst du auch Control-Variabeln verwenden, da hast du sowieso mehr Zugriffsmöglichkeiten.<br />
Die DoDataExchange() dient nur zum Datenaustausch, kann aber keine Werte initialisieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/485319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/485319</guid><dc:creator><![CDATA[Frauke2k]]></dc:creator><pubDate>Sun, 21 Mar 2004 10:55:50 GMT</pubDate></item><item><title><![CDATA[Reply to Daten werden beim schließen des Dialoges nicht gespeichert on Sun, 21 Mar 2004 11:04:25 GMT]]></title><description><![CDATA[<p>(sorry, hab gerade nochmal nachgedacht) Ruf doch einfach beim Schließen ( WM_DESTROY ) die UpdateData(); auf, dann bekommst du auch die Werte</p>
]]></description><link>https://www.c-plusplus.net/forum/post/485324</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/485324</guid><dc:creator><![CDATA[Frauke2k]]></dc:creator><pubDate>Sun, 21 Mar 2004 11:04:25 GMT</pubDate></item><item><title><![CDATA[Reply to Daten werden beim schließen des Dialoges nicht gespeichert on Sun, 21 Mar 2004 11:10:36 GMT]]></title><description><![CDATA[<p>Die Werte initialisieren tu ich bereits, ich möchte aber die Werte speichern beim<br />
schließen des Dialoges und genau das passiert nicht. Ich habe in der zwischenzeit<br />
mit dem Buch weitergemacht und die Werte initialisiert und beim schließen des<br />
Dialoges werden die Startwerte angezeigt, folgedessen werden die eingetragenen<br />
Werte nie gespeichert.<br />
Wie kann ich die denn nun speichern lassen? Und so wie ich das verstanden habe,<br />
ist DoDataExchange für den Austausch von Variable-&gt;Dialog und Dialog-&gt;Variable<br />
zuständig, also genau das was ich doch möchte.</p>
<p>Edit:</p>
<p>Habe meiner Dialogklasse nun ein</p>
<pre><code class="language-cpp">void CTestDlg::OnDestroy()
{
	UpdateData (false);
}
</code></pre>
<p>hinzugefügt, aber dies ändert auch nichts. Auch ein UpdateData (false) im Desktruktor<br />
bringt nichts, außer einer ExcessViolation</p>
]]></description><link>https://www.c-plusplus.net/forum/post/485328</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/485328</guid><dc:creator><![CDATA[SirLant]]></dc:creator><pubDate>Sun, 21 Mar 2004 11:10:36 GMT</pubDate></item><item><title><![CDATA[Reply to Daten werden beim schließen des Dialoges nicht gespeichert on Sun, 21 Mar 2004 11:31:38 GMT]]></title><description><![CDATA[<p>musst ja auch<br />
UpdateData(TRUE);<br />
nehmen, weil das flag angibt, ob die Werte gespeichert werden sollen<br />
<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>
]]></description><link>https://www.c-plusplus.net/forum/post/485344</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/485344</guid><dc:creator><![CDATA[Frauke2k]]></dc:creator><pubDate>Sun, 21 Mar 2004 11:31:38 GMT</pubDate></item><item><title><![CDATA[Reply to Daten werden beim schließen des Dialoges nicht gespeichert on Sun, 21 Mar 2004 11:37:46 GMT]]></title><description><![CDATA[<p>Danke jetzt klappts <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/485349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/485349</guid><dc:creator><![CDATA[SirLant]]></dc:creator><pubDate>Sun, 21 Mar 2004 11:37:46 GMT</pubDate></item></channel></rss>