Пошук тексту

У цьому розділі описано приклад коду, що відображає і управляє діалогове вікно знайти , так що користувач визначення параметрів пошуку. Діалогове вікно надсилає повідомлення ваші вікна процедури для здійснення операції пошуку.

Код для відображення та керування діалогове вікно замінити схожий, крім того, що це функція ReplaceText використовується для відображення діалогового вікна. Діалогове вікно замінити також посилає повідомлення у відповідь на користувач натискає на замінити і Замінити всі кнопки.

Використання діалогового вікна знайти або замінити , ви повинні виконати три окремі завдання:

  1. Отримання ідентифікатора повідомлення для FINDMSGSTRING зареєстрованих повідомлень.
  2. Відображення діалогового вікна.
  3. Процес FINDMSGSTRING повідомлення, коли діалогове вікно відкрити.

Під час ініціалізації вашого застосування, викликати функцію RegisterWindowMessage , отримати ідентифікатор повідомлення для FINDMSGSTRING зареєстрованих повідомлень.

UINT uFindReplaceMsg;  / / повідомлення ідентифікатор для FINDMSGSTRING uFindReplaceMsg = RegisterWindowMessage(FINDMSGSTRING) 

Щоб відобразити діалогове вікно Пошук , першої ініціалізації FINDREPLACE структури а потім викликати функцію FindText . Зверніть увагу, що структура FINDREPLACE і в буфер рядка пошуку має бути глобальний або статичні змінні, так що це не йде з сферу перед діалогове вікно закривається. Ви повинні встановити, щоб визначити вікно, яке отримує зареєстрованих повідомлень, член hwndOwner . Після створення діалогового вікна можна переміщувати або змінювати за допомогою повернутого дескриптора.

FINDREPLACE uk;       / / Загальні діалоговому вікні структури
HWND hwnd;            / / Власник вікно
CHAR szFindWhat [80];  / / буфер отримання рядок
HWND-hdlg = NULL;     / / Ручка діалогове вікно Пошук

/ / Ініціалізація FINDREPLACE
ZeroMemory (amp; fr, sizeof(FINDREPLACE));
fr.lStructSize = sizeof(FINDREPLACE);
fr.hwndOwner = hwnd;
fr.lpstrFindWhat = szFindWhat;
fr.wFindWhatLen = 80;
fr.Прапори = 0;

hdlg = FindText (& fr) 

Коли відкрито діалогове вікно, ваш основний цикл повинен включати виклику функції IsDialogMessage . Дескриптор вікна, у діалоговому вікні передати як параметр у виклику IsDialogMessage . Це гарантує, що діалогове вікно правильно обробляє повідомлення клавіатури.

Щоб відстежувати повідомлення, надіслані з діалогового вікна, ваші вікна процедури слід перевірити FINDMSGSTRING зареєстрованих повідомлень і обробки значень, переданих у структурі FINDREPLACE , як у наведеному нижче прикладі:

LPFINDREPLACE lpfr;

Якщо (повідомлення = = uFindReplaceMsg) {/ / отримати вказівник до структури FINDREPLACE з lParam.

lpfr = lParam (LPFINDREPLACE);

/ / Якщо FR_DIALOGTERM прапор, / / допомого ручкою, визначення діалогового вікна. 

    Якщо (lpfr-gt;Прапори & FR_DIALOGTERM) {hdlg = NULL; 
        повертає 0; 
        } / / Якщо FR_FINDNEXT прапор, / / обслуговування режим пошуку визначений у застосунку
    / / для пошуку потрібного рядка. 

    Якщо (lpfr - > прапори & FR_FINDNEXT) SearchFile (lpfr - > lpstrFindWhat,
                   (BOOL) (lpfr - > прапори & FR_DOWN), (BOOL) (lpfr - > прапори & FR_MATCHCASE)); 

    повертає 0; 
 
} 

 

Index