Znajdowanie tekstu

W tym temacie opisano przykładowy kod, który wyświetla i zarządza okno dialogowe Znajdowanie , dzięki czemu użytkownik może określić parametry operacji wyszukiwania. Okno dialogowe wysyła wiadomości do procedury okna, więc można wykonać operację wyszukiwania.

Kod do wyświetlania i zarządzania okno dialogowe Zamienianie jest podobna, chyba że używa funkcji ReplaceText do zostanie wyświetlone okno dialogowe. Okno dialogowe Zamienianie również wysyła wiadomości w odpowiedzi użytkownika kliknięć przycisków do zastąpienia i Zamień wszystko.

Aby korzystać z okna dialogowego Znajdowanie lub Zamienianie , należy wykonać trzy oddzielne zadania:

  1. Pobierz identyfikator wiadomości wiadomości zarejestrowanych FINDMSGSTRING.
  2. Zostanie wyświetlone okno dialogowe.
  3. Proces FINDMSGSTRING wiadomości po oknie dialogowym Otwórz.

Podczas inicjowania aplikacji wywołać funkcję RegisterWindowMessage , aby uzyskać identyfikator wiadomości wiadomości zarejestrowanych FINDMSGSTRING.

UINT uFindReplaceMsg;  / / wiadomości identyfikator dla FINDMSGSTRING uFindReplaceMsg = RegisterWindowMessage(FINDMSGSTRING) 

Aby wyświetlić okno dialogowe Znajdowanie , najpierw zainicjować struktury FINDREPLACE , a następnie wywołać funkcję FindText . Należy pamiętać, że struktura FINDREPLACE i buforu ciągu wyszukiwania powinny być zmienną globalną lub statyczne, więc nie wykracza poza zakresem, przed zamknięciem okna dialogowego. Należy ustawić Państwa hwndOwner , aby określić okno, w którym odbiera wiadomości zarejestrowanych. Po utworzeniu, aby oknie, można przenosić lub manipulować przy użyciu zwracane dojście.

FINDREPLACE fr;       / / wspólne dialogowego struktury
HWND hwnd;            / / właściciel okna
CHAR szFindWhat [80];  / / buforu odbiorczego ciąg
HWND hdlg = NULL;     / / uchwyt okna dialogowego Znajdź

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

hdlg = FindText (& fr) 

Gdy otwarte jest okno dialogowe, pętli głównej wiadomości musi zawierać wywołania funkcji IsDialogMessage . Dojście do okna dialogowego należy przekazać jako parametr w wywołaniu IsDialogMessage . Gwarantuje to, że okno dialogowe poprawnie przetwarza wiadomości klawiatury.

Monitorowanie wiadomości wysłanych z okna dialogowego, procedurę okna musi sprawdzić wiadomości zarejestrowanych FINDMSGSTRING i przetwarzać wartości przekazanych w strukturze FINDREPLACE , tak jak w poniższym przykładzie:

LPFINDREPLACE lpfr;

Jeżeli (wiadomości == uFindReplaceMsg) {/ / Get wskaźnika do struktury FINDREPLACE z fikcyjnymi.

lpfr = fikcyjnymi (LPFINDREPLACE);

/ / Jeżeli ustawiono flagę FR_DIALOGTERM, / / unieważnia uchwyt identyfikację okna dialogowego. 

    Jeżeli (lpfr BT;Flagi & FR_DIALOGTERM) {hdlg = NULL; 
        zwrócona wartość 0; 
        } / / Jeżeli ustawiono flagę FR_FINDNEXT, / / wywołania zdefiniowanych przez aplikację szukania
    / / do wyszukiwania żądanego ciągu. 

    Jeżeli (lpfr - > flagi & FR_FINDNEXT) SearchFile (lpfr - > lpstrFindWhat,
                   (WARTOŚĆ LOGICZNA) (lpfr - > flagi & FR_DOWN), (BOOL) (lpfr - > flagi & FR_MATCHCASE)); 

    zwrócona wartość 0; 
 
} 

 

Index