In questo argomento viene descritto il codice di esempio che visualizza e gestisce una finestra di dialogo trova così l'utente può specificare i parametri di un'operazione di ricerca. Nella finestra di dialogo Invia messaggi a vostra routine della finestra in modo da poter svolgere l'operazione di ricerca.
Il codice per la visualizzazione e la gestione di una finestra di dialogo di sostituire è simile, tranne che utilizza la funzione ReplaceText per visualizzare la finestra di dialogo. Nella finestra di dialogo sostituire invia anche messaggi in risposta all'utente clic sui pulsanti sostituire e Sostituire tutti i.
Per utilizzare la finestra di dialogo trova o sostituire , è necessario eseguire tre attività distinte:
Quando si inizializza l'applicazione, chiamare la funzione RegisterWindowMessage per ottenere un identificatore di messaggio per il messaggio registrato FINDMSGSTRING.
UINT uFindReplaceMsg; / / messaggio identificatore per FINDMSGSTRING uFindReplaceMsg = RegisterWindowMessage(FINDMSGSTRING)
Per visualizzare una finestra di dialogo trova , prima di inizializzare una struttura FINDREPLACE e quindi chiamare la funzione trova testo . Notare che la struttura FINDREPLACE e il buffer per la stringa di ricerca dovrebbe essere una variabile globale o statica così non andare fuori dell'ambito prima della chiusura della finestra di dialogo. È necessario impostare il membro hwndOwner per specificare la finestra che riceve i messaggi registrati. Dopo aver creato la finestra di dialogo, è possibile spostare o manipolarlo tramite l'handle restituito.
FINDREPLACE fr; / / finestra di dialogo comune box struttura
HWND hwnd; / / finestra proprietaria
CHAR szFindWhat [80]; / / buffer di ricezione stringa
HWND hdlg = NULL; / / handle di dialogo Trova
/ / Initialize FINDREPLACE
ZeroMemory (amp; fr, sizeof(FINDREPLACE));
fr.lStructSize = sizeof(FINDREPLACE);
fr.hwndOwner = hwnd;
fr.lpstrFindWhat = szFindWhat;
fr.wFindWhatLen = 80;
fr.Flag = 0;
hDlg = trova testo (& fr)
Quando la finestra di dialogo è aperto, il ciclo di messaggi principale deve includere una chiamata alla funzione IsDialogMessage . Passare l'handle della finestra di dialogo come parametro nella chiamata IsDialogMessage . Questo assicura che la finestra di dialogo correttamente elabora i messaggi di tastiera.
Per monitorare i messaggi inviati dalla finestra di dialogo, la routine di finestra deve controllare il messaggio registrato FINDMSGSTRING ed elaborare i valori passati nella struttura FINDREPLACE come nell'esempio seguente:
LPFINDREPLACE lpfr;
Se (messaggio = = uFindReplaceMsg) {/ / Get puntatore alla struttura FINDREPLACE da lParam.
LPFR = (LPFINDREPLACE) lParam;
/ / Se è impostato il flag FR_DIALOGTERM, / / invalidare l'handle identificando nella finestra di dialogo.
Se (lpfr-gt;Flags & FR_DIALOGTERM) {hdlg = NULL;
return 0;
} / / If è impostato il flag FR_FINDNEXT, / / chiama la routine di ricerca definiti dall'applicazione
/ / per cercare la stringa richiesta.
Se (lpfr - > Flags & FR_FINDNEXT) SearchFile (lpfr - > lpstrFindWhat,
(BOOL) (lpfr - > Flags & FR_DOWN), (BOOL) (lpfr - > Flags & FR_MATCHCASE));
return 0;
}
Rimedio: Inserire il CD-ROM CD di MSDN Library.