MFC - Finestre di dialogo
In questo capitolo tratteremo le finestre di dialogo. Le applicazioni per Windows comunicano spesso con l'utente tramite finestre di dialogo.CDialog classfornisce un'interfaccia per la gestione delle finestre di dialogo. L'editor di finestre di dialogo di Visual C ++ semplifica la progettazione di finestre di dialogo e la creazione delle relative risorse di modelli di dialogo.
La creazione di un oggetto di dialogo è un'operazione in due fasi:
Costruisci l'oggetto di dialogo.
Crea la finestra di dialogo.
Esaminiamo un semplice esempio creando un nuovo progetto Win32.
Step 1 - Apri Visual Studio e fai clic sull'opzione di menu File → Nuovo → Progetto.
Step 2 - Ora puoi vedere la finestra di dialogo Nuovo progetto.
Step 3 - Dal riquadro di sinistra, seleziona Modelli → Visual C ++ → Win32.
Step 4 - Nel riquadro centrale, seleziona Progetto Win32.
Step 5- Immettere il nome del progetto "MFCDialogDemo" nel campo Nome e fare clic su OK per continuare. Vedrai la seguente finestra di dialogo.
Step 6 - Fare clic su Avanti.
Step 7 - Selezionare le opzioni mostrate nella finestra di dialogo sopra e fare clic su Fine.
Step 8 - Viene creato un progetto vuoto.
Step 9 - Per renderlo un progetto MFC, fare clic con il pulsante destro del mouse sul progetto e selezionare Proprietà.
Step 10 - Nella sezione a sinistra, fare clic su Proprietà di configurazione → Generale.
Step 11 - Selezionare l'opzione Usa MFC nella DLL condivisa nella sezione Impostazioni predefinite del progetto e fare clic su OK.
Step 12 - Aggiungi un nuovo file sorgente.
Step 13 - Fare clic con il pulsante destro del mouse sul progetto e selezionare Aggiungi → Nuovo elemento.
Step 14 - Nella sezione Modelli, fai clic su File C ++ (.cpp)
Step 15 - Imposta il nome come esempio e fai clic su Aggiungi.
Step 16 - Per creare un'applicazione, dobbiamo aggiungere una classe e derivarla da CWinApp di MFC.
#include <afxwin.h>
class CExample : public CWinApp {
public:
BOOL InitInstance();
};
Creazione della finestra di dialogo
Step 1 - Per creare una finestra di dialogo, fare clic con il pulsante destro del mouse sulla cartella File di risorse in Esplora soluzioni e selezionare Aggiungi → Risorsa.
Step 2 - Nella finestra di dialogo Aggiungi risorsa, seleziona Finestra di dialogo e fai clic su Nuovo.
Step 3 - Una finestra di dialogo richiede una certa preparazione prima di crearla effettivamente a livello di programmazione.
Step 4 - Una finestra di dialogo può essere prima creata manualmente come file di testo (in un file di risorse).
Step 5 - È ora possibile vedere il file MFCDialogDemo.rc creato in File di risorse.
Step 6- Il file di risorse è aperto in designer. Lo stesso può essere aperto come file di testo. Fare clic con il pulsante destro del mouse sul file di risorse e selezionare Apri con.
Step 7 - Seleziona l'editor del codice sorgente (testo) e fai clic sul pulsante Aggiungi.
Step 8 - Torna al designer e fai clic con il pulsante destro del mouse sulla finestra di dialogo e seleziona Proprietà.
Step 9 - Devi scegliere tra le tante opzioni.
Step 10- Come la maggior parte degli altri controlli, è necessario identificare una finestra di dialogo. L'identificatore (ID) di una finestra di dialogo di solito inizia con IDD_, cambiamo l'ID in IDD_EXAMPLE_DLG.
Posizione della finestra di dialogo
Una finestra di dialogo deve trovarsi "fisicamente" su un'applicazione. Poiché una finestra di dialogo viene solitamente creata come padre di altri controlli, la sua posizione dipende dalla sua relazione con la sua finestra padre o con il desktop.
Se guardi e la finestra Proprietà, vedi due campi, X Pos e Y Pos.
X è la distanza dal bordo sinistro del monitor al bordo sinistro della finestra di dialogo.
Y è la distanza dal bordo superiore del monitor al bordo superiore della finestra di dialogo.
Per impostazione predefinita, questi campi sono impostati su zero. Puoi anche cambiare come mostrato sopra.
Se specifichi queste due dimensioni come 0, i bordi sinistro e superiore della finestra di dialogo verranno impostati in modo che l'oggetto appaia al centro dello schermo.
Dimensioni della finestra di dialogo
Le dimensioni di una finestra di dialogo si riferiscono alla sua larghezza e alla sua altezza. Puoi ridimensionare la larghezza e l'altezza con l'aiuto del mouse nella finestra di progettazione.
Puoi vedere le modifiche in larghezza e altezza sulla barra di stato.
Metodi della finestra di dialogo
La classe di base utilizzata per visualizzare le finestre di dialogo sullo schermo è la classe CDialog. Per creare una finestra di dialogo, dobbiamo derivare una classe da CDialog. La stessa classe CDialog fornisce tre costruttori che sono i seguenti:
CDialog();
CDialog(UINT nIDTemplate, CWnd* pParentWnd = NULL);
CDialog(LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL);
Creiamo un'altra classe CExampleDlg e la deriviamo da CDialog. Implementeremo il suo distruttore costruttore predefinito come mostrato nel codice seguente.
class CExampleDlg : public CDialog {
public:
enum { IDD = IDD_EXAMPLE_DLG };
CExampleDlg();
~CExampleDlg();
};
CExampleDlg::CExampleDlg():CDialog(CExampleDlg::IDD) {
}
CExampleDlg::~CExampleDlg() {
}
Dobbiamo creare un'istanza di questa finestra di dialogo sul metodo CExample :: InitInstance () come mostrato nel codice seguente.
BOOL CExample::InitInstance() {
CExampleDlg myDlg;
m_pMainWnd = &myDlg;
return TRUE;
}
Finestre di dialogo modali
Esistono due tipi di finestre di dialogo: modeless e modal. Le finestre di dialogo modali e non modali differiscono dal processo utilizzato per crearle e visualizzarle.
Finestra di dialogo non modale
Per una finestra di dialogo non modale, è necessario fornire il proprio costruttore pubblico nella classe di dialogo.
Per creare una finestra di dialogo non modale, chiamare il costruttore pubblico e quindi chiamare la funzione Crea membro dell'oggetto di dialogo per caricare la risorsa della finestra di dialogo.
È possibile chiamare Create durante o dopo la chiamata al costruttore. Se la risorsa della finestra di dialogo ha la proprietà WS_VISIBLE, la finestra di dialogo viene visualizzata immediatamente.
In caso contrario, è necessario chiamare la sua funzione membro ShowWindow.
Finestra di dialogo modale
Per creare una finestra di dialogo modale, chiamare uno dei due costruttori pubblici dichiarati in CDialog.
Quindi, chiama l'oggetto di dialogo DoModal funzione membro per visualizzare la finestra di dialogo e gestire l'interazione con essa finché l'utente non sceglie OK o Annulla.
Questa gestione da parte di DoModal è ciò che rende modale la finestra di dialogo. Per le finestre di dialogo modali, DoModal carica la risorsa di dialogo.
Step 1 - Per visualizzare la finestra di dialogo come modale, nell'evento CExample :: InitInstance () chiama il metodo DoModal () usando la tua variabile di dialogo -
BOOL CExample::InitInstance() {
CExampleDlg myDlg;
m_pMainWnd = &myDlg;
myDlg.DoModal();
return TRUE;
}
Step 2 - Ecco l'implementazione completa del file Example.cpp.
#include <afxwin.h>
#include "resource.h"
class CExample : public CWinApp {
public:
BOOL InitInstance();
};
class CExampleDlg : public CDialog {
public:
enum { IDD = IDD_EXAMPLE_DLG };
CExampleDlg();
~CExampleDlg();
};
CExampleDlg::CExampleDlg():CDialog(CExampleDlg::IDD) {
}
CExampleDlg::~CExampleDlg() {
}
BOOL CExample::InitInstance() {
CExampleDlg myDlg;
m_pMainWnd = &myDlg;
myDlg.DoModal();
return TRUE;
}
CExample MyApp;
Step 3 - Quando il codice sopra è stato compilato ed eseguito, vedrai la seguente finestra di dialogo.
Applicazioni basate su finestre di dialogo
Microsoft Visual Studio fornisce un modo più semplice per creare un'applicazione basata principalmente su una finestra di dialogo. Di seguito sono riportati i passaggi per creare un progetto di base della finestra di dialogo utilizzando i modelli di progetto disponibili in Visual Studio:
Step 1- Apri Visual Studio e fai clic sull'opzione di menu File → Nuovo → Progetto. Puoi vedere la finestra di dialogo Nuovo progetto.
Step 2 - Dal riquadro di sinistra, seleziona Modelli → Visual C ++ → MFC.
Step 3 - Nel riquadro centrale, seleziona Applicazione MFC.
Step 4- Immettere il nome del progetto "MFCModalDemo" nel campo Nome e fare clic su OK per continuare. Vedrai la seguente finestra di dialogo.
Step 5 - Fare clic su Avanti.
Step 6 - Selezionare le opzioni mostrate nella finestra di dialogo sopra e fare clic su Avanti.
Step 7 - Seleziona tutte le opzioni che scegli di avere nella finestra di dialogo come Ingrandisci e Riduci a icona le caselle e fai clic su Avanti.
Step 8 - Fare clic su Avanti.
Step 9- Genererà queste due classi. È possibile modificare il nome delle classi e fare clic su Fine.
Step 10 - È ora possibile vedere che la procedura guidata MFC crea questa finestra di dialogo e i file di progetto per impostazione predefinita.
Step 11 - Quando esegui questa applicazione, vedrai il seguente output.