2016-05-29 5 views
0

Ich möchte CDialog innerhalb CDockablePane hinzufügen, wenn ich CDialog.DoModal() verwende, macht es die MFC-Anwendung nicht mehr reagieren und auf das CDialog-Ergebnis warten. Wie kann ich die Anwendung weiter laufen lassen, ohne auf das CDialog-Ergebnis zu warten? Vielen Dank im Voraus.Hinzufügen von CDialog in CDockablePane

Antwort

1

Sie können DoModal nicht verwenden, um den Dialog anzuzeigen. Dies zeigt einen modalen Dialog an, der die Interaktion mit anderen Fenstern in Ihrer Anwendung verhindert, bis der Dialog geschlossen wurde. Genau wie eine Message Box.

Um einen nicht-modalen Dialog anzuzeigen, rufen Sie die Elementfunktion Create auf. Verwenden Sie die Instanz Ihres CDockablePane als das übergeordnete Element des Dialogfelds. Sie müssen außerdem sicherstellen, dass das Dialogfeld selbst ein untergeordnetes Fenster ohne Rahmen ist.

Es könnte einfacher sein, eine von CFormView oder CPaneDialog abgeleitete Klasse zu verwenden.

+0

Dank für Ihre Antwort, jetzt verwende ich eine Klasse von 'CPaneDialog' abgeleitet, wie Sie vorschlagen, wie folgt aus: ' m_DlgInsidePane.Create (_T ("Guide"), dies, FALSCH, IDD_DLG_TEST_IN_PANE, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI, 0) ', aber das Dialogfeld wird nicht angezeigt. @Cody Gray –

+0

Nach der Erstellung hinzufügen: m_DlgInsidePane.ShowWindow (SW_SHOW); – Ramunas