Klasa CFindReplaceDialog
Umożliwia zaimplementowanie standardowych okien dialogowych znajdowania/zastępowania ciągów w aplikacji.
Składnia
class CFindReplaceDialog : public CCommonDialog
Elementy członkowskie
Konstruktory publiczne
Nazwa/nazwisko | opis |
---|---|
CFindReplaceDialog::CFindReplaceDialog | Wywołaj tę funkcję, aby skonstruować CFindReplaceDialog obiekt. |
Metody publiczne
Nazwa/nazwisko | opis |
---|---|
CFindReplaceDialog::Create | Tworzy i wyświetla CFindReplaceDialog okno dialogowe. |
CFindReplaceDialog::FindNext | Wywołaj tę funkcję, aby określić, czy użytkownik chce znaleźć następne wystąpienie ciągu znajdowania. |
CFindReplaceDialog::GetFindString | Wywołaj tę funkcję, aby pobrać bieżący ciąg wyszukiwania. |
CFindReplaceDialog::GetNotifier | Wywołaj tę funkcję, aby pobrać strukturę w zarejestrowanej FINDREPLACE procedurze obsługi komunikatów. |
CFindReplaceDialog::GetReplaceString | Wywołaj tę funkcję, aby pobrać bieżący ciąg zamiany. |
CFindReplaceDialog::IsTerminating | Wywołaj tę funkcję, aby określić, czy okno dialogowe kończy działanie. |
CFindReplaceDialog::MatchCase | Wywołaj tę funkcję, aby określić, czy użytkownik chce dokładnie dopasować przypadek ciągu znajdowania. |
CFindReplaceDialog::MatchWholeWord | Wywołaj tę funkcję, aby określić, czy użytkownik chce dopasować tylko całe wyrazy. |
CFindReplaceDialog::ReplaceAll | Wywołaj tę funkcję, aby określić, czy użytkownik chce zastąpić wszystkie wystąpienia ciągu. |
CFindReplaceDialog::ReplaceCurrent | Wywołaj tę funkcję, aby określić, czy użytkownik chce zastąpić bieżące słowo. |
CFindReplaceDialog::SearchDown | Wywołaj tę funkcję, aby określić, czy użytkownik chce, aby wyszukiwanie było kontynuowane w kierunku w dół. |
Publiczne elementy członkowskie danych
Nazwa/nazwisko | opis |
---|---|
CFindReplaceDialog::m_fr | Struktura używana do dostosowywania CFindReplaceDialog obiektu. |
Uwagi
W przeciwieństwie do innych typowych okien dialogowych systemu CFindReplaceDialog
Windows obiekty są moderowane, co pozwala użytkownikom na interakcję z innymi oknami, gdy są na ekranie. Istnieją dwa rodzaje CFindReplaceDialog
obiektów: znajdź okna dialogowe i okna dialogowe Znajdź/Zamień. Mimo że okna dialogowe umożliwiają użytkownikowi wprowadzanie wyszukiwania i wyszukiwania/zastępowania ciągów, nie wykonują żadnych funkcji wyszukiwania ani zastępowania. Należy je dodać do aplikacji.
Aby skonstruować CFindReplaceDialog
obiekt, użyj dostarczonego konstruktora (który nie ma argumentów). Ponieważ jest to okno dialogowe bez moderowania, przydziel obiekt na stercie przy użyciu new
operatora, a nie na stosie.
Po utworzeniu CFindReplaceDialog
obiektu należy wywołać funkcję Tworzenie elementu członkowskiego, aby utworzyć i wyświetlić okno dialogowe.
Użyj struktury m_fr, aby zainicjować okno dialogowe przed wywołaniem metody Create
. Struktura m_fr
jest typu FINDREPLACE. Aby uzyskać więcej informacji na temat tej struktury, zobacz Zestaw WINDOWS SDK.
Aby okno nadrzędne było powiadamiane o żądaniach znajdowania/zastępowania, należy użyć funkcji Windows RegisterWindowMessage i użyć makra ON_REGISTERED_MESSAGE message-map w oknie ramki, które obsługuje ten zarejestrowany komunikat.
Możesz określić, czy użytkownik zdecydował się zakończyć okno dialogowe z funkcją składową IsTerminating
.
CFindReplaceDialog
korzysta z pliku COMMDLG.DLL dostarczanego z systemem Windows w wersji 3.1 lub nowszej.
Aby dostosować okno dialogowe, utwórz klasę z CFindReplaceDialog
klasy , podaj niestandardowy szablon okna dialogowego i dodaj mapę komunikatów w celu przetworzenia komunikatów powiadomień z rozszerzonych kontrolek. Wszystkie nieprzetworzone komunikaty powinny być przekazywane do klasy bazowej.
Dostosowywanie funkcji haka nie jest wymagane.
Aby uzyskać więcej informacji na temat korzystania z programu CFindReplaceDialog
, zobacz Typowe klasy okien dialogowych.
Hierarchia dziedziczenia
CFindReplaceDialog
Wymagania
Nagłówek: afxdlgs.h
CFindReplaceDialog::CFindReplaceDialog
CFindReplaceDialog
Tworzy obiekt.
CFindReplaceDialog();
Uwagi
CFindReplaceDialog
Ponieważ obiekt jest moderowym okno dialogowe, należy go skonstruować na stercie przy użyciu new
operatora .
Podczas niszczenia struktura próbuje wykonać wskaźnik delete this;
w oknie dialogowym. Jeśli utworzono okno dialogowe na stosie, this
wskaźnik nie istnieje i niezdefiniowane zachowanie może spowodować.
Aby uzyskać więcej informacji na temat budowy CFindReplaceDialog
obiektów, zobacz Omówienie CFindReplaceDialog . Użyj funkcji CFindReplaceDialog::Create, aby wyświetlić okno dialogowe.
Przykład
// 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
Tworzy i wyświetla obiekt okna dialogowego Znajdź lub Znajdź/Zamień w zależności od wartości bFindDialogOnly
.
virtual BOOL Create(
BOOL bFindDialogOnly,
LPCTSTR lpszFindWhat,
LPCTSTR lpszReplaceWith = NULL,
DWORD dwFlags = FR_DOWN,
CWnd* pParentWnd = NULL);
Parametry
bFindDialogOnly
Ustaw ten parametr na wartość TRUE, aby wyświetlić okno dialogowe Znajdowanie . Ustaw wartość FALSE, aby wyświetlić okno dialogowe Znajdź/Zamień .
lpszFindWhat
Wskaźnik do domyślnego ciągu wyszukiwania po wyświetleniu okna dialogowego. Jeśli wartość NULL, okno dialogowe nie zawiera domyślnego ciągu wyszukiwania.
lpszReplaceWith
Wskaźnik do domyślnego ciągu zastępczego po wyświetleniu okna dialogowego. Jeśli wartość NULL, okno dialogowe nie zawiera domyślnego ciągu zastępczego.
dwFlags
Co najmniej jedna flaga, której można użyć do dostosowania ustawień okna dialogowego, połączonego za pomocą operatora bitowego OR. Wartość domyślna to FR_DOWN, która określa, że wyszukiwanie ma być kontynuowane w kierunku w dół. Aby uzyskać więcej informacji na temat tych flag, zobacz strukturę FINDREPLACE w zestawie WINDOWS SDK.
pParentWnd
Wskaźnik do okna nadrzędnego lub okna właściciela okna dialogowego. Jest to okno, które otrzyma specjalny komunikat informujący o żądaniu akcji znajdź/zamień. Jeśli wartość NULL, zostanie użyte główne okno aplikacji.
Wartość zwracana
Niezero, jeśli obiekt okna dialogowego został pomyślnie utworzony; w przeciwnym razie 0.
Uwagi
Aby okno nadrzędne było powiadamiane o żądaniach znajdowania/zastępowania, należy użyć funkcji RegisterWindowMessage systemu Windows, której wartość zwracana jest liczbą komunikatów unikatową dla wystąpienia aplikacji. Okno ramki powinno zawierać wpis mapy komunikatów, który deklaruje funkcję wywołania zwrotnego ( OnFindReplace
w poniższym przykładzie), która obsługuje ten zarejestrowany komunikat. Poniższy fragment kodu jest przykładem tego, jak to zrobić dla klasy okna ramowego o nazwie 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
W ramach funkcji interpretujesz intencje użytkownika przy użyciu metod CFindReplaceDialog::FindNext i CFindReplaceDialog::IsTerminating, a następnie utworzysz kod dla operacji znajdowania/zastępowania.
Przykład
Zobacz przykład CFindReplaceDialog ::CFindReplaceDialog.
CFindReplaceDialog::FindNext
Wywołaj tę funkcję z funkcji wywołania zwrotnego, aby określić, czy użytkownik chce znaleźć następne wystąpienie ciągu wyszukiwania.
BOOL FindNext() const;
Wartość zwracana
Nonzero, jeśli użytkownik chce znaleźć następne wystąpienie ciągu wyszukiwania; w przeciwnym razie 0.
CFindReplaceDialog::GetFindString
Wywołaj tę funkcję z funkcji wywołania zwrotnego, aby pobrać ciąg domyślny do znalezienia.
CString GetFindString() const;
Wartość zwracana
Ciąg domyślny do znalezienia.
Przykład
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
Wywołaj tę funkcję, aby pobrać wskaźnik do bieżącego okna dialogowego Znajdź zamień.
static CFindReplaceDialog* PASCAL GetNotifier(LPARAM lParam);
Parametry
lParam
Wartość lparam przekazana do funkcji składowej OnFindReplace
okna ramowego.
Wartość zwracana
Wskaźnik do bieżącego okna dialogowego.
Uwagi
Powinna być używana w funkcji wywołania zwrotnego w celu uzyskania dostępu do bieżącego okna dialogowego, wywoływania funkcji składowych i uzyskiwania m_fr
dostępu do struktury.
Przykład
Zobacz CFindReplaceDialog::Create , aby zapoznać się z przykładem rejestrowania procedury obsługi OnFindReplace w celu odbierania powiadomień z okna dialogowego Znajdowanie zamiany.
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
Wywołaj tę funkcję, aby pobrać bieżący ciąg zamiany.
CString GetReplaceString() const;
Wartość zwracana
Ciąg domyślny, za pomocą którego można zastąpić znalezione ciągi.
Przykład
Zobacz przykład CFindReplaceDialog::GetFindString.
CFindReplaceDialog::IsTerminating
Wywołaj tę funkcję w funkcji wywołania zwrotnego, aby określić, czy użytkownik zdecydował się zakończyć działanie okna dialogowego.
BOOL IsTerminating() const;
Wartość zwracana
Nonzero, jeśli użytkownik zdecydował się zakończyć okno dialogowe; w przeciwnym razie 0.
Przykład
Zobacz przykład CFindReplaceDialog::GetFindString.
CFindReplaceDialog::m_fr
Służy do dostosowywania CFindReplaceDialog
obiektu.
FINDREPLACE m_fr;
Uwagi
m_fr
jest strukturą typu FINDREPLACE. Jego elementy członkowskie przechowują cechy obiektu okna dialogowego. Po utworzeniu CFindReplaceDialog
obiektu można użyć m_fr
polecenia , aby zmodyfikować różne wartości w oknie dialogowym.
Aby uzyskać więcej informacji na temat tej struktury, zobacz FINDREPLACE
strukturę w zestawie Windows SDK.
Przykład
Zobacz przykład CFindReplaceDialog ::CFindReplaceDialog.
CFindReplaceDialog::MatchCase
Wywołaj tę funkcję, aby określić, czy użytkownik chce dokładnie dopasować przypadek ciągu znajdowania.
BOOL MatchCase() const;
Wartość zwracana
Nonzero, jeśli użytkownik chce znaleźć wystąpienia ciągu wyszukiwania, które dokładnie pasują do wielkości liter ciągu wyszukiwania; w przeciwnym razie 0.
CFindReplaceDialog::MatchWholeWord
Wywołaj tę funkcję, aby określić, czy użytkownik chce dopasować tylko całe wyrazy.
BOOL MatchWholeWord() const;
Wartość zwracana
Nonzero, jeśli użytkownik chce dopasować tylko całe wyrazy ciągu wyszukiwania; w przeciwnym razie 0.
CFindReplaceDialog::ReplaceAll
Wywołaj tę funkcję, aby określić, czy użytkownik chce zastąpić wszystkie wystąpienia ciągu.
BOOL ReplaceAll() const;
Wartość zwracana
Nonzero, jeśli użytkownik zażądał, aby wszystkie ciągi pasujące do ciągu zamieniania zostały zastąpione; w przeciwnym razie 0.
CFindReplaceDialog::ReplaceCurrent
Wywołaj tę funkcję, aby określić, czy użytkownik chce zastąpić bieżące słowo.
BOOL ReplaceCurrent() const;
Wartość zwracana
Nonzero, jeśli użytkownik zażądał, aby aktualnie wybrany ciąg został zastąpiony ciągiem zamiany; w przeciwnym razie 0.
CFindReplaceDialog::SearchDown
Wywołaj tę funkcję, aby określić, czy użytkownik chce, aby wyszukiwanie było kontynuowane w kierunku w dół.
BOOL SearchDown() const;
Wartość zwracana
Nonzero, jeśli użytkownik chce, aby wyszukiwanie było kontynuowane w kierunku w dół; 0, jeśli użytkownik chce, aby wyszukiwanie przebiegało w górę.