Ricerca di testo

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:

  1. Ottenere un identificatore di messaggio per il messaggio registrato FINDMSGSTRING.
  2. Visualizzare la finestra di dialogo.
  3. FINDMSGSTRING di elaborare i messaggi quando è nella finestra di dialogo Apri.

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.

Index