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:
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;
}