<?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[Dialog in SDI View]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>mit SDI Programmierung habe ich leider noch nicht so viel Erfahrung wie ich gerne hätte, weswegen ich jetzt auch bei einer &quot;Banalität&quot; scheitere.</p>
<p>Ich schreibe an einem kleinen Programm welches auf der linken Seite eine Explorer Bar hat. Diese Bar hat eine feste Größe und soll später verschiedene Dialoge anzeigen. Diese Dialoge sollen rechts von dieser Explorer Bar angezeigt werden. Damit das leichter zu erklären ist, habe ich mal einen Screenshot gemacht:</p>
<p><a href="http://img261.imageshack.us/my.php?image=exppiced9.jpg" rel="nofollow">http://img261.imageshack.us/my.php?image=exppiced9.jpg</a></p>
<p>Der weiße Bereich in dem Bild soll später den Dialog anzeigen. Momentan sieht die &quot;OnCreate&quot; Funktion von MainFrm.cpp so aus:</p>
<pre><code class="language-cpp">int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	// Ansicht erstellen, um den Clientbereich des Rahmens zu belegen
	if (!m_wndView.Create(NULL, NULL, AFX_WS_DEFAULT_VIEW,
		CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST, NULL))
	{
		TRACE0(&quot;Fehler beim Erstellen des Ansichtsfensters.\n&quot;);
		return -1;
	}

	// Create lower status bar
	if (!m_wndStatusBar.Create(this) ||
		!m_wndStatusBar.SetIndicators(indicators,
		  sizeof(indicators)/sizeof(UINT)))
	{
		TRACE0(&quot;Fehler beim Erstellen der Statusleiste.\n&quot;);
		return -1;      // Fehler beim Erstellen
	}

	// Create Explorer Bar
	if (!m_wndExpBar.Create(_T(&quot;Explorer Bar&quot;), this, 123, CBRS_LEFT|CBRS_SIZE_DYNAMIC))
		// or CBRS_RIGHT
	{
		TRACE0(&quot;Failed to create explorer bar\n&quot;);
		return -1;      // fail to create
	}

	m_hBigIcon[1] = CreateImageList(AfxGetApp()-&gt;m_hInstance,IDB_BITMAP1,
		16,RGB(123,124,125),&amp;m_uNumIcons,NULL, &amp;m_hBigIcon[0], &amp;m_hBigIcon[2]);

	m_wndExpBar.EnableDocking(CBRS_ALIGN_LEFT|CBRS_ALIGN_RIGHT);
	EnableDocking(CBRS_ALIGN_ANY);
	DockControlBar(&amp;m_wndExpBar);

	m_wndExpBar.AddPane(IDD_DIALOG1,_T(&quot;Testleiste&quot;),
		CHS_FOCUSRECT|CHS_NOSETFOCUSONCLICK|CHS_TOOLTIP|
		CHS_PLAYSOUND|CHS_ANIMATEFADE,MAKEINTRESOURCE(IDD_DIALOG1),this);

	return 0;
}
</code></pre>
<p>Dazu passend auch noch ein Teil der .h Datei:</p>
<pre><code class="language-cpp">CStatusBar  m_wndStatusBar;
CToolBar    m_wndToolBar;
CChildView  m_wndView;
CMainDialog m_MainDialog;
CExpBarXP   m_wndExpBar;
HIMAGELIST  m_hBigIcon[3];
UINT        m_uNumIcons;
</code></pre>
<p>Jetzt stellt sich für mich die Frage, mit welcher Methode ich den Dialog auf die rechte Seite bekomme. Wenn ich das richtig verstehe, dann ist CChildView für diesen weißen, rechten Bereich zuständig, bietet aber keine Möglichkeit einen Dialog einzubinden.</p>
<p>Nun hab ich gelesen, dass dafür die Klasse CFormView sich dafür anbieten würde. Muss ich jetzt die CChildView Klasse ersetzen? Und wie würde ich den Dialog dann tatsächlich auf diese, zugegebenermaßen große, Fläche bringen? Gibt es dafür Anleitungen, die ich noch nicht gefunden habe?</p>
<p>Viele Frage, ich weiß, aber vielleicht könnt ihr mir ja ein paar davon beantworten <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>Vielen dank<br />
Mav</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/178361/dialog-in-sdi-view</link><generator>RSS for Node</generator><lastBuildDate>Sun, 19 Apr 2026 11:19:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/178361.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 10 Apr 2007 16:42:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Dialog in SDI View on Tue, 10 Apr 2007 16:42:54 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>mit SDI Programmierung habe ich leider noch nicht so viel Erfahrung wie ich gerne hätte, weswegen ich jetzt auch bei einer &quot;Banalität&quot; scheitere.</p>
<p>Ich schreibe an einem kleinen Programm welches auf der linken Seite eine Explorer Bar hat. Diese Bar hat eine feste Größe und soll später verschiedene Dialoge anzeigen. Diese Dialoge sollen rechts von dieser Explorer Bar angezeigt werden. Damit das leichter zu erklären ist, habe ich mal einen Screenshot gemacht:</p>
<p><a href="http://img261.imageshack.us/my.php?image=exppiced9.jpg" rel="nofollow">http://img261.imageshack.us/my.php?image=exppiced9.jpg</a></p>
<p>Der weiße Bereich in dem Bild soll später den Dialog anzeigen. Momentan sieht die &quot;OnCreate&quot; Funktion von MainFrm.cpp so aus:</p>
<pre><code class="language-cpp">int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	// Ansicht erstellen, um den Clientbereich des Rahmens zu belegen
	if (!m_wndView.Create(NULL, NULL, AFX_WS_DEFAULT_VIEW,
		CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST, NULL))
	{
		TRACE0(&quot;Fehler beim Erstellen des Ansichtsfensters.\n&quot;);
		return -1;
	}

	// Create lower status bar
	if (!m_wndStatusBar.Create(this) ||
		!m_wndStatusBar.SetIndicators(indicators,
		  sizeof(indicators)/sizeof(UINT)))
	{
		TRACE0(&quot;Fehler beim Erstellen der Statusleiste.\n&quot;);
		return -1;      // Fehler beim Erstellen
	}

	// Create Explorer Bar
	if (!m_wndExpBar.Create(_T(&quot;Explorer Bar&quot;), this, 123, CBRS_LEFT|CBRS_SIZE_DYNAMIC))
		// or CBRS_RIGHT
	{
		TRACE0(&quot;Failed to create explorer bar\n&quot;);
		return -1;      // fail to create
	}

	m_hBigIcon[1] = CreateImageList(AfxGetApp()-&gt;m_hInstance,IDB_BITMAP1,
		16,RGB(123,124,125),&amp;m_uNumIcons,NULL, &amp;m_hBigIcon[0], &amp;m_hBigIcon[2]);

	m_wndExpBar.EnableDocking(CBRS_ALIGN_LEFT|CBRS_ALIGN_RIGHT);
	EnableDocking(CBRS_ALIGN_ANY);
	DockControlBar(&amp;m_wndExpBar);

	m_wndExpBar.AddPane(IDD_DIALOG1,_T(&quot;Testleiste&quot;),
		CHS_FOCUSRECT|CHS_NOSETFOCUSONCLICK|CHS_TOOLTIP|
		CHS_PLAYSOUND|CHS_ANIMATEFADE,MAKEINTRESOURCE(IDD_DIALOG1),this);

	return 0;
}
</code></pre>
<p>Dazu passend auch noch ein Teil der .h Datei:</p>
<pre><code class="language-cpp">CStatusBar  m_wndStatusBar;
CToolBar    m_wndToolBar;
CChildView  m_wndView;
CMainDialog m_MainDialog;
CExpBarXP   m_wndExpBar;
HIMAGELIST  m_hBigIcon[3];
UINT        m_uNumIcons;
</code></pre>
<p>Jetzt stellt sich für mich die Frage, mit welcher Methode ich den Dialog auf die rechte Seite bekomme. Wenn ich das richtig verstehe, dann ist CChildView für diesen weißen, rechten Bereich zuständig, bietet aber keine Möglichkeit einen Dialog einzubinden.</p>
<p>Nun hab ich gelesen, dass dafür die Klasse CFormView sich dafür anbieten würde. Muss ich jetzt die CChildView Klasse ersetzen? Und wie würde ich den Dialog dann tatsächlich auf diese, zugegebenermaßen große, Fläche bringen? Gibt es dafür Anleitungen, die ich noch nicht gefunden habe?</p>
<p>Viele Frage, ich weiß, aber vielleicht könnt ihr mir ja ein paar davon beantworten <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>Vielen dank<br />
Mav</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1263163</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1263163</guid><dc:creator><![CDATA[Maviee]]></dc:creator><pubDate>Tue, 10 Apr 2007 16:42:54 GMT</pubDate></item><item><title><![CDATA[Reply to Dialog in SDI View on Tue, 10 Apr 2007 22:19:17 GMT]]></title><description><![CDATA[<p>Du versuchst Dich, wenn ich es richtig verstanden habe, an einem Splitter. Links ein Baum (so der &quot;Explorer-Style&quot;) rechts &quot;was anderes&quot;. Wenn die Auswahl links geändert wird, soll rechts ggf. ein anderer Dialog angezeigt werden. Liege ich in dieser ersten Annahme richtig?</p>
<p>Gruss, Gio</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1263409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1263409</guid><dc:creator><![CDATA[Gio]]></dc:creator><pubDate>Tue, 10 Apr 2007 22:19:17 GMT</pubDate></item><item><title><![CDATA[Reply to Dialog in SDI View on Wed, 11 Apr 2007 12:26:22 GMT]]></title><description><![CDATA[<p>Ja, das siehst du genau richtig. Für sowas gibts ja auch die Klasse CSplitterWnd. Aber bei der Klasse dachte ich, dass pro Splitter Window alles nur per Dialog darstellen kann.<br />
Diese XP-Bar funktioniert nämlich nicht in einem Dialog, weswegen ich halt die jetzige Lösung gewählt habe...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1263792</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1263792</guid><dc:creator><![CDATA[Maviee]]></dc:creator><pubDate>Wed, 11 Apr 2007 12:26:22 GMT</pubDate></item></channel></rss>