Acest subiect descrie mostre de cod care afișează și gestionează o casetă de dialog de Căutare , astfel încât utilizatorul poate specifica parametrii de o opera?iune de căutare. Caseta de dialog trimite mesajele dumneavoastră fereastra procedura astfel încât puteți efectua opera?ia de căutare.
Codul pentru afișarea și gestionarea o caseta de dialog Înlocuire este similar, cu excepția faptului că se utilizează funcția ReplaceText pentru a afișa caseta de dialog. Caseta de dialog Înlocuire , de asemenea, trimite mesaje ca răspuns la utilizator clicuri pe butoanele de Înlocuire și Înlocui toate.
Pentru a utiliza caseta de dialog Găsire sau Înlocuire , trebuie să efectuați trei sarcini separate:
Când ini?ializa?i aplicația, apela funcția RegisterWindowMessage pentru a obține un identificator de mesaj pentru mesajul înregistrate FINDMSGSTRING.
UINT uFindReplaceMsg; / / mesaj identificator pentru FINDMSGSTRING uFindReplaceMsg = RegisterWindowMessage(FINDMSGSTRING)
Pentru a afișa o casetă de dialog Căutare , primul inițializa o structură FINDREPLACE și apoi de apel funcția FindText . Rețineți că structura FINDREPLACE și tampon pentru șirul de căutare ar trebui să fie o variabilă globală sau statice pentru a nu ieși din domeniul de aplicare înainte de a închide caseta de dialog. Trebuie să setați membru hwndOwner pentru a specifica fereastra care primește mesaje înregistrate. După ce creați caseta de dialog, puteți muta sau manipula-l utilizând ghidajul returnate.
FINDREPLACE fr; / / caseta de dialog comun structura
HWND hwnd; / / proprietar fereastra
SzFindWhat CHAR [80]; / / tampon șir receptoare
HWND hdlg = NULL; / / mâner din caseta de dialog Căutare
/ / Ini?ializarea FINDREPLACE
ZeroMemory (amp; fr, sizeof(FINDREPLACE));
fr.lStructSize = sizeof(FINDREPLACE);
fr.hwndOwner = hwnd;
fr.lpstrFindWhat = szFindWhat;
fr.wFindWhatLen = 80;
fr.Flags = 0;
hdlg = FindText (& fr)
Când caseta de dialog este deschisă, bucla vă mesajul principal trebuie să includă un apel la funcția de IsDialogMessage . Trece fereastra mânerul casetei de dialog ca un parametru în apel IsDialogMessage . Acest lucru garantează că în caseta de dialog procesele corect mesajele de tastatură.
Pentru a monitoriza mesajele trimise din caseta de dialog, dumneavoastră fereastra procedură trebuie să verificați pentru mesaj înregistrat FINDMSGSTRING și procesul valorile trecut în structura FINDREPLACE ca în exemplul următor:
LPFINDREPLACE lpfr;
Dacă (mesaj == uFindReplaceMsg) {/ / Get indicatorul de structura FINDREPLACE din lParam.
lpfr = lParam (LPFINDREPLACE);
/ / Dacă este setat pavilion FR_DIALOGTERM, / / anula ghidajul din caseta de dialog de identificare.
Dacă (lpfr-gt;Steaguri & FR_DIALOGTERM) {hdlg = NULL;
întoarce 0;
} / / Dacă este setat pavilion FR_FINDNEXT, / / apel de rutină de căutare definite de aplicare
/ / pentru a căuta șirul solicitate.
Dacă (lpfr - > steaguri & FR_FINDNEXT) SearchFile (lpfr - > lpstrFindWhat,
(BOOL) (lpfr - > steaguri & FR_DOWN), (BOOL) (lpfr - > steaguri & FR_MATCHCASE));
întoarce 0;
}