텍스트 찾기

표시 하 고 사용자는 검색 작업의 매개 변수를 지정할 수 있도록 찾기 대화 상자를 관리 하는 샘플 코드에 설명 합니다. 검색 작업을 수행할 수 있도록 대화 상자 창 프로시저에 메시지를 보냅니다.

표시 및 바꾸기 대화 상자를 관리 하기 위한 코드 ReplaceText 함수를 사용 하 여 대화 상자를 표시 하는 점을 제외 하 고 비슷합니다. 바꾸기 대화 상자는 또한 바꾸기모두 바꾸기 단추에 대 한 사용자 클릭에 응답에서 메시지를 보냅니다.

찾기 또는 바꾸기 대화 상자를 사용 하려면 세 가지 별도 작업을 수행 해야 합니다.:

  1. FINDMSGSTRING 등록 된 메시지에 대 한 메시지 식별자 가져오기.
  2. 대화 상자 표시.
  3. 프로세스 FINDMSGSTRING 메시지 대화 상자를 열려면.

FINDMSGSTRING 등록 된 메시지에 대 한 메시지 식별자를 RegisterWindowMessage 함수를 호출 하는 응용 프로그램을 초기화 하는 경우.

UINT uFindReplaceMsg;  / / FINDMSGSTRING에 대 한 식별자를 메시지 uFindReplaceMsg = RegisterWindowMessage(FINDMSGSTRING) 

찾기 대화 상자를 표시 하려면 먼저 FINDREPLACE 구조를 초기화 하 고 FindText 함수를 호출 합니다. Note는 FINDREPLACE 구조와 검색 문자열에 대 한 버퍼 한다 되도록 전역 또는 정적 변수 대화 상자를 닫기 전에 범위를 벗어난 이동 하지 않습니다. 등록된 메시지를 수신 창을 지정 하려면 hwndOwner 멤버를 설정 해야 합니다. 대화 상자를 만든 후이 이동 하거나 반환 된 핸들을 사용 하 여 조작할 수 있습니다.

FINDREPLACE fr;       / / 일반 대화 상자 구조
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) {/ / Lparam에서 FINDREPLACE 구조를 포인터를 얻을.

lpfr (LPFINDREPLACE) lParam; =

/ / 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