Finne tekst

Dette emnet beskriver eksempelkode som viser og behandler en dialogboksen Søk , slik at brukeren kan angi parameterne for en søkeoperasjon for. Dialogboksen sender meldinger i vinduet prosedyren slik at du kan utføre søkeoperasjonen.

Koden for å vise og administrere en dialogboksen Erstatt er likt, bortsett fra at det brukes Fortløpande endringar -funksjonen til å vise dialogboksen. Dialogboksen Erstatt også sender meldinger som svar på brukerklikk på knappene erstatte og Erstatt alle.

Hvis du vil bruke dialogboksen Søk eller Erstatt , må du utføre tre separate oppgavene:

  1. Få en meldings-IDen for FINDMSGSTRING registrerte meldingen.
  2. Vise dialogboksen.
  3. Prosessen FINDMSGSTRING meldinger når dialogboksen er åpne.

Når du initialisere søknaden, kall funksjonen RegisterWindowMessage å få en meldings-IDen for FINDMSGSTRING registrerte meldingen.

UINT uFindReplaceMsg;  / / message identifikator for FINDMSGSTRING uFindReplaceMsg = RegisterWindowMessage(FINDMSGSTRING) 

Hvis du vil vise en finne , initialisere først en FINDREPLACE struktur og kaller funksjonen FinnTekst . Merk at FINDREPLACE strukturen og bufferen for søkestrengen skal være en global eller statisk variabel slik at det ikke går ut av området før du lukker dialogboksen. Du må angi hwndOwner -medlemmet hvis du vil angi i vinduet som mottar de registrerte meldingene. Når du har opprettet i dialogboksen, kan du flytte eller manipulere den ved hjelp av returnerte håndtaket.

FINDREPLACE fr;       / / felles struktur, dialogboks
HWND hwnd;            / / Eiervinduet
CHAR szFindWhat [80];  / / bufre mottakende streng
HWND hdlg = NULL;     / / håndtere av dialogboksen Søk

/ / Initialisere FINDREPLACE
ZeroMemory (amp; fr, sizeof(FINDREPLACE));
Fr.lStructSize = sizeof(FINDREPLACE);
Fr.hwndOwner = hwnd;
Fr.lpstrFindWhat = szFindWhat;
Fr.wFindWhatLen = 80;
Fr.Flagg = 0;

hdlg = FinnTekst (& fr) 

Når dialogboksen er åpen, må din hovedmeldingsløkke inkluderer et kall til funksjonen IsDialogMessage . Overføre vindusreferansen i dialogboksen som en parameter i IsDialogMessage -kall. Dette sikrer at dialogboksen riktig behandler tastaturet meldinger.

Vil overvåke meldinger som er sendt fra dialogboksen, må i vinduet prosedyren se etter FINDMSGSTRING registrerte meldingen og behandle verdiane som blei send i FINDREPLACE -strukturen som i følgende eksempel:

LPFINDREPLACE lpfr;

Hvis (melding == uFindReplaceMsg) {/ / få peker til FINDREPLACE strukturen fra lParam.

lpfr = lParam (LPFINDREPLACE);

/ / Hvis flagget FR_DIALOGTERM er angitt, / / oppheve håndtaket identifisere dialogboksen. 

    Hvis (lpfr-gt;Flagg & FR_DIALOGTERM) {hdlg = NULL; 
        returnere 0; 
        } / / Hvis flagget FR_FINDNEXT er angitt, / / call programdefinert søk-rutine
    / / for å søke etter den forespurte strengen. 

    Hvis (lpfr - > flagg & FR_FINDNEXT) SearchFile (lpfr - > lpstrFindWhat,
                   (BOOL) (lpfr - > flagg & FR_DOWN), (BOOL) (lpfr - > flagg & FR_MATCHCASE)); 

    returnere 0; 
 
} 

 

Index