<?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[Designfrage: Datenaustausch zwischen Optionsdialog und Programm]]></title><description><![CDATA[<p>Ich habe in meinem Programm einige Steuerwerte, die ich über einen Optionen-Dialog einstellen will. Aber dazu muß ich alle Daten zwischen Programm und Dialog austauschen. Momentan sieht meine Lösung so aus:</p>
<pre><code class="language-cpp">void CMainDlg::OnOption()
{
  COptionDlg opt;
  opt.m_val1 = m_val1;
  ...
  if(opt.DoModal()!=IDOK) return;
  m_val1 = opt.m_val1;
  ...
}
</code></pre>
<p>Aber das erscheint mir etwas (hmm) unelegant (zumal ich die Methode ständig nachbessern muß, während mein Optionen-Dialog Gestalt annimmt). Gibt es eine bessere Lösung für diesen Ansatz (am besten wäre es, wenn der Klassenassistent mich dabei unterstützen würde)?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/181006/designfrage-datenaustausch-zwischen-optionsdialog-und-programm</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Apr 2026 01:17:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/181006.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 09 May 2007 07:26:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Designfrage: Datenaustausch zwischen Optionsdialog und Programm on Wed, 09 May 2007 07:26:00 GMT]]></title><description><![CDATA[<p>Ich habe in meinem Programm einige Steuerwerte, die ich über einen Optionen-Dialog einstellen will. Aber dazu muß ich alle Daten zwischen Programm und Dialog austauschen. Momentan sieht meine Lösung so aus:</p>
<pre><code class="language-cpp">void CMainDlg::OnOption()
{
  COptionDlg opt;
  opt.m_val1 = m_val1;
  ...
  if(opt.DoModal()!=IDOK) return;
  m_val1 = opt.m_val1;
  ...
}
</code></pre>
<p>Aber das erscheint mir etwas (hmm) unelegant (zumal ich die Methode ständig nachbessern muß, während mein Optionen-Dialog Gestalt annimmt). Gibt es eine bessere Lösung für diesen Ansatz (am besten wäre es, wenn der Klassenassistent mich dabei unterstützen würde)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281332</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281332</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 09 May 2007 07:26:00 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage: Datenaustausch zwischen Optionsdialog und Programm on Wed, 09 May 2007 07:39:33 GMT]]></title><description><![CDATA[<p>Ich würde wahrscheinlich ein Interface für den MainDialog bauen(aber nur weil ich da so ein Tool habe was mir die Implementierung automatisch erzeugt <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="😉"
    /> )<br />
Was Du da machst ist der einfachste Weg aber public Variablen sind immer so eine Sache die man doch eigentlich nicht macht. Ansonsten könntest du noch eine Datenstruktur oder -Klasse anlegen und die mit an den Dialog übergeben dannn brauchst du nur noch in OnOk die Daten schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281340</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281340</guid><dc:creator><![CDATA[connan]]></dc:creator><pubDate>Wed, 09 May 2007 07:39:33 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage: Datenaustausch zwischen Optionsdialog und Programm on Wed, 09 May 2007 08:08:03 GMT]]></title><description><![CDATA[<p>Ich hab so ziemlich das gleiche Problem wie CStoll. Ich muss in dem Dialog ständig ca. 60 Werte hin und her schieben, mach es aber auch wie im Codebeispiel.</p>
<p>connan schrieb:</p>
<blockquote>
<p>Ich würde wahrscheinlich ein Interface für den MainDialog bauen(aber nur weil ich da so ein Tool habe was mir die Implementierung automatisch erzeugt <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="😉"
    /> )<br />
Was Du da machst ist der einfachste Weg aber public Variablen sind immer so eine Sache die man doch eigentlich nicht macht. Ansonsten könntest du noch eine Datenstruktur oder -Klasse anlegen und die mit an den Dialog übergeben dannn brauchst du nur noch in OnOk die Daten schreiben.</p>
</blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10149">@connan</a>: Was hast Du denn da für ein Tool? Würde mich mal interessieren. Üblicherweise werden doch die Daten im Doc der Anwendung gehalten. Woher weiß denn der reine Dialog welchem Doc er zugeordnet ist. Man kann ja auch Dialogressourcen in verschiedenen Projekten nutzen. Dann müsste man ja dem Konstruktor des Dialogs einen Zeiger aufs Doc mitgeben, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281364</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281364</guid><dc:creator><![CDATA[AndyDD]]></dc:creator><pubDate>Wed, 09 May 2007 08:08:03 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage: Datenaustausch zwischen Optionsdialog und Programm on Wed, 09 May 2007 08:58:26 GMT]]></title><description><![CDATA[<p>Guten Morgen!</p>
<p>Wie wär's denn von COptionsDlg ein Singleton abzuleiten, hin- und herzucasten und den Default-Zuweisungsoperator zu verwenden?</p>
<p>Klingt nach Klimmzug, aber sonst kommt der Witard damit wohl nicht klar; und so inkludiert das Singleton die generierten DDX-Variablen.</p>
<p>Grüsse</p>
<p>*this</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281387</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281387</guid><dc:creator><![CDATA[Gast++]]></dc:creator><pubDate>Wed, 09 May 2007 08:58:26 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage: Datenaustausch zwischen Optionsdialog und Programm on Wed, 09 May 2007 15:17:29 GMT]]></title><description><![CDATA[<p>Ich muss mal noch etwas auführlicher werden da mich eure Meinung dazu sehr interessiert.</p>
<p>Also um beim Bsp. von CStoll zu bleiben, folgender Lösungsansatz:</p>
<pre><code class="language-cpp">//MainDlg.h
..

namespace Interface
{
    class IMainDlg
    {
    public:
        virtual void SetVal1(int iVal1)=0; //int angenommen
        ..
        ..
    }
}

class CMainDlg : public CDialog, public Interface::IMainDlg
{
private:    
    virtual void SetVal1(int iVal1){m_val1 = iVal1}; //int angenommen

...
}

//OptionDlg.h
class IMainDlg;
class COptionsDlg : public CDialog
{
public:
    COptionsDlg(IMainDlg&amp; ifMainDlg);

...
private:
    IMainDlg&amp; m_ifMainDlg;
}

//OptionDlg.cpp
#include &quot;MainDlg.h&quot;

COptionsDlg::COptionsDlg(Interface::IMainDlg&amp; ifMainDlg)
: m_ifMainDlg(ifMainDlg)
{
}

COptionsDlg::OnOk()
{
    m_ifMainDlg.SetVal1(this-&gt;GetDlgItemInt(IDC_MVAL1));
}       

//MainDlg.cpp

void CMainDlg::OnOption()
{
  COptionDlg opt(this);
  opt.DoModal()
}
</code></pre>
<p>So würde das in etwa bei mir aussehen <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="🙂"
    /> --&gt; Meinungen gefragt!</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6191">@AndyDD</a>:<br />
Gemeint war das hier <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="😉"
    /> :<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-145377-and-highlight-is-ide.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-145377-and-highlight-is-ide.html</a></p>
<p>btw. DD steht nicht etwa für Dresden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281749</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281749</guid><dc:creator><![CDATA[connan]]></dc:creator><pubDate>Wed, 09 May 2007 15:17:29 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage: Datenaustausch zwischen Optionsdialog und Programm on Wed, 09 May 2007 15:38:04 GMT]]></title><description><![CDATA[<p>Welche Vorteile soll Dir das bringen? Ich würde dem Dialog eine Get- und eine Set-Methode verpassen und die dann mit den entsprechenden Members des Docs verbinden. Voraussetzung ist, dass der Konstruktor des Dialogs einen gültigen Zeiger aufs Doc mitbekommt. Die Getmethode braucht man für die Anzeige der bisherigen Einstellungen, die Set-Methode zum Schreiben in das Doc. Diese kann ja in der OnOk aufgerufen werden. Möglicherweise machst Du den gleichen Ansatz, nur schau ich auf den ersten Blick bei Deinem Konstrukt nicht ganz so durch.</p>
<p>Ja DD steht für Dresden, warum?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281763</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281763</guid><dc:creator><![CDATA[AndyDD]]></dc:creator><pubDate>Wed, 09 May 2007 15:38:04 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage: Datenaustausch zwischen Optionsdialog und Programm on Wed, 09 May 2007 16:36:08 GMT]]></title><description><![CDATA[<p>Stimmt der Getter fehlt noch im Bsp. einfach dazudenken <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>An Vorteilen sehe ich einige:</p>
<p>- das Interface an sich, man sieht halt gleich was geht,<br />
- Verlagerung des relevanten Codes in den OptionsDlg,<br />
- Wiederverwendbarkeit<br />
- einfachste Überschreibung der Get und Set Methoden (ok, gilt nur für mich <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>und noch einige andere die mir grad nicht einfallen <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>Achso, wegen DD, üsch wohn och hier <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/1281798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281798</guid><dc:creator><![CDATA[connan]]></dc:creator><pubDate>Wed, 09 May 2007 16:36:08 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage: Datenaustausch zwischen Optionsdialog und Programm on Thu, 10 May 2007 05:51:55 GMT]]></title><description><![CDATA[<p>connan schrieb:</p>
<blockquote>
<p>Stimmt der Getter fehlt noch im Bsp. einfach dazudenken <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>An Vorteilen sehe ich einige:</p>
<p>- das Interface an sich, man sieht halt gleich was geht,<br />
- Verlagerung des relevanten Codes in den OptionsDlg,<br />
- Wiederverwendbarkeit<br />
- einfachste Überschreibung der Get und Set Methoden (ok, gilt nur für mich <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>und noch einige andere die mir grad nicht einfallen <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>Achso, wegen DD, üsch wohn och hier <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>
</blockquote>
<p>Na dann hallo Landsmann.<br />
Du magst sicher Recht haben, aber ob das einfacher ist... Und wo ist der Bezug zum Doc der Anwendung, also dort wo man die Daten zur Laufzeit verwalten will?<br />
Aber wenn wir hier schon über Design reden, da hab ich auch noch mal eine Frage. Ich habe ein Programm welches eine Maschine steuert. Für verschiedene Artikel sind die Einstellwerte in jeweils verschiedenen Ini-Dateien gespeichert. In der Registry hinterlege ich, welches Profil zuletzt verwendet wurde. Beim Programmstart wird dann die entsprechende Ini-Datei geladen und im Ctor des Docs werden die Variablem mit den Werten der Ini-Datei initialisiert.<br />
Jetzt gibts da auch einen Optionsdialog, in dem ich die Werte editieren kann. Beim Beenden mit Ok müssen die Werte übernommen werden. Jetzt muss ich einerseits die Variablen im Doc ändern und andererseits die Ini neu schreiben. Was sollte man jetzt als zentrales Element ansehen. Die Ini-Datei oder das Doc der Anwendung? Oder ist die hier geschilderte Vorgehensweise generell ungünstig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282068</guid><dc:creator><![CDATA[AndyDD]]></dc:creator><pubDate>Thu, 10 May 2007 05:51:55 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage: Datenaustausch zwischen Optionsdialog und Programm on Thu, 10 May 2007 06:50:48 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10149">@connan</a>: Und das Problem ist noch das gleiche wie vorher - ich muß immer noch von Hand jede Variable zwischen Hauptprogramm und Optionen-Dialog austauschen (und dadurch, daß dieser Austausch von der OnOption()-Methode des Hautpprogramms in die OnInitDialog()/OnOk() Methoden des Dialogs ausgelagert wird, verschlimmbessert sich (imho) die Situation eher.<br />
(ich hab' ja nicht nur eine Variable, sondern ca. ein halbes Dutzend ;))</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282095</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282095</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 10 May 2007 06:50:48 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage: Datenaustausch zwischen Optionsdialog und Programm on Thu, 10 May 2007 08:03:45 GMT]]></title><description><![CDATA[<p>mach dir doch einen optionmanager, der global verfügbar ist. der hat dann zwei funktionen 'SetOption (option_id_or_name, option)' und 'GetOption (option_id_or_name)'.<br />
erstere trägt options ein, sollte die option noch nicht existieren, wird sie neu angelegt, andernfalls der wert einer vorhandenen option überschrieben.<br />
vorteil ist, dass der 'option-leser' nur den namen (oder die id) der option kennen muss. beim setzen/ändern in der dialog-handlerfunction musste immer nur die 'SetOption()' funktion aufrufen.<br />
ausserdem lässt sich so ein objekt prima beim starten mit gespeicherten options (aus einem config-file o.ä.) füllen.<br />
<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>
<p>edit: such mal im internet (bei code project oder so)<br />
das gibt's bestimmt schon fertig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282140</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282140</guid><dc:creator><![CDATA[pale dog]]></dc:creator><pubDate>Thu, 10 May 2007 08:03:45 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage: Datenaustausch zwischen Optionsdialog und Programm on Thu, 10 May 2007 08:14:22 GMT]]></title><description><![CDATA[<p>pale dog schrieb:</p>
<blockquote>
<p>mach dir doch einen optionmanager, der global verfügbar ist. der hat dann zwei funktionen 'SetOption (option_id_or_name, option)' und 'GetOption (option_id_or_name)'.<br />
erstere trägt options ein, sollte die option noch nicht existieren, wird sie neu angelegt, andernfalls der wert einer vorhandenen option überschrieben.<br />
vorteil ist, dass der 'option-leser' nur den namen (oder die id) der option kennen muss. beim setzen/ändern in der dialog-handlerfunction musste immer nur die 'SetOption()' funktion aufrufen.</p>
</blockquote>
<p>Deswegen bleibt es trotzdem dabei, daß ich für jede jede Option, die ich benötige, zwei Membervariablen benötige (eine im Hauptprogramm und eine im Optionsdialog) und diese miteinander synchronisieren muß. Und alle bisherigen Lösungen laufen doch wieder darauf hinaus, daß eine Seite (mit deinem Ansatz sogar beide Seiten) manuell die Variablen synchron halten muß. Optimal wäre es, wenn ich die Variablen nur einmal hätte und von überall dort rankommen könnte.</p>
<p>Nachtrag: Nur eine Idee, die mir gerade gekommen ist:<br />
Wenn ich den COptionDialog nicht lokal anlege, sondern in meine MainDlg-Klasse reinpacke, könnte ich eigentlich von überall an seine Member rankommen. Wäre so etwas praktisch umsetzbar?</p>
<pre><code class="language-cpp">//noch nicht getestet
void OnOption()
{
  if(m_opt.DoModal()!=IDOK)
  {
    //*grübelt* Hier müsste ich die alten Werte zurückholen
  }
}

void OnSomething()
{
  mach_was_mit(m_opt.m_var1);
  ...
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1282155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282155</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 10 May 2007 08:14:22 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage: Datenaustausch zwischen Optionsdialog und Programm on Thu, 10 May 2007 08:18:29 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>pale dog schrieb:</p>
<blockquote>
<p>mach dir doch einen optionmanager, der global verfügbar ist. der hat dann zwei funktionen 'SetOption (option_id_or_name, option)' und 'GetOption (option_id_or_name)'.<br />
erstere trägt options ein, sollte die option noch nicht existieren, wird sie neu angelegt, andernfalls der wert einer vorhandenen option überschrieben.<br />
vorteil ist, dass der 'option-leser' nur den namen (oder die id) der option kennen muss. beim setzen/ändern in der dialog-handlerfunction musste immer nur die 'SetOption()' funktion aufrufen.</p>
</blockquote>
<p>Deswegen bleibt es trotzdem dabei, daß ich für jede jede Option, die ich benötige, zwei Membervariablen benötige (eine im Hauptprogramm und eine im Optionsdialog) und diese miteinander synchronisieren muß.</p>
</blockquote>
<p>nein, der optionmanager verwaltet alles.<br />
du musst bzw. darfst nur über die set/get-funktionen darauf zugreifen und brauchst keine kopien anzulegen. hauptprogramm und optionsdialog greifen beide auf die (nur einmal existierende) globale instanz des optionmanagers zu.<br />
<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/1282160</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282160</guid><dc:creator><![CDATA[pale dog]]></dc:creator><pubDate>Thu, 10 May 2007 08:18:29 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage: Datenaustausch zwischen Optionsdialog und Programm on Thu, 10 May 2007 08:58:04 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Nachtrag: Nur eine Idee, die mir gerade gekommen ist:<br />
Wenn ich den COptionDialog nicht lokal anlege, sondern in meine MainDlg-Klasse reinpacke, könnte ich eigentlich von überall an seine Member rankommen. Wäre so etwas praktisch umsetzbar?</p>
<pre><code class="language-cpp">//noch nicht getestet
void OnOption()
{
  if(m_opt.DoModal()!=IDOK)
  {
    //*grübelt* Hier müsste ich die alten Werte zurückholen
  }
}

void OnSomething()
{
  mach_was_mit(m_opt.m_var1);
  ...
}
</code></pre>
</blockquote>
<p>Ist sicherlich eine bessere Variante als die erste, aber da hast Du ja wieder public Member <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /></p>
<p>Mir ist gerade noch was eingefallen, ich hab mal einen Artikel in der MSDN gefunden der beschrieb wie man seine eigenen DDX Methoden implementiert. Da man an die Standard DDX imho leider keine Referenzen übergeben kann müsste man sich seine eigenen DDX schreiben wo genau das geht.</p>
<p>Wenn Dir die public Memebr egal sind kannst du natürlich auch im Optionsdialog in OnDataExchange die DDX- Aufrufe auf die Variablen des MainDlg umleiten. Ist vieleicht das einfachste.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/34745">@pale</a> dog:<br />
Die globale Haltung aller Variablen ist zwar verlockend, macht doch aber die Vorteile der OOP wieder zunichte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282194</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282194</guid><dc:creator><![CDATA[connan]]></dc:creator><pubDate>Thu, 10 May 2007 08:58:04 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage: Datenaustausch zwischen Optionsdialog und Programm on Thu, 10 May 2007 09:03:51 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>das Problem hatte ich auch.</p>
<p>Wenn du</p>
<p>COptionDlg opt;</p>
<p>nicht nur temporär in On... erzeugst, sondern diese Klasse<br />
permanent in deinem Doc hältst, dann kannst du auch die Werte<br />
der Klasse abfragen.</p>
<p>Gruß Andreas</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282197</guid><dc:creator><![CDATA[VladoBo]]></dc:creator><pubDate>Thu, 10 May 2007 09:03:51 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage: Datenaustausch zwischen Optionsdialog und Programm on Thu, 10 May 2007 09:05:29 GMT]]></title><description><![CDATA[<p>AndyDD schrieb:</p>
<blockquote>
<p>... Und wo ist der Bezug zum Doc der Anwendung, also dort wo man die Daten zur Laufzeit verwalten will?</p>
</blockquote>
<p>Bei doc/view erhält natürlich das doc das Interface.</p>
<p>AndyDD schrieb:</p>
<blockquote>
<p>...<br />
Aber wenn wir hier schon über Design reden, da hab ich auch noch mal eine Frage. Ich habe ein Programm welches eine Maschine steuert. Für verschiedene Artikel sind die Einstellwerte in jeweils verschiedenen Ini-Dateien gespeichert. In der Registry hinterlege ich, welches Profil zuletzt verwendet wurde. Beim Programmstart wird dann die entsprechende Ini-Datei geladen und im Ctor des Docs werden die Variablem mit den Werten der Ini-Datei initialisiert.<br />
Jetzt gibts da auch einen Optionsdialog, in dem ich die Werte editieren kann. Beim Beenden mit Ok müssen die Werte übernommen werden. Jetzt muss ich einerseits die Variablen im Doc ändern und andererseits die Ini neu schreiben. Was sollte man jetzt als zentrales Element ansehen. Die Ini-Datei oder das Doc der Anwendung? Oder ist die hier geschilderte Vorgehensweise generell ungünstig?</p>
</blockquote>
<p>Klingt gut was Du da machst, ich würde auf jedenfall die doc als Zentrale nutzen, die Ini must du ja erst beim beenden neu schreiben oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282200</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282200</guid><dc:creator><![CDATA[connan]]></dc:creator><pubDate>Thu, 10 May 2007 09:05:29 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage: Datenaustausch zwischen Optionsdialog und Programm on Thu, 10 May 2007 09:12:15 GMT]]></title><description><![CDATA[<p>connan schrieb:</p>
<blockquote>
<p>CStoll schrieb:</p>
<blockquote>
<p>Nachtrag: Nur eine Idee, die mir gerade gekommen ist:<br />
Wenn ich den COptionDialog nicht lokal anlege, sondern in meine MainDlg-Klasse reinpacke, könnte ich eigentlich von überall an seine Member rankommen. Wäre so etwas praktisch umsetzbar?</p>
<pre><code class="language-cpp">//noch nicht getestet
void OnOption()
{
  if(m_opt.DoModal()!=IDOK)
  {
    //*grübelt* Hier müsste ich die alten Werte zurückholen
  }
}

void OnSomething()
{
  mach_was_mit(m_opt.m_var1);
  ...
}
</code></pre>
</blockquote>
<p>Ist sicherlich eine bessere Variante als die erste, aber da hast Du ja wieder public Member <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /></p>
<p>Mir ist gerade noch was eingefallen, ich hab mal einen Artikel in der MSDN gefunden der beschrieb wie man seine eigenen DDX Methoden implementiert. Da man an die Standard DDX imho leider keine Referenzen übergeben kann müsste man sich seine eigenen DDX schreiben wo genau das geht.</p>
<p>Wenn Dir die public Memebr egal sind kannst du natürlich auch im Optionsdialog in OnDataExchange die DDX- Aufrufe auf die Variablen des MainDlg umleiten. Ist vieleicht das einfachste.</p>
</blockquote>
<p>Also damit kann ich leben - wozu hat man schließlich Freunde?</p>
<p>@VladoBo: Es reicht, einmal auf &quot;Absenden&quot; zu drücken <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="😉"
    /> (*Mod-Skill &quot;Thread aufräumen&quot; aktiviert und den Doppelbeitrag entfernt*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282209</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282209</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 10 May 2007 09:12:15 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage: Datenaustausch zwischen Optionsdialog und Programm on Thu, 10 May 2007 09:23:23 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Also damit kann ich leben - wozu hat man schließlich Freunde?</p>
</blockquote>
<p><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>Und wie machst Du es denn jetzt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282217</guid><dc:creator><![CDATA[connan]]></dc:creator><pubDate>Thu, 10 May 2007 09:23:23 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage: Datenaustausch zwischen Optionsdialog und Programm on Thu, 10 May 2007 09:26:19 GMT]]></title><description><![CDATA[<p>Noch habe ich es nicht umgesetzt (ich hab' hier noch einige Probleme mit der Datenverarbeitung, da steht die GUI etwas im Hintergrund), aber letztendlich werde ich wohl den oben erwähnten Ansatz verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282219</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282219</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 10 May 2007 09:26:19 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage: Datenaustausch zwischen Optionsdialog und Programm on Thu, 10 May 2007 14:37:07 GMT]]></title><description><![CDATA[<p>connan schrieb:</p>
<blockquote>
<p>Klingt gut was Du da machst, ich würde auf jedenfall die doc als Zentrale nutzen, die Ini must du ja erst beim beenden neu schreiben oder?</p>
</blockquote>
<p>So mach ich das jetzt auch. Aber erst beim Beenden schreiben ist nicht so günstig. Wenn das Hauptprogramm an einer anderen Stelle abschmiert, dann sind die Änderungen weg. Ich spreicher immer sofort.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a>: Also bist Du doch wieder bei Deiner ursprünglichen Lösung. Was anderes ist auch meiner Meinung nach in den meisten Tutorials nicht beschrieben. Wenn man noch Get- und Set-Methoden implementiert kommt man auch von den public-Members weg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282450</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282450</guid><dc:creator><![CDATA[AndyDD]]></dc:creator><pubDate>Thu, 10 May 2007 14:37:07 GMT</pubDate></item></channel></rss>