<?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 zentrieren Problem]]></title><description><![CDATA[<p>hi</p>
<p>ich erzeuge eine non-modale Dialogbox mit</p>
<pre><code class="language-cpp">m_hWnd = CreateDialogParam(hInstance,MAKEINTRESOURCE(m_lpTemplate)
,m_hWndParent,(DLGPROC)(DialogProc), (LPARAM)Data);

ShowWindow(m_hWnd,SW_SHOWNORMAL);
</code></pre>
<p>Das Problem ist, die Abmessungen der Dialogbox zu erfahren<br />
(entweder nach Showwindow oder in WM_INITDIALOG)</p>
<pre><code class="language-cpp">RECT lpRect;
//memset(&amp;lpRect,0,sizeof(RECT));
GetWindowRect(m_hWnd,&amp;lpRect);
</code></pre>
<p>Der Sinn der Sache ist, die Dialogbox in die Mitte des Bildschirms zu bringen.</p>
<p>Dies funktioniert auch wunderbar wenn ich eine modale Dialogbox mit DialogBoxParam erstelle.</p>
<p>Die Dialogbox wird jedesmal viel zu groß dargestellt (lpRect ist irgendwie willkürlich).</p>
<p>Habe herausgefunden, dass wenn man im Aufruf &quot;CreateDialogParam&quot; den Parameter m_hwndParent auf 0 setzt, wegglässt, dann funktioniert das zentrieren.<br />
Allerdings zeigt m_hWndParent 100% auf ein anderes eigenes Fenster.</p>
<p>woran kann das liegen?<br />
THX</p>
<p>Zentrieren :</p>
<pre><code class="language-cpp">...
{
RECT lpRect;
memset(&amp;lpRect,0,sizeof(RECT));
GetWindowRect(m_hWnd,&amp;lpRect); &lt;&lt;-- hier gibts unsinniges lpRect
lpRect.left = (GetSystemMetrics(SM_CXSCREEN) / 2) - (lpRect.right / 2);
lpRect.top = (GetSystemMetrics(SM_CYSCREEN) / 2) - (lpRect.bottom / 2);
::MoveWindow(m_hWnd,lpRect.left,lpRect.top,lpRect.right,lpRect.bottom,FALSE);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/94210/dialog-zentrieren-problem</link><generator>RSS for Node</generator><lastBuildDate>Sat, 25 Apr 2026 20:51:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/94210.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 06 Dec 2004 21:49:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Dialog zentrieren Problem on Mon, 06 Dec 2004 21:49:21 GMT]]></title><description><![CDATA[<p>hi</p>
<p>ich erzeuge eine non-modale Dialogbox mit</p>
<pre><code class="language-cpp">m_hWnd = CreateDialogParam(hInstance,MAKEINTRESOURCE(m_lpTemplate)
,m_hWndParent,(DLGPROC)(DialogProc), (LPARAM)Data);

ShowWindow(m_hWnd,SW_SHOWNORMAL);
</code></pre>
<p>Das Problem ist, die Abmessungen der Dialogbox zu erfahren<br />
(entweder nach Showwindow oder in WM_INITDIALOG)</p>
<pre><code class="language-cpp">RECT lpRect;
//memset(&amp;lpRect,0,sizeof(RECT));
GetWindowRect(m_hWnd,&amp;lpRect);
</code></pre>
<p>Der Sinn der Sache ist, die Dialogbox in die Mitte des Bildschirms zu bringen.</p>
<p>Dies funktioniert auch wunderbar wenn ich eine modale Dialogbox mit DialogBoxParam erstelle.</p>
<p>Die Dialogbox wird jedesmal viel zu groß dargestellt (lpRect ist irgendwie willkürlich).</p>
<p>Habe herausgefunden, dass wenn man im Aufruf &quot;CreateDialogParam&quot; den Parameter m_hwndParent auf 0 setzt, wegglässt, dann funktioniert das zentrieren.<br />
Allerdings zeigt m_hWndParent 100% auf ein anderes eigenes Fenster.</p>
<p>woran kann das liegen?<br />
THX</p>
<p>Zentrieren :</p>
<pre><code class="language-cpp">...
{
RECT lpRect;
memset(&amp;lpRect,0,sizeof(RECT));
GetWindowRect(m_hWnd,&amp;lpRect); &lt;&lt;-- hier gibts unsinniges lpRect
lpRect.left = (GetSystemMetrics(SM_CXSCREEN) / 2) - (lpRect.right / 2);
lpRect.top = (GetSystemMetrics(SM_CYSCREEN) / 2) - (lpRect.bottom / 2);
::MoveWindow(m_hWnd,lpRect.left,lpRect.top,lpRect.right,lpRect.bottom,FALSE);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/667639</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/667639</guid><dc:creator><![CDATA[Dezipaitor]]></dc:creator><pubDate>Mon, 06 Dec 2004 21:49:21 GMT</pubDate></item><item><title><![CDATA[Reply to Dialog zentrieren Problem on Mon, 06 Dec 2004 22:10:41 GMT]]></title><description><![CDATA[<p>benutz mal die forensuche --&gt; CenterWindow<br />
dann wirst du eine funktion von WebFritzi und eine von mir finden</p>
<p>auch noch ein paar infos<br />
<a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/dialogboxes/usingdialogboxes.asp" rel="nofollow">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/dialogboxes/usingdialogboxes.asp</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/667657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/667657</guid><dc:creator><![CDATA[miller_m]]></dc:creator><pubDate>Mon, 06 Dec 2004 22:10:41 GMT</pubDate></item><item><title><![CDATA[Reply to Dialog zentrieren Problem on Mon, 06 Dec 2004 22:31:04 GMT]]></title><description><![CDATA[<p>Dann könntest dem Dialog Box Template auch den Style DS_CENTER geben und er wird automatisch zentriert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/667668</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/667668</guid><dc:creator><![CDATA[D*niel *chumann]]></dc:creator><pubDate>Mon, 06 Dec 2004 22:31:04 GMT</pubDate></item><item><title><![CDATA[Reply to Dialog zentrieren Problem on Tue, 07 Dec 2004 20:55:00 GMT]]></title><description><![CDATA[<p>hi,</p>
<p>erstmal danke für Eure Hilfe!</p>
<p>Die MS Site hab ich in der MSDN Form gelesen. Allerdings sind dort alle Quelltextbeispiele über Javascript ersteinmal geschlossen - d.h. man muss sich gezielt anklicken. Dabei ist mir wohl das Beispiel mit SetWindowspos entgangen.<br />
Das nutze ich nun etwas abgewandelt.</p>
<p>Es ist eben merkwürdig, dass damit nun funktioniert, obwohl mein eigener Quelltext auch funktioniert, aber eben nicht immer.</p>
<p>DS_CENTER ist eine gute Idee, leider benutze ich eine Klassen, die die Zentrierung bereitstellen muss, und da sollen nicht alle Dialoge zentriert sein.</p>
<p>Abgesehen davon :<br />
Wie kann man denn, den Style DS_CENTER ändern? Müsste doch mit SetWindowLong gehen oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/668419</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/668419</guid><dc:creator><![CDATA[Dezipaitor]]></dc:creator><pubDate>Tue, 07 Dec 2004 20:55:00 GMT</pubDate></item></channel></rss>