<?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[Floating Dialog]]></title><description><![CDATA[<p>Guten Tag!</p>
<p>Wenn der User auf einen bestimmten Button auf der Toolbar klickt, möchte ich, dass ein Fenster erscheint das eine ListBox und ein paar Buttons enthält. Das Hauptfenster soll den Focus dabei nicht verlieren.</p>
<p>Ich hab dies bereits mit einem moduslosen Dialog versucht, aber wenn er als Popup definiert wird, verliert das Hauptfenster den Focus, und wenn er als Child definiert wird, verliert zwar das Hauptfenster den Focus nicht, aber das Dialogfenster verschwindet unter all den anderen Childfenstern...</p>
<p>Um es vielleicht etwas deutlicher zu machen:</p>
<p>Manche Anwendungen haben ja einen Rückgängig-Button in der Toolbar, und manchmal ist auch ein Pfeil daneben. Wenn man darauf klickt, erscheint ein winziges Fenster mit einer ListBox wo man auswählen kann welche und wieviele Schritte rückgängig gemacht werden sollen. Ich will genau das selbe machen (nur der Zweck ist ein anderer).</p>
<p>Bitte Wissende herzlichst um Hilfe <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>MfG,<br />
Aziz</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/68271/floating-dialog</link><generator>RSS for Node</generator><lastBuildDate>Wed, 08 Apr 2026 18:52:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/68271.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 16 Mar 2004 14:27:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Floating Dialog on Tue, 16 Mar 2004 14:27:39 GMT]]></title><description><![CDATA[<p>Guten Tag!</p>
<p>Wenn der User auf einen bestimmten Button auf der Toolbar klickt, möchte ich, dass ein Fenster erscheint das eine ListBox und ein paar Buttons enthält. Das Hauptfenster soll den Focus dabei nicht verlieren.</p>
<p>Ich hab dies bereits mit einem moduslosen Dialog versucht, aber wenn er als Popup definiert wird, verliert das Hauptfenster den Focus, und wenn er als Child definiert wird, verliert zwar das Hauptfenster den Focus nicht, aber das Dialogfenster verschwindet unter all den anderen Childfenstern...</p>
<p>Um es vielleicht etwas deutlicher zu machen:</p>
<p>Manche Anwendungen haben ja einen Rückgängig-Button in der Toolbar, und manchmal ist auch ein Pfeil daneben. Wenn man darauf klickt, erscheint ein winziges Fenster mit einer ListBox wo man auswählen kann welche und wieviele Schritte rückgängig gemacht werden sollen. Ich will genau das selbe machen (nur der Zweck ist ein anderer).</p>
<p>Bitte Wissende herzlichst um Hilfe <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>MfG,<br />
Aziz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/481760</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/481760</guid><dc:creator><![CDATA[Aziz]]></dc:creator><pubDate>Tue, 16 Mar 2004 14:27:39 GMT</pubDate></item><item><title><![CDATA[Reply to Floating Dialog on Tue, 16 Mar 2004 15:04:39 GMT]]></title><description><![CDATA[<p>Schau dir mal unter <a href="http://msdn.microsoft.com/library/en-us/shellcc/platform/commctls/toolbar/toolbar_using.asp" rel="nofollow">Using Toolbar Controls</a> den Punkt &quot;Handling Drop-down Buttons&quot; an <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/481796</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/481796</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Tue, 16 Mar 2004 15:04:39 GMT</pubDate></item><item><title><![CDATA[Reply to Floating Dialog on Tue, 16 Mar 2004 15:19:27 GMT]]></title><description><![CDATA[<p>Joa, wieso lässt du da kein Menu aufklappen? So kenne ich das. Ne ListBox habe ich in dem Zusammenhang noch nie gesehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/481829</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/481829</guid><dc:creator><![CDATA[WebFritzi]]></dc:creator><pubDate>Tue, 16 Mar 2004 15:19:27 GMT</pubDate></item><item><title><![CDATA[Reply to Floating Dialog on Tue, 16 Mar 2004 16:38:50 GMT]]></title><description><![CDATA[<p>flenders schrieb:</p>
<blockquote>
<p>Schau dir mal unter <a href="http://msdn.microsoft.com/library/en-us/shellcc/platform/commctls/toolbar/toolbar_using.asp" rel="nofollow">Using Toolbar Controls</a> den Punkt &quot;Handling Drop-down Buttons&quot; an <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>
</blockquote>
<p>Es geht nicht so sehr um die Toolbar. Der Zusammenhang damit ist in meinem Beispiel nicht von Bedeutung. Ich möchte wissen, wie ich ein Popup-Fenster erstelle, das über allen anderen Fenstern steht und, das den Focus des Hauptfensters nicht stiehlt. Ihr braucht euch nur ein Popup-Menu vorstellen. Wenn ich z.B. rechts auf ein Edit-Control klicke dann erscheint ja für gewöhnlich ein Kontextmenü. Ähnlich möchte ich, dass ein Fenster erscheint wenn ich auf einen Button klicke (egal ob normaler Button, oder Toolbarbutton etc.).</p>
<p>In der Beispiel-Funktion bei dem Thema &quot;Handlings Drop-down Buttons&quot; wird ein Popup-Menu erzeugt, was ja ganz simpel ist. Interessant wär das Beispiel gewesen wenn es das gemacht hätte was mir so vorschwebt...<br />
Aber trotzdem danke für den Link. In Zukunft möchte ich nämlich, dass mein Popup-Fenster direkt unter dem Button der Toolbar erscheint. So gesehen, ist der Code nützlich für mich.</p>
<p>WebFritzi schrieb:</p>
<blockquote>
<p>Joa, wieso lässt du da kein Menu aufklappen? So kenne ich das. Ne ListBox habe ich in dem Zusammenhang noch nie gesehen.</p>
</blockquote>
<p>Vielleicht hast du Visual C++ 6.0? Wenn du dort auf den Pfeil neben dem Rückgängig-Button klickst dann erscheint ein Popup-Fenster mit einer ListBox und einem Static Label.</p>
<p>Ich möchte kein Popup-Menu erscheinen lassen. Das erfüllt ganz einfach die Anforderung nicht, die ich mir selber stelle.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/481895</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/481895</guid><dc:creator><![CDATA[Aziz]]></dc:creator><pubDate>Tue, 16 Mar 2004 16:38:50 GMT</pubDate></item><item><title><![CDATA[Reply to Floating Dialog on Tue, 16 Mar 2004 18:51:02 GMT]]></title><description><![CDATA[<p>Aber du willst das gleiche Verhalten wie ein Menü? Dann nimm ein Spy-Programm und guck welche Styles das Windows-Menüfenster gesetzt hat.</p>
<p>Ich denke es liegt an WS_EX_TOOLWINDOW.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/482004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/482004</guid><dc:creator><![CDATA[.]]></dc:creator><pubDate>Tue, 16 Mar 2004 18:51:02 GMT</pubDate></item><item><title><![CDATA[Reply to Floating Dialog on Tue, 16 Mar 2004 21:00:17 GMT]]></title><description><![CDATA[<p>Ich hab schon probiert mit einem Spyprogramm (Winspector) die Eigenschaften des Popup-Fensters herauszufinden, aber Popup-Fenster neigen leider dazu zu verschwinden, wenn man wegklickt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Irgendeine Idee wie ich das ausspionieren könnte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/482101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/482101</guid><dc:creator><![CDATA[Aziz]]></dc:creator><pubDate>Tue, 16 Mar 2004 21:00:17 GMT</pubDate></item><item><title><![CDATA[Reply to Floating Dialog on Tue, 16 Mar 2004 21:07:15 GMT]]></title><description><![CDATA[<p>LoL, jetzt hab ich rausgefunden wie das geht. Ich werd mir mal die Styles ansehen, und euch berichten ob ich das Problem gelöst habe oder nicht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/482111</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/482111</guid><dc:creator><![CDATA[Aziz]]></dc:creator><pubDate>Tue, 16 Mar 2004 21:07:15 GMT</pubDate></item><item><title><![CDATA[Reply to Floating Dialog on Tue, 16 Mar 2004 21:07:53 GMT]]></title><description><![CDATA[<p>Manchmal passiert es das sich diese Popup-Menüs nicht richtig schließen. Diesen Bug habe ich ausgenutzt um es zu spyen. <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>WS_OVERLAPPED | WS_POPUP | WS_VISIBLE | WS_CLIPSIBLINGS | WS_BORDER</p>
<p>WS_EX_DLGMODALFRAME | WS_EX_TOPMOST | WS_EX_TOOLWINDOW | WS_EX_WINDOWEDGE | WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR</p>
<p>Ich hatte das jetzt schon die ganze Zeit ausprobiert, aber ich kriege es nicht hin. Das Popup-Fenster klaut immer den Focus.</p>
<p>Früher hatte ich genau das selbe gewollt und ich glaub ich habe es auch hingekriegt, weiß aber nicht mehr genau wie. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Wenn du das irgendwie noch herausfinden solltest sag unbedingt in diesem Thread bescheid, ich will das auch wissen. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/482112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/482112</guid><dc:creator><![CDATA[.]]></dc:creator><pubDate>Tue, 16 Mar 2004 21:07:53 GMT</pubDate></item><item><title><![CDATA[Reply to Floating Dialog on Tue, 16 Mar 2004 21:21:51 GMT]]></title><description><![CDATA[<p>. schrieb:</p>
<blockquote>
<p>Manchmal passiert es das sich diese Popup-Menüs nicht richtig schließen. Diesen Bug habe ich ausgenutzt um es zu spyen. <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>Den brauch ich nicht ausnutzen. Winspector hat ein besonderes Feature, mit dem man das problemlos spyen kann. Danke trotzdem.</p>
<p>Außerdem sag ich ganz bestimmt bescheid falls ich so ein richtiges Popup-Fenster hinkriege <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/482122</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/482122</guid><dc:creator><![CDATA[Aziz]]></dc:creator><pubDate>Tue, 16 Mar 2004 21:21:51 GMT</pubDate></item><item><title><![CDATA[Reply to Floating Dialog on Wed, 17 Mar 2004 17:04:35 GMT]]></title><description><![CDATA[<p>Hab jetzt auch rausgefunden wie es mit Winspector funktioniert. <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>Ich hab jetzt nochmal über Google Groups gesucht und ein Hinweis auf &quot;Fakemenu&quot; bekommen.</p>
<p>Der Code ist sogar im Platform SDK vorhanden:</p>
<p>Microsoft Platform SDK\Samples\winui\Shell\Fakemenu</p>
<p>Ich werds mir nachher mal anschauen. Sieht aber gut aus. <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/482857</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/482857</guid><dc:creator><![CDATA[.]]></dc:creator><pubDate>Wed, 17 Mar 2004 17:04:35 GMT</pubDate></item><item><title><![CDATA[Reply to Floating Dialog on Wed, 17 Mar 2004 18:53:03 GMT]]></title><description><![CDATA[<p>. schrieb:</p>
<blockquote>
<p>Hab jetzt auch rausgefunden wie es mit Winspector funktioniert. <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>Gratuliere <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>Für diejenigen, die es auch wissen wollen: Im Window Log-Fenster müsst ihr rechts auf das gewünschte Fenster klicken, und dann &quot;Add window to watch...&quot; wählen. Jedes mal wenn ein Fenster dieser Klasse erzeugt wird, zeigt Winspector das entsprechende Property- od. Message-Fenster.</p>
<p>. schrieb:</p>
<blockquote>
<p>Ich hab jetzt nochmal über Google Groups gesucht und ein Hinweis auf &quot;Fakemenu&quot; bekommen.</p>
<p>Der Code ist sogar im Platform SDK vorhanden:</p>
<p>Microsoft Platform SDK\Samples\winui\Shell\Fakemenu</p>
<p>Ich werds mir nachher mal anschauen. Sieht aber gut aus. <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>
</blockquote>
<p>Ich weiß schon wie man Popup-Fenster mit besagtem Verhalten programmieren kann. Ich hab aber nicht die Zeit, genau zu erklären wie. Als Stichwort nenn ich mal <strong>WM_NCACTIVATE</strong> und verweise Interessenten auf diese Seite: <a href="http://www.catch22.org.uk/tuts/docking1.asp" rel="nofollow">http://www.catch22.org.uk/tuts/docking1.asp</a> ( Prevent window deactivation )</p>
<p>Und vielleicht kann noch jemand mit diesem Code etwas anfangen:</p>
<pre><code class="language-cpp">BOOL CALLBACK DlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
  switch( uMsg )
  {
  case WM_INITDIALOG:
    return TRUE;
  case WM_ACTIVATE:
    switch( LOWORD(wParam) )
    {
    case WA_ACTIVE:
      SendMessage(GetParent(hwndDlg), WM_NCACTIVATE, (WPARAM)TRUE, NULL);
      break;
    case WA_INACTIVE:
      DestroyWindow(hwndDlg);
      break;
    }
    return 0;
  case WM_ACTIVATEAPP:
    if( !wParam )
    {
      SendMessage(GetParent(hwndDlg), WM_NCACTIVATE, (WPARAM)FALSE, NULL);
      DestroyWindow(hwndDlg);
    }
    return TRUE;
  case WM_COMMAND:
    switch( LOWORD(wParam) )
    {
    case IDOK:
    case IDCANCEL:
      DestroyWindow(hwndDlg);
      return TRUE;
    }
    break;
  }
  return FALSE;
}
</code></pre>
<p>Der Code ist sehr spezifisch, d.h. er ist an meine Bedürfnisse angepasst, und enthält wahrscheinlich noch Bugs. Am besten ihr lest euch die Webseite durch, und versucht das Prinzip zu verstehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/482926</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/482926</guid><dc:creator><![CDATA[Aziz]]></dc:creator><pubDate>Wed, 17 Mar 2004 18:53:03 GMT</pubDate></item><item><title><![CDATA[Reply to Floating Dialog on Sat, 20 Mar 2004 12:25:10 GMT]]></title><description><![CDATA[<p>Wie ich befürchtet habe, ist der Code nicht optimal.</p>
<pre><code class="language-cpp">case WA_INACTIVE:
      DestroyWindow(hwndDlg);
      break;
</code></pre>
<p>Die obigen Zeilen verursachen eine unendliche Schleife. Naja sie hört dann doch wieder irgendwann auf, aber erst beim ~25. Schleifendurchgang (beobachtbar mit Winspector). 'DestroyWindow' sendet anscheinend zusätzlich noch eine WM_ACTIVATE Message mit dem Wert WA_INACTIVE, was dann logischerweise dazu führt, dass DestroyWindow wieder aufgerufen wird.</p>
<p>Es gibt, wie ich herausgefunden habe, 3 Lösungsansätze:<br />
.) Man verwendet einen lokalen Mousehook. Wenn der User einen Mausklick durchführt, prüft man ob der außerhalb des Dialoges war, wenn ja, dann zerstört man das Dialog-Fenster. (Vielleicht die sicherste Methode)<br />
.) Man schickt mit PostMessage asynchron eine Message an sich selbst, welche wenn verarbeitet, das Fenster zerstört. Sprich:</p>
<pre><code class="language-cpp">case WA_INACTIVE:
      PostMessage(hwndDlg, WM_COMMAND, IDOK, 0); //funktioniert bei mir soweit tadellos
      break;
</code></pre>
<p>.) Wenn ihr Popup-Verhalten bei normalen Fenstern haben wollt, dann könnt ihr WM_KILLFOCUS abfangen und dort DestroyWindow aufrufen. Ob das Fenster diese Nachricht garantiert immer erhält weiß ich nicht. Dialog-Fenster erhalten diese Nachricht leider nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/484857</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/484857</guid><dc:creator><![CDATA[Aziz]]></dc:creator><pubDate>Sat, 20 Mar 2004 12:25:10 GMT</pubDate></item><item><title><![CDATA[Reply to Floating Dialog on Sat, 20 Mar 2004 19:42:04 GMT]]></title><description><![CDATA[<p>Noch ein Nachtrag zur 2. Lösung:</p>
<p>In der Nachrichtenbehandlung von WM_ACTIVATEAPP muss eine Zeile entfernt werden.</p>
<pre><code class="language-cpp">case WM_ACTIVATEAPP:
    if( !wParam )
    {
      SendMessage(GetParent(hwndDlg), WM_NCACTIVATE, (WPARAM)FALSE, NULL);
      //DestroyWindow(hwndDlg); //&lt;- diese Zeile löschen
    }
    return TRUE;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/485130</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/485130</guid><dc:creator><![CDATA[Aziz]]></dc:creator><pubDate>Sat, 20 Mar 2004 19:42:04 GMT</pubDate></item></channel></rss>