Găsirea Text

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:

  1. Obțineți un identificator de mesaj pentru mesajul înregistrate FINDMSGSTRING.
  2. Afișa caseta de dialog.
  3. Procesul de FINDMSGSTRING mesaje atunci când caseta de dialog este deschisă.

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

 

Index