Modeless Fenster wird nicht angezeigt
-
Hi,
ich habe eine Funktion, die bestimmte Dateien kopiert (sichert).
Um es dem Anwender anschaulicher zu machen, wollte ich dem ihm
ein Fenster aufmachen, in dem die kopierten Dateien aufgelistet werden.Mache ich es modal, kommt das Fenster, jedoch kann ich nicht mehr die
Dateien kopieren, weil das Programm ja angehalten wird, solange das
Kontroll-Fenster offen ist.Wenn ich aber das Kontroll-Fenster modeless aufrufe, blinkt es kurz auf
und ist dann aber nicht mehr zu sehen.Erstellt habe ich es so:
- Neuen Dialog im Resourcen-Editor eingefügt (IDD_DIALOG_BACKUP_COPYFILES)
- Neue MFC-Klasse im Projekt angelegt
Basisklasse: CDialog
Dialogfeld-ID: IDD_DIALOG_BACKUP_COPYFILESWenn euch das Problem unbekannt ist, könnt ihr mir vielleicht
eine Hilfestellung zur Fehlerdiagnose geben.Vielen Dank.
Aufruf im Programm:
CCopyFileDialog tmpDialog; // tmpDialog.DoModal(); // Funktioniert im Gegensatz zum nicht modalen Aufruf tmpDialog.Create(IDD_DIALOG_BACKUP_COPYFILES); tmpDialog.ShowWindow(SW_SHOWNORMAL); /* // So geht es auch nicht ... CCopyFileDialog *tmpDialog = new CCopyFileDialog(); tmpDialog->Create(IDD_DIALOG_BACKUP_COPYFILES); tmpDialog->ShowWindow(SW_SHOWNORMAL); */
Header-Datei:
#if !defined(AFX_COPYFILEDIALOG_H__833A4067_8430_481B_8511_679AB75074B2__INCLUDED_) #define AFX_COPYFILEDIALOG_H__833A4067_8430_481B_8511_679AB75074B2__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "../prama.h" // CopyFileDialog.h : Header-Datei // ///////////////////////////////////////////////////////////////////////////// // Dialogfeld CCopyFileDialog class CCopyFileDialog : public CDialog { // Konstruktion public: void AddEntry(CString Entry); CCopyFileDialog(CWnd* pParent = NULL); // Standardkonstruktor // Dialogfelddaten //{{AFX_DATA(CCopyFileDialog) enum { IDD = IDD_DIALOG_BACKUP_COPYFILES }; CListBox m_ctlFileList; //}}AFX_DATA // Überschreibungen // Vom Klassen-Assistenten generierte virtuelle Funktionsüberschreibungen //{{AFX_VIRTUAL(CCopyFileDialog) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV-Unterstützung //}}AFX_VIRTUAL // Implementierung protected: // Generierte Nachrichtenzuordnungsfunktionen //{{AFX_MSG(CCopyFileDialog) // HINWEIS: Der Klassen-Assistent fügt hier Member-Funktionen ein //}}AFX_MSG DECLARE_MESSAGE_MAP() }; //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ fügt unmittelbar vor der vorhergehenden Zeile zusätzliche Deklarationen ein. #endif // AFX_COPYFILEDIALOG_H__833A4067_8430_481B_8511_679AB75074B2__INCLUDED_
Implementationsdatei:
// CopyFileDialog.cpp: Implementierungsdatei // #include "stdafx.h" #include "CopyFileDialog.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // Dialogfeld CCopyFileDialog CCopyFileDialog::CCopyFileDialog(CWnd* pParent /*=NULL*/) : CDialog(CCopyFileDialog::IDD, pParent) { //{{AFX_DATA_INIT(CCopyFileDialog) // HINWEIS: Der Klassen-Assistent fügt hier Elementinitialisierung ein //}}AFX_DATA_INIT } void CCopyFileDialog::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CCopyFileDialog) DDX_Control(pDX, IDC_LIST_BACKUPFILES, m_ctlFileList); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CCopyFileDialog, CDialog) //{{AFX_MSG_MAP(CCopyFileDialog) // HINWEIS: Der Klassen-Assistent fügt hier Zuordnungsmakros für Nachrichten ein //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // Behandlungsroutinen für Nachrichten CCopyFileDialog void CCopyFileDialog::AddEntry(CString Entry){ m_ctlFileList.AddString(Entry); }
-
So müsste es gehen:
Definition:
#include "ColorLegend.h"
CColorLegend dlgLegend;Erzeugung:
dlgLegend.Create(IDD_COLOR_LEGEND,this);Anzeigen/Verbergen:
dlgLegend.ShowWindow(TRUE/FALSE);Entladen:
dlgLegend.DestroyWindow();Habe das mal für eine Farb-Legende benutzt.
Gruß
Bernd