Tekst zoeken

Dit onderwerp wordt beschreven voorbeeldcode die wordt weergegeven en beheert een dialoogvenster zoeken zodat de gebruiker kan de parameters van een zoekbewerking opgeven. Het dialoogvenster verzendt berichten naar uw venster procedure zodat u kunt de zoekbewerking uitvoeren.

De code voor het weergeven en beheren van een dialoogvenster vervangen is vergelijkbaar, behalve dat het de ReplaceText -functie gebruikt om het dialoogvenster weer te geven. Het dialoogvenster vervangen stuurt ook berichten in reactie op de gebruiker klikken op de knoppen vervangen en Vervangen alle.

Gebruik het dialoogvenster zoeken of vervangen , moet u drie aparte taken uitvoeren:

  1. Een bericht-id voor het FINDMSGSTRING geregistreerde bericht krijgen.
  2. Het dialoogvenster weergeven.
  3. Proces FINDMSGSTRING berichten wanneer het dialoogvenster is geopend.

Wanneer u uw toepassing initialiseren, roept de functie RegisterWindowMessage om een bericht-id voor het FINDMSGSTRING geregistreerde bericht.

UINT uFindReplaceMsg;  / / bericht id voor FINDMSGSTRING uFindReplaceMsg = RegisterWindowMessage(FINDMSGSTRING) 

Eerst initialiseren een FINDREPLACE -structuur wilt weergeven een dialoogvenster zoeken , en roept u vervolgens de functie FindText . Merk op dat het FINDREPLACE -structuur en de buffer voor de zoekstring een globale of statische variabele moet zodat het gaat niet uit van scope voordat het dialoogvenster wordt gesloten. De hwndOwner lid opgeven van het venster dat de geregistreerde berichten ontvangt, moet u instellen. Nadat u het dialoogvenster hebt gemaakt, kunt u verplaatsen of manipuleren met behulp van de geretourneerde handvat.

FINDREPLACE fr;       / / common dialog box structuur
HWND hwnd;            / / eigenaar venster
CHAR szFindWhat [80];  / / buffer ontvangende tekenreeks
HWND hdlg = NULL;     / / verwerken van dialoogvenster Zoeken

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

HDLG = FindText (& fr) 

Wanneer het dialoogvenster geopend is, moet uw hoofdberichtlus omvatten een aanroep naar de functie IsDialogMessage . De vensteringang van het dialoogvenster doorgeven als een parameter in de aanroep van IsDialogMessage . Dit zorgt ervoor dat het dialoogvenster toetsenbord berichten correct verwerkt.

Wilt controleren berichten die worden verzonden vanuit het dialoogvenster, moet uw venster procedure voor de FINDMSGSTRING geregistreerde bericht controleren en verwerken de waarden doorgegeven in het FINDREPLACE structuur zoals in het volgende voorbeeld:

LPFINDREPLACE lpfr;

Als (bericht == uFindReplaceMsg) {/ / Get aanwijzer FINDREPLACE structuur van lParam.

lpfr = lParam (LPFINDREPLACE);

/ / Als de vlag FR_DIALOGTERM is ingesteld, / / ongeldig maken van de greep het dialoogvenster identificeren. 

    Als (lpfr-gt;Vlaggen & FR_DIALOGTERM) {hdlg = NULL; 
        retourneren 0; 
        } / / Als de vlag FR_FINDNEXT is ingesteld, / / call de toepassing gedefinieerde zoek routine
    / / om te zoeken naar de gezochte tekenreeks. 

    Als (lpfr - > vlaggen & FR_FINDNEXT) SearchFile (lpfr - > lpstrFindWhat,
                   (BOOL) (lpfr - > vlaggen & FR_DOWN), (BOOL) (lpfr - > vlaggen & FR_MATCHCASE)); 

    retourneren 0; 
 
} 
 

Index