<?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[Dynamische&#x2F;Statische MFC-Einbindung]]></title><description><![CDATA[<p>Na hallo zusammen,</p>
<p>ich habe mal wieder ein Problem, was ich nicht so ganz verstehe. Besser gesagt verstehe ich die MFC da nicht so richtig.</p>
<p>Und zwar erstelle ich mir in meinem Programm aehnlich wie die Print_Preview von Code-Project eine neue CView zum Drucken:</p>
<pre><code class="language-cpp">CFrameWnd* pOldFrame=(CFrameWnd*)AfxGetThread()-&gt;m_pMainWnd;

m_pTemplate = new CSingleDocTemplate(IDR_DPV,NULL,RUNTIME_CLASS(CFrameWnd),RUNTIME_CLASS(CRVSDruckView));
AfxGetApp()-&gt;AddDocTemplate(m_pTemplate);

CFrameWnd *pFrameWnd = m_pTemplate-&gt;CreateNewFrame(NULL,NULL);
m_pTemplate-&gt;InitialUpdateFrame(pFrameWnd,NULL);

CRVSDruckView* pView=(CRVSDruckView*)pFrameWnd-&gt;GetActiveView();
pView-&gt;m_pOldFrame=pOldFrame;
if(todo) pView-&gt;OnFilePrintPreview();
else 
{
   pFrameWnd-&gt;ShowWindow(SW_HIDE);
   pView-&gt;OnFilePrint();
}
</code></pre>
<p>Wenn ich das ganze mit dynamisch eingebundener MFC-DLL kompiliere, dann klappt auch alles, aber wenn ich es auf statisch eingebundene MFC einstelle, dann kommt immer eine Fehlermeldung wenn er das OnFilePrintPreview() aufruft, was uebrigens nichts andres macht, als die OnPrintPreview() der CView aufzurufen!</p>
<p>Und zwar meckert er da immer herum, dass ein DialogTemplate nicht initalisiert werden kann. Da verstehe ich erstens nicht, was bei einer CView ein DialogTemplate zu suchen hat und zweitens auch nicht, warum das nur bei statischer Einbindung auftritt und bei dynamischer Einbindung alles einwandfrei funktioniert!</p>
<p>Kann mir da jemand einen Tip geben?!<br />
Vielen Dank schonmal!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/146970/dynamische-statische-mfc-einbindung</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Jul 2026 21:01:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/146970.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 12 May 2006 13:08:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Dynamische&#x2F;Statische MFC-Einbindung on Fri, 12 May 2006 13:08:20 GMT]]></title><description><![CDATA[<p>Na hallo zusammen,</p>
<p>ich habe mal wieder ein Problem, was ich nicht so ganz verstehe. Besser gesagt verstehe ich die MFC da nicht so richtig.</p>
<p>Und zwar erstelle ich mir in meinem Programm aehnlich wie die Print_Preview von Code-Project eine neue CView zum Drucken:</p>
<pre><code class="language-cpp">CFrameWnd* pOldFrame=(CFrameWnd*)AfxGetThread()-&gt;m_pMainWnd;

m_pTemplate = new CSingleDocTemplate(IDR_DPV,NULL,RUNTIME_CLASS(CFrameWnd),RUNTIME_CLASS(CRVSDruckView));
AfxGetApp()-&gt;AddDocTemplate(m_pTemplate);

CFrameWnd *pFrameWnd = m_pTemplate-&gt;CreateNewFrame(NULL,NULL);
m_pTemplate-&gt;InitialUpdateFrame(pFrameWnd,NULL);

CRVSDruckView* pView=(CRVSDruckView*)pFrameWnd-&gt;GetActiveView();
pView-&gt;m_pOldFrame=pOldFrame;
if(todo) pView-&gt;OnFilePrintPreview();
else 
{
   pFrameWnd-&gt;ShowWindow(SW_HIDE);
   pView-&gt;OnFilePrint();
}
</code></pre>
<p>Wenn ich das ganze mit dynamisch eingebundener MFC-DLL kompiliere, dann klappt auch alles, aber wenn ich es auf statisch eingebundene MFC einstelle, dann kommt immer eine Fehlermeldung wenn er das OnFilePrintPreview() aufruft, was uebrigens nichts andres macht, als die OnPrintPreview() der CView aufzurufen!</p>
<p>Und zwar meckert er da immer herum, dass ein DialogTemplate nicht initalisiert werden kann. Da verstehe ich erstens nicht, was bei einer CView ein DialogTemplate zu suchen hat und zweitens auch nicht, warum das nur bei statischer Einbindung auftritt und bei dynamischer Einbindung alles einwandfrei funktioniert!</p>
<p>Kann mir da jemand einen Tip geben?!<br />
Vielen Dank schonmal!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1056454</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1056454</guid><dc:creator><![CDATA[raindrop]]></dc:creator><pubDate>Fri, 12 May 2006 13:08:20 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische&#x2F;Statische MFC-Einbindung on Fri, 12 May 2006 13:52:31 GMT]]></title><description><![CDATA[<p>Du hast evtl. die Standard Ressourcen nicht eingebunden &quot;afxres.rc&quot;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1056497</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1056497</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Fri, 12 May 2006 13:52:31 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische&#x2F;Statische MFC-Einbindung on Fri, 12 May 2006 14:13:57 GMT]]></title><description><![CDATA[<p>Martin Richter schrieb:</p>
<blockquote>
<p>Du hast evtl. die Standard Ressourcen nicht eingebunden &quot;afxres.rc&quot;?</p>
</blockquote>
<p>Danke erstmal fuer den Tip, aber irgendwie komme ich damit nicht klar.<br />
Hatte sie nicht eingebunden, war irgendwie bisher nicht noetig. Wenn ich sie jetzt mit einbinde, dann kommen verdammt viele Fehlermeldungen.<br />
Hier mal nur ein Auszug:</p>
<pre><code>c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\afxres.rc(36) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'DISCARDABLE'
c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\afxres.rc(36) : error C2501: 'STRINGTABLE': Fehlende Speicherklasse oder Typspezifizierer
c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\afxres.rc(38) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'BEGIN'
c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\afxres.rc(38) : error C2501: 'DISCARDABLE': Fehlende Speicherklasse oder Typspezifizierer
c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\afxres.rc(38) : error C2143: Syntaxfehler: Es fehlt ';' vor 'constant'
c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\afxres.rc(38) : error C2501: 'BEGIN': Fehlende Speicherklasse oder Typspezifizierer
</code></pre>
<p>Ich habe versucht sie in der &quot;Hauptheaderdatei der Anwendung&quot; einzubinden, oder muss man das woanders machen??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1056512</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1056512</guid><dc:creator><![CDATA[raindrop]]></dc:creator><pubDate>Fri, 12 May 2006 14:13:57 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische&#x2F;Statische MFC-Einbindung on Fri, 12 May 2006 15:07:25 GMT]]></title><description><![CDATA[<p>Wir hast Du es denn gemacht? Hast Du die afxres.rc in Deine eigene rc Datei über die Resource Includes hinzugefügt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1056564</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1056564</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Fri, 12 May 2006 15:07:25 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische&#x2F;Statische MFC-Einbindung on Fri, 12 May 2006 15:18:45 GMT]]></title><description><![CDATA[<p>Naja, da ich ehrlich gesagt keine Ahnung hab, wie man so eine Resource-Datei einbindet, habe ich es einfach mit #include &quot;afxres.rc&quot; in meiner Hauptheader-Datei eingebunden.</p>
<p>Waere Dir wirklich sehr dankbar, wenn Du mir mal beschreibst, wie ich es machen muss! <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1056576</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1056576</guid><dc:creator><![CDATA[raindrop]]></dc:creator><pubDate>Fri, 12 May 2006 15:18:45 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische&#x2F;Statische MFC-Einbindung on Fri, 12 May 2006 15:22:24 GMT]]></title><description><![CDATA[<p>Ich habe gerade mal detailierter nachgesehen.<br />
In meiner Resource-Datei steht doch schon ein</p>
<pre><code class="language-cpp">#include &quot;afxres.h&quot;
</code></pre>
<p>und weiter unten dann auch noch</p>
<pre><code class="language-cpp">&quot;#include &quot;&quot;afxres.rc&quot;&quot;
</code></pre>
<p>Scheint also doch dabei zu sein...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1056579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1056579</guid><dc:creator><![CDATA[raindrop]]></dc:creator><pubDate>Fri, 12 May 2006 15:22:24 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische&#x2F;Statische MFC-Einbindung on Fri, 12 May 2006 21:16:12 GMT]]></title><description><![CDATA[<p>So, habe nochmal intensiv den Debugger laufen lassen.<br />
Hier mal meine Erkenntnisse:<br />
Wie schon gesagt, tritt der Fehler ja beim Aufrufen der CView eigenen Funktion OnFilePrintPreview() auf.<br />
In dieser besagen OnFilePrintPreview() der CView (das sind jetzt Code-Ausschnitte aus der viewprew.cpp direkt aus der MFC) wird dann eine CDialogBar erstellt:</p>
<pre><code class="language-cpp">// Create the toolbar from the dialog resource
pView-&gt;m_pToolBar = new CDialogBar;
</code></pre>
<p>Ein paar Zeilen spaeter wird die DialogBar dann auch initialisiert:</p>
<pre><code class="language-cpp">if (!pView-&gt;m_pToolBar-&gt;Create(pParent, MAKEINTRESOURCE(nIDResource),CBRS_TOP, AFX_IDW_PREVIEW_BAR))
</code></pre>
<p>Und dort tritt dann der Fehler in der Create-Funktion auf, genauer bei:</p>
<pre><code class="language-cpp">if (!_AfxCheckDialogTemplate(lpszTemplateName, TRUE))
{
	ASSERT(FALSE);          // invalid dialog template name
	PostNcDestroy();        // cleanup if Create fails too soon
	return FALSE;
}
</code></pre>
<p>So, und zu guter Letzt passiert in der AfxCheckDialogTemplate folgendes:</p>
<pre><code class="language-cpp">BOOL AFXAPI _AfxCheckDialogTemplate(LPCTSTR lpszResource, BOOL bInvisibleChild)
{
	ASSERT(lpszResource != NULL);
	HINSTANCE hInst = AfxFindResourceHandle(lpszResource, RT_DIALOG);
	HRSRC hResource = ::FindResource(hInst, lpszResource, RT_DIALOG);
	if (hResource == NULL)
	{
		if (DWORD_PTR(lpszResource) &gt; 0xffff)
			TRACE(traceAppMsg, 0, _T(&quot;ERROR: Cannot find dialog template named '%s'.\n&quot;),
				lpszResource);
		else
			TRACE(traceAppMsg, 0, &quot;ERROR: Cannot find dialog template with IDD 0x%04X.\n&quot;,
				LOWORD((DWORD_PTR)lpszResource));
		return FALSE;
	}
</code></pre>
<p>Die uebergebene Variable lpszResource ist dabei eine Resource mit der ID 30723, und zwar sowohl bei dynamisch gelinkter MFC als auch bei statisch eingebundener! Merkwuerdigerweise scheint diese ID im dynamischen Fall vorhanden zu sein, im statischen Fall aber nicht auffindbar(hResource==NULL). Im bezweifle zwar, dass jemand diese Resource-ID kennt, aber vielleicht kann mir ja doch jemand sagen, wozu die gehoert bzw. wo die auftaucht?!</p>
<p>Ansonsten habe ich auf diese Funktionen ja keinen Einfluss, da sie direkt in der MFC ablaufen und nicht in meinem Quelltext. Von daher verstehe ich auch nicht, was das Problem ist, nur wenn ich die MFC statisch einbinde?!<br />
Ich weiss auch nicht genau, was das fuer eine DialogBar sein soll. Theoretisch kann es ja hoechstens die ToolBar sein, mit ganz links &quot;Drucken&quot;, danach irgendwas mit &quot;Druckeinstellungen&quot;, &quot;Vergroessern&quot;, &quot;Verkleinern&quot;, ...</p>
<p>Eventuell hilft diese Praezisierung jemanden ja dabei, mir einen Tip zu geben, was ich noch ausprobieren kann, um es hinzubekommen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1056798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1056798</guid><dc:creator><![CDATA[raindrop]]></dc:creator><pubDate>Fri, 12 May 2006 21:16:12 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische&#x2F;Statische MFC-Einbindung on Sat, 13 May 2006 07:05:24 GMT]]></title><description><![CDATA[<p>Die kennt jeder: <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /><br />
#define AFX_IDD_PREVIEW_TOOLBAR 30723<br />
in afxres.h!</p>
<p>Ich kann mich nur wiederholen. Deine Resourcen für die MFC werden nicht eingefügt! Evtl. Musst Du afxprint.rc separat in Deine Ressourcen includes aufnehmen.</p>
<p>Erzeuge doch mal ein neues Projekt mit Druck Features und statischer Bindung an die MFC und schau dir die MFC Datei an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1056867</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1056867</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Sat, 13 May 2006 07:05:24 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische&#x2F;Statische MFC-Einbindung on Sat, 13 May 2006 08:26:46 GMT]]></title><description><![CDATA[<p>Mir ist sie noch nicht ueber den Weg gelaufen. <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 fuer Deine Hilfe! Ich bin letzte Nacht auch auf die &quot;afxprint.rc&quot; gestossen und nach deren Einbindung lief es dann; hab die Toolbar jetzt zwar in Englisch, aber das kann man ja noch aendern. War dann nur zu muede und hab's nicht gleich reingeschrieben, dass es daran liegt.</p>
<p>Trotzdem vielen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1056897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1056897</guid><dc:creator><![CDATA[raindrop]]></dc:creator><pubDate>Sat, 13 May 2006 08:26:46 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische&#x2F;Statische MFC-Einbindung on Sat, 13 May 2006 08:29:21 GMT]]></title><description><![CDATA[<p>#include &quot;l.deu\afxprint.rc&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1056900</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1056900</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Sat, 13 May 2006 08:29:21 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische&#x2F;Statische MFC-Einbindung on Sat, 13 May 2006 08:35:01 GMT]]></title><description><![CDATA[<p>Danke!! Werde ich dann gleich mal ausprobieren! <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/1056903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1056903</guid><dc:creator><![CDATA[raindrop]]></dc:creator><pubDate>Sat, 13 May 2006 08:35:01 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische&#x2F;Statische MFC-Einbindung on Sat, 13 May 2006 18:57:06 GMT]]></title><description><![CDATA[<p>Muß mich auch mal bedanken, habe/hatte das gleiche Problem aber jetzt läuft es.</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1057231</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1057231</guid><dc:creator><![CDATA[CTecS]]></dc:creator><pubDate>Sat, 13 May 2006 18:57:06 GMT</pubDate></item></channel></rss>