CFindReplaceDialog 클래스
애플리케이션에서 표준 문자열 찾기/바꾸기 대화 상자를 구현할 수 있습니다.
구문
class CFindReplaceDialog : public CCommonDialog
멤버
공용 생성자
속성 | 설명 |
---|---|
CFindReplaceDialog::CFindReplaceDialog | 개체를 생성하려면 이 함수를 호출합니다 CFindReplaceDialog . |
공용 메서드
이름 | 설명 |
---|---|
CFindReplaceDialog::Create | 대화 상자를 만들고 표시합니다 CFindReplaceDialog . |
CFindReplaceDialog::FindNext | 이 함수를 호출하여 사용자가 다음 찾기 문자열을 찾을지 여부를 확인합니다. |
CFindReplaceDialog::GetFindString | 이 함수를 호출하여 현재 찾기 문자열을 검색합니다. |
CFindReplaceDialog::GetNotifier | 등록된 메시지 처리기의 구조를 검색 FINDREPLACE 하려면 이 함수를 호출합니다. |
CFindReplaceDialog::GetReplaceString | 현재 바꾸기 문자열을 검색하려면 이 함수를 호출합니다. |
CFindReplaceDialog::IsTerminating | 이 함수를 호출하여 대화 상자가 종료되는지 여부를 확인합니다. |
CFindReplaceDialog::MatchCase | 이 함수를 호출하여 사용자가 찾기 문자열의 대/소문자를 정확하게 일치시킬지 여부를 확인합니다. |
CFindReplaceDialog::MatchWholeWord | 이 함수를 호출하여 사용자가 전체 단어만 일치시킬지 여부를 확인합니다. |
CFindReplaceDialog::ReplaceAll | 이 함수를 호출하여 사용자가 문자열의 모든 항목을 바꿀지 여부를 확인합니다. |
CFindReplaceDialog::ReplaceCurrent | 이 함수를 호출하여 사용자가 현재 단어를 바꿀지 여부를 확인합니다. |
CFindReplaceDialog::SearchDown | 이 함수를 호출하여 사용자가 검색을 아래쪽 방향으로 진행할지 여부를 확인합니다. |
공용 데이터 멤버
속성 | 설명 |
---|---|
CFindReplaceDialog::m_fr | 개체를 사용자 지정하는 데 사용되는 구조체입니다 CFindReplaceDialog . |
설명
다른 Windows 일반 대화 상자와 CFindReplaceDialog
달리 개체는 모덜리스이므로 사용자가 화면에 있는 동안 다른 창과 상호 작용할 수 있습니다. 개체에는 찾기 대화 상자와 찾기/바꾸기 대화 상자의 두 가지 종류 CFindReplaceDialog
가 있습니다. 대화 상자를 사용하면 사용자가 검색 및 검색/바꾸기 문자열을 입력할 수 있지만 검색 또는 바꾸기 함수는 수행하지 않습니다. 애플리케이션에 이러한 항목을 추가해야 합니다.
개체를 CFindReplaceDialog
생성하려면 제공된 생성자(인수가 없음)를 사용합니다. 이 대화 상자는 모덜리스 대화 상자이므로 스택이 아닌 연산자를 new
사용하여 힙에 개체를 할당합니다.
CFindReplaceDialog
개체를 생성 한 후에는 create member 함수를 호출하여 대화 상자를 만들고 표시 해야합니다.
Create
를 호출하기 전에 m_fr 구조체를 사용하여 대화 상자를 초기화합니다. 구조체 m_fr
는 FINDREPLACE 형식입니다. 이 구조에 대한 자세한 내용은 Windows SDK를 참조하세요.
부모 창에 찾기/바꾸기 요청을 알리려면 Windows RegisterWindowMessage 함수를 사용하고 이 등록된 메시지를 처리하는 프레임 창에서 ON_REGISTERED_MESSAGE 메시지 맵 매크로를 사용해야 합니다.
사용자가 멤버 함수를 사용하여 대화 상자를 IsTerminating
종료하기로 결정했는지 여부를 확인할 수 있습니다.
CFindReplaceDialog
는 Windows 버전 3.1 이상과 함께 제공되는 COMMDLG.DLL 파일을 사용합니다.
대화 상자를 사용자 지정하려면 클래스 CFindReplaceDialog
를 파생시키고, 사용자 지정 대화 템플릿을 제공하고, 확장된 컨트롤에서 알림 메시지를 처리하는 메시지 맵을 추가합니다. 처리되지 않은 모든 메시지는 기본 클래스에 전달되어야 합니다.
후크 함수를 사용자 지정할 필요는 없습니다.
사용에 CFindReplaceDialog
대한 자세한 내용은 일반 대화 상자 클래스를 참조 하세요.
상속 계층 구조
CFindReplaceDialog
요구 사항
헤더: afxdlgs.h
CFindReplaceDialog::CFindReplaceDialog
CFindReplaceDialog
개체를 생성합니다.
CFindReplaceDialog();
설명
개체는 CFindReplaceDialog
모덜리스 대화 상자이므로 연산자를 사용하여 new
힙에서 생성해야 합니다.
소멸하는 동안 프레임워크는 대화 상자에 대한 포인터를 수행 delete this;
하려고 합니다. 스택에서 대화 상자를 만든 경우 포인터가 this
존재하지 않으며 정의되지 않은 동작이 발생할 수 있습니다.
개체 생성 CFindReplaceDialog
에 대한 자세한 내용은 CFindReplaceDialog 개요를 참조하세요. CFindReplaceDialog::Create member 함수를 사용하여 대화 상자를 표시합니다.
예시
// m_pFRDlg is a pointer to a class derived from CFindReplaceDialog
// which defines variables used by the FINDREPLACE structure.
// InitFindReplaceDlg creates a CFindReplaceDialog and initializes
// the m_fr with the data members from the derived class
void CMyRichEditView::InitFindReplaceDlg()
{
if (NULL == m_pFRDlg)
{
m_pFRDlg = new CMyFindReplaceDialog(); // Must be created on the heap
m_pFRDlg->Create(TRUE, _T(""), _T(""), FR_DOWN, this);
m_pFRDlg->m_fr.lStructSize = sizeof(FINDREPLACE);
m_pFRDlg->m_fr.hwndOwner = this->m_hWnd;
m_pFRDlg->m_fr.lpstrFindWhat = m_pFRDlg->GetFindWhatStr();
m_pFRDlg->m_fr.lpstrReplaceWith = m_pFRDlg->GetReplaceWithStr();
m_pFRDlg->m_fr.wFindWhatLen = m_pFRDlg->GetFindWhatStrLen();
m_pFRDlg->m_fr.wReplaceWithLen = m_pFRDlg->GetReplaceWithStrLen();
}
}
CFindReplaceDialog::Create
값 bFindDialogOnly
에 따라 찾기 또는 찾기/바꾸기 대화 상자 개체를 만들고 표시합니다.
virtual BOOL Create(
BOOL bFindDialogOnly,
LPCTSTR lpszFindWhat,
LPCTSTR lpszReplaceWith = NULL,
DWORD dwFlags = FR_DOWN,
CWnd* pParentWnd = NULL);
매개 변수
bFindDialogOnly
찾기 대화 상자를 표시하려면 이 매개 변수를 TRUE로 설정합니다. 찾기/바꾸기 대화 상자를 표시하려면 FALSE로 설정합니다.
lpszFindWhat
대화 상자가 나타날 때 기본 검색 문자열에 대한 포인터입니다. NULL이면 대화 상자에 기본 검색 문자열이 포함되지 않습니다.
lpszReplaceWith
대화 상자가 나타날 때 기본 대체 문자열에 대한 포인터입니다. NULL이면 대화 상자에 기본 대체 문자열이 포함되지 않습니다.
dwFlags
비트 OR 연산자를 사용하여 결합된 대화 상자의 설정을 사용자 지정하는 데 사용할 수 있는 플래그가 하나 이상 있습니다. 기본값은 FR_DOWN 검색을 아래쪽 방향으로 진행하도록 지정합니다. 이러한 플래그에 대한 자세한 내용은 Windows SDK의 FINDREPLACE 구조를 참조하세요.
pParentWnd
대화 상자의 부모 또는 소유자 창에 대한 포인터입니다. 찾기/바꾸기 작업이 요청되었음을 나타내는 특수 메시지를 받는 창입니다. NULL이면 애플리케이션의 주 창이 사용됩니다.
Return Value
대화 상자 개체를 성공적으로 만든 경우 0이 아닌 경우 그렇지 않으면 0입니다.
설명
부모 창에 찾기/바꾸기 요청을 알리려면 반환 값이 애플리케이션 인스턴스에 고유한 메시지 번호인 Windows RegisterWindowMessage 함수를 사용해야 합니다. 프레임 창에는 등록된 이 메시지를 처리하는 콜백 함수( OnFindReplace
다음 예제)를 선언하는 메시지 맵 항목이 있어야 합니다. 다음 코드 조각은 다음과 같은 프레임 창 클래스에 대해 이 작업을 수행하는 방법의 예입니다 CMyRichEditView
.
// Message handler declared in CMyRichEditView class declaration
protected:
afx_msg LONG OnFindReplace(WPARAM wParam, LPARAM lParam);
// Register FindReplace window message.
static UINT WM_FINDREPLACE = ::RegisterWindowMessage(FINDMSGSTRING);
// Message map entry to map from message to handler function.
ON_REGISTERED_MESSAGE(WM_FINDREPLACE, &CMyRichEditView::OnFindReplace)
OnFindReplace
함수 내에서 CFindReplaceDialog::FindNext 및 CFindReplaceDialog::IsTerminating 메서드를 사용하여 사용자의 의도를 해석하고 찾기/바꾸기 작업에 대한 코드를 만듭니다.
예시
CFindReplaceDialog::CFindReplaceDialog에 대한 예제를 참조하세요.
CFindReplaceDialog::FindNext
콜백 함수에서 이 함수를 호출하여 사용자가 검색 문자열의 다음 항목을 찾을 것인지 여부를 확인합니다.
BOOL FindNext() const;
Return Value
사용자가 검색 문자열의 다음 항목을 찾으려는 경우 0이 아닌 경우 그렇지 않으면 0입니다.
CFindReplaceDialog::GetFindString
콜백 함수에서 이 함수를 호출하여 찾을 기본 문자열을 검색합니다.
CString GetFindString() const;
Return Value
찾을 기본 문자열입니다.
예시
LRESULT CMyRichEditView::OnFindReplace(WPARAM wparam, LPARAM lparam)
{
UNREFERENCED_PARAMETER(wparam);
CFindReplaceDialog *pDlg = CFindReplaceDialog::GetNotifier(lparam);
if (NULL != pDlg)
{
// Use pDlg as a pointer to the existing FindReplace dlg to
// call CFindReplaceDialog member functions
if (pDlg->IsTerminating())
{
CString csFindString;
CString csReplaceString;
csFindString = pDlg->GetFindString();
csReplaceString = pDlg->GetReplaceString();
VERIFY(AfxGetApp()->WriteProfileString(AfxGetApp()->m_pszAppName,
_T("FindString"), csFindString));
VERIFY(AfxGetApp()->WriteProfileString(AfxGetApp()->m_pszAppName,
_T("ReplaceString"), csReplaceString));
}
}
return 0;
}
CFindReplaceDialog::GetNotifier
현재 바꾸기 찾기 대화 상자에 대한 포인터를 검색하려면 이 함수를 호출합니다.
static CFindReplaceDialog* PASCAL GetNotifier(LPARAM lParam);
매개 변수
lParam
프레임 창의 멤버 함수에 전달된 lparam 값입니다OnFindReplace
.
Return Value
현재 대화 상자에 대한 포인터입니다.
설명
콜백 함수 내에서 현재 대화 상자에 액세스하고, 멤버 함수를 호출하고, 구조에 액세스하는 m_fr
데 사용해야 합니다.
예시
바꾸기 찾기 대화 상자에서 알림을 수신하도록 OnFindReplace 처리기를 등록하는 방법의 예제는 CFindReplaceDialog::Create를 참조하세요.
LRESULT CMyRichEditView::OnFindReplace(WPARAM wparam, LPARAM lparam)
{
UNREFERENCED_PARAMETER(wparam);
CFindReplaceDialog *pDlg = CFindReplaceDialog::GetNotifier(lparam);
if (NULL != pDlg)
{
// Use pDlg as a pointer to the existing FindReplace dlg to
// call CFindReplaceDialog member functions
if (pDlg->IsTerminating())
{
CString csFindString;
CString csReplaceString;
csFindString = pDlg->GetFindString();
csReplaceString = pDlg->GetReplaceString();
VERIFY(AfxGetApp()->WriteProfileString(AfxGetApp()->m_pszAppName,
_T("FindString"), csFindString));
VERIFY(AfxGetApp()->WriteProfileString(AfxGetApp()->m_pszAppName,
_T("ReplaceString"), csReplaceString));
}
}
return 0;
}
CFindReplaceDialog::GetReplaceString
현재 바꾸기 문자열을 검색하려면 이 함수를 호출합니다.
CString GetReplaceString() const;
Return Value
찾은 문자열을 바꿀 기본 문자열입니다.
예시
CFindReplaceDialog::GetFindString에 대한 예제를 참조하세요.
CFindReplaceDialog::IsTerminating
콜백 함수 내에서 이 함수를 호출하여 사용자가 대화 상자를 종료하기로 결정했는지 여부를 확인합니다.
BOOL IsTerminating() const;
Return Value
사용자가 대화 상자를 종료하기로 결정한 경우 0이 아닌 경우 그렇지 않으면 0입니다.
예시
CFindReplaceDialog::GetFindString에 대한 예제를 참조하세요.
CFindReplaceDialog::m_fr
개체를 사용자 지정하는 CFindReplaceDialog
데 사용됩니다.
FINDREPLACE m_fr;
설명
m_fr
는 FINDREPLACE 형식 의 구조체입니다. 해당 멤버는 대화 상자 개체의 특성을 저장합니다. 개체를 생성한 CFindReplaceDialog
후 대화 상자에서 다양한 값을 수정하는 데 사용할 m_fr
수 있습니다.
이 구조에 대한 자세한 내용은 Windows SDK의 FINDREPLACE
구조를 참조하세요.
예시
CFindReplaceDialog::CFindReplaceDialog에 대한 예제를 참조하세요.
CFindReplaceDialog::MatchCase
이 함수를 호출하여 사용자가 찾기 문자열의 대/소문자를 정확하게 일치시킬지 여부를 확인합니다.
BOOL MatchCase() const;
Return Value
사용자가 검색 문자열의 사례와 정확히 일치하는 검색 문자열을 찾으려는 경우 0이 아닌 경우 그렇지 않으면 0입니다.
CFindReplaceDialog::MatchWholeWord
이 함수를 호출하여 사용자가 전체 단어만 일치시킬지 여부를 확인합니다.
BOOL MatchWholeWord() const;
Return Value
사용자가 검색 문자열의 전체 단어만 일치하려는 경우 0이 아닌 경우 그렇지 않으면 0입니다.
CFindReplaceDialog::ReplaceAll
이 함수를 호출하여 사용자가 문자열의 모든 항목을 바꿀지 여부를 확인합니다.
BOOL ReplaceAll() const;
Return Value
사용자가 바꾸기 문자열과 일치하는 모든 문자열을 바꾸라고 요청한 경우 0이 아닌 경우 그렇지 않으면 0입니다.
CFindReplaceDialog::ReplaceCurrent
이 함수를 호출하여 사용자가 현재 단어를 바꿀지 여부를 확인합니다.
BOOL ReplaceCurrent() const;
Return Value
사용자가 현재 선택한 문자열을 바꾸기 문자열로 바꾸라고 요청한 경우 0이 아닌 경우 그렇지 않으면 0입니다.
CFindReplaceDialog::SearchDown
이 함수를 호출하여 사용자가 검색을 아래쪽 방향으로 진행할지 여부를 확인합니다.
BOOL SearchDown() const;
Return Value
사용자가 검색을 아래쪽 방향으로 진행하려는 경우 0이 아닌 경우 사용자가 검색을 위쪽 방향으로 진행하도록 하려면 0입니다.