<?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[nichtmodalen Dialog bei bedarf anzeigen]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe ein problem. Und zwar habe ich einen nichtmodalen Dialog erzeugt, der beim klicken auf einen &quot;SelftestBtn()&quot; angezeigt werden soll, und wenn die Procedure &quot;OnSelftestBtn&quot; fertig ist soll dieser wieder versteckt werden.</p>
<p>Beim 1. Versuch tritt folgendes Problem auf:</p>
<p>Mit &quot;ShowWindow(SW_NORMAL)&quot; (siehe Fettdruck im Code) wird beim laufen der Anwendung zuerst der Rahmen des Dialoges angezeigt, jedoch der Inhalt erst am Ende von &quot;OnSelftestBtn&quot;. Aber zu diesem Zeitpunkt soll der Dialog wieder geschlossen werden, und so hat der Anwender keine Chance den Inhalt der Dialoges zu sehen, bzw. sieht Ihn zu spaet und weiss nichts damit anzufangen.</p>
<p>2. Versuch:</p>
<p>Ich habe mir gedacht, wenn ich den Dialog ueber einen unabhaengigen Thread anzeigen lasse, dann geht dass. Nun wird aber der gesamte Dialog nur am Ende von &quot;OnSelftestBtn&quot; angezeigt. Auch wenn ich den Thread auf hoechste Priroritaet setzte.</p>
<p>Ich bin sehr dankbar, wenn mir jemand da weiterhelfen kann.</p>
<p>Gruesse Lutz</p>
<pre><code>//Ausschnitt aus Adaptionpage.cpp
void CAdaptionPage::OnSelftestBtn() 
{
 CDaoDatabase db;
 CVerbindungSet vs;
 CKabelExSet ks;
 CString strCabel1,strCabel2;
 CString strGesCabel1, strGesCabel2;
 CString strGesCabelA1, strGesCabelA2;
 CString strX1,strX2;
 CString strSig1,strSig2;
 CString strAder1, strAder2;
 CString Pin, strV;
 BOOL isFinishedPins;
 BOOL isFinishedConnections;
 CButton *pButton;
 int  noOfSig = 0;
 CKPGPropSheet* pSheet = (CKPGPropSheet*)GetParent();
 CProofObjPage* pProofObjPage = (CProofObjPage*)pSheet-&gt;GetPage(1);
 CMainFrame* pFrame = (CMainFrame*)pSheet-&gt;GetParent();

 CSetupPage* pSetupPage = (CSetupPage *)pSheet-&gt;GetPage(0);
 int max_no_of_channels = pSetupPage-&gt;m_channelCnt;

[b]// pSheet-&gt;m_pStatusDialog-&gt;ShowWindow(SW_NORMAL); //1.Versuch
 pSheet-&gt;m_pShowStatusThread-&gt;ResumeThread();//2.Versuch[/b]
 pFrame-&gt;SetStatusText(0,&quot;Busy&quot;);
 pButton = (CButton*)GetDlgItem(IDC_CABELS_RADIO);
 pButton-&gt;SetCheck(0);
 pButton = (CButton*)GetDlgItem(IDC_PARTS_RADIO);
 pButton-&gt;SetCheck(0);

 CListBox *pListBox = (CListBox*)GetDlgItem(IDC_TODO_LIST);  // fuer Statusausgaben
 pListBox-&gt;ResetContent();
 UpdateWindow();

 BeginWaitCursor();
         :
         ://weiterer Code, berechnung ca 4 sec
         :
</code></pre>
<p>Hier die Definition von den Belangreichen Variablen<br />
CStatusDialog ist Abgeleitet von CDialog<br />
CShowStatusThread ist Abgeleitet von CWinThread</p>
<pre><code>//Ausschnitt aus KPGPropsheet.h
public:
	CStatusDialog* m_pStatusDialog;
	CShowStatusThread* m_pShowStatusThread;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/72370/nichtmodalen-dialog-bei-bedarf-anzeigen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 28 Apr 2026 04:20:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/72370.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 28 Apr 2004 06:05:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to nichtmodalen Dialog bei bedarf anzeigen on Wed, 28 Apr 2004 06:05:16 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe ein problem. Und zwar habe ich einen nichtmodalen Dialog erzeugt, der beim klicken auf einen &quot;SelftestBtn()&quot; angezeigt werden soll, und wenn die Procedure &quot;OnSelftestBtn&quot; fertig ist soll dieser wieder versteckt werden.</p>
<p>Beim 1. Versuch tritt folgendes Problem auf:</p>
<p>Mit &quot;ShowWindow(SW_NORMAL)&quot; (siehe Fettdruck im Code) wird beim laufen der Anwendung zuerst der Rahmen des Dialoges angezeigt, jedoch der Inhalt erst am Ende von &quot;OnSelftestBtn&quot;. Aber zu diesem Zeitpunkt soll der Dialog wieder geschlossen werden, und so hat der Anwender keine Chance den Inhalt der Dialoges zu sehen, bzw. sieht Ihn zu spaet und weiss nichts damit anzufangen.</p>
<p>2. Versuch:</p>
<p>Ich habe mir gedacht, wenn ich den Dialog ueber einen unabhaengigen Thread anzeigen lasse, dann geht dass. Nun wird aber der gesamte Dialog nur am Ende von &quot;OnSelftestBtn&quot; angezeigt. Auch wenn ich den Thread auf hoechste Priroritaet setzte.</p>
<p>Ich bin sehr dankbar, wenn mir jemand da weiterhelfen kann.</p>
<p>Gruesse Lutz</p>
<pre><code>//Ausschnitt aus Adaptionpage.cpp
void CAdaptionPage::OnSelftestBtn() 
{
 CDaoDatabase db;
 CVerbindungSet vs;
 CKabelExSet ks;
 CString strCabel1,strCabel2;
 CString strGesCabel1, strGesCabel2;
 CString strGesCabelA1, strGesCabelA2;
 CString strX1,strX2;
 CString strSig1,strSig2;
 CString strAder1, strAder2;
 CString Pin, strV;
 BOOL isFinishedPins;
 BOOL isFinishedConnections;
 CButton *pButton;
 int  noOfSig = 0;
 CKPGPropSheet* pSheet = (CKPGPropSheet*)GetParent();
 CProofObjPage* pProofObjPage = (CProofObjPage*)pSheet-&gt;GetPage(1);
 CMainFrame* pFrame = (CMainFrame*)pSheet-&gt;GetParent();

 CSetupPage* pSetupPage = (CSetupPage *)pSheet-&gt;GetPage(0);
 int max_no_of_channels = pSetupPage-&gt;m_channelCnt;

[b]// pSheet-&gt;m_pStatusDialog-&gt;ShowWindow(SW_NORMAL); //1.Versuch
 pSheet-&gt;m_pShowStatusThread-&gt;ResumeThread();//2.Versuch[/b]
 pFrame-&gt;SetStatusText(0,&quot;Busy&quot;);
 pButton = (CButton*)GetDlgItem(IDC_CABELS_RADIO);
 pButton-&gt;SetCheck(0);
 pButton = (CButton*)GetDlgItem(IDC_PARTS_RADIO);
 pButton-&gt;SetCheck(0);

 CListBox *pListBox = (CListBox*)GetDlgItem(IDC_TODO_LIST);  // fuer Statusausgaben
 pListBox-&gt;ResetContent();
 UpdateWindow();

 BeginWaitCursor();
         :
         ://weiterer Code, berechnung ca 4 sec
         :
</code></pre>
<p>Hier die Definition von den Belangreichen Variablen<br />
CStatusDialog ist Abgeleitet von CDialog<br />
CShowStatusThread ist Abgeleitet von CWinThread</p>
<pre><code>//Ausschnitt aus KPGPropsheet.h
public:
	CStatusDialog* m_pStatusDialog;
	CShowStatusThread* m_pShowStatusThread;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/510179</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/510179</guid><dc:creator><![CDATA[LutzBerger]]></dc:creator><pubDate>Wed, 28 Apr 2004 06:05:16 GMT</pubDate></item><item><title><![CDATA[Reply to nichtmodalen Dialog bei bedarf anzeigen on Wed, 28 Apr 2004 07:31:44 GMT]]></title><description><![CDATA[<p>Hallo Lutz,</p>
<p>das Problem ist wahrscheinlich, dass die WM_PAINT - Messages vom Dialog nicht verarbeitet werden können, während deine Funktion läuft.</p>
<p>Schreib' dir eine Funktion HandleEvents, die dies erledigt:</p>
<pre><code class="language-cpp">void HandleEvents()
{
    MSG msg;

    while (::PeekMessage(&amp;msg, NULL, NULL, NULL, PM_NOREMOVE))
    {
        if (!AfxGetApp()-&gt;PumpMessage())
        {
            return;
        }
    }
}
</code></pre>
<p>Die musst du dann nach Anzeigen des Dialoges und und nach jeder Status-Änderung aufrufen.</p>
<p>Allerdings können dann währenddessen auch die Menüs deiner Applikation bedient werden. Du solltest also zusätzlich noch das Haupfenster 'disable'n.</p>
<pre><code class="language-cpp">void CAdaptionPage::OnSelftestBtn()
{
    ...

    AfxGetMainWnd()-&gt;EnableWindow(FALSE);
    pSheet-&gt;m_pStatusDialog-&gt;ShowWindow(SW_NORMAL);
    HandleEvents();

    ...

    pSheet-&gt;m_pStatusDialog-&gt;ShowWindow(SW_HIDE);
    AfxGetMainWnd()-&gt;EnableWindow(TRUE);

    ...
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/510209</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/510209</guid><dc:creator><![CDATA[Uwe Philipps]]></dc:creator><pubDate>Wed, 28 Apr 2004 07:31:44 GMT</pubDate></item><item><title><![CDATA[Reply to nichtmodalen Dialog bei bedarf anzeigen on Wed, 28 Apr 2004 10:14:09 GMT]]></title><description><![CDATA[<p>Vielen Dank Uwe,</p>
<p>Jetzt klappt es. <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/510302</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/510302</guid><dc:creator><![CDATA[Lutz Berger]]></dc:creator><pubDate>Wed, 28 Apr 2004 10:14:09 GMT</pubDate></item></channel></rss>