Classe CEditView
Tipo di classe di visualizzazione che fornisce la funzionalità di un controllo di modifica di Windows e che può essere utilizzato per implementare funzionalità di tipo editor di testo semplice.
Sintassi
class CEditView : public CCtrlView
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CEditView::CEditView | Costruisce un oggetto di tipo CEditView . |
Metodi pubblici
Nome | Descrizione |
---|---|
CEditView::FindText | Cerca una stringa all'interno del testo. |
CEditView::GetBufferLength | Ottiene la lunghezza del buffer di caratteri. |
CEditView::GetEditCtrl | Fornisce l'accesso CEdit alla parte di un CEditView oggetto (controllo di modifica di Windows). |
CEditView::GetPrinterFont | Recupera il tipo di carattere della stampante corrente. |
CEditView::GetSelectedText | Recupera la selezione del testo corrente. |
CEditView::LockBuffer | Blocca il buffer. |
CEditView::P rintInsideRect | Esegue il rendering del testo all'interno di un determinato rettangolo. |
CEditView::SerializeRaw | Serializza un CEditView oggetto su disco come testo non elaborato. |
CEditView::SetPrinterFont | Imposta un nuovo tipo di carattere della stampante. |
CEditView::SetTabStops | Imposta tabulazioni sia per la visualizzazione dello schermo che per la stampa. |
CEditView::UnlockBuffer | Sblocca il buffer. |
Metodi protetti
Nome | Descrizione |
---|---|
CEditView::OnFindNext | Trova l'occorrenza successiva di una stringa di testo. |
CEditView::OnReplaceAll | Sostituisce tutte le occorrenze di una determinata stringa con una nuova stringa. |
CEditView::OnReplaceSel | Sostituisce la selezione corrente. |
CEditView::OnTextNotFound | Chiamato quando un'operazione di ricerca non corrisponde a un altro testo. |
Membri dati pubblici
Nome | Descrizione |
---|---|
CEditView::d wStyleDefault | Stile predefinito per gli oggetti di tipo CEditView . |
Osservazioni:
La CEditView
classe fornisce le funzioni aggiuntive seguenti:
Stampa.
Trovare e sostituire.
Poiché la classe CEditView
è una derivata della classe CView
, gli oggetti della classe CEditView
possono essere usati con documenti e modelli di documento.
Il testo di ogni CEditView
controllo viene mantenuto nel proprio oggetto memoria globale. L'applicazione può avere un numero qualsiasi di CEditView
oggetti.
Creare oggetti di tipo CEditView
se si desidera una finestra di modifica con la funzionalità aggiunta elencata in precedenza o se si desidera una semplice funzionalità dell'editor di testo. Un CEditView
oggetto può occupare l'intera area client di una finestra. Derivare le proprie classi da CEditView
per aggiungere o modificare la funzionalità di base o per dichiarare classi che possono essere aggiunte a un modello di documento.
L'implementazione predefinita della classe CEditView
gestisce i comandi seguenti: ID_EDIT_SELECT_ALL, ID_EDIT_FIND, ID_EDIT_REPLACE, ID_EDIT_REPEAT e ID_FILE_PRINT.
Il limite di caratteri predefinito per CEditView
è (1024 * 1024 - 1 = 1048575). Questa operazione può essere modificata chiamando la funzione EM_LIMITTEXT del controllo di modifica sottostante. Tuttavia, i limiti sono diversi a seconda del sistema operativo e del tipo di controllo di modifica (singola o multilinea). Per altre informazioni su questi limiti, vedere EM_LIMITTEXT.
Per modificare questo limite nel controllo, eseguire l'override della funzione per la OnCreate()
CEditView
classe e inserire la riga di codice seguente:
GetEditCtrl().SetLimitText(nNewVal); //nNewVal, the new character limit
Gli oggetti di tipo CEditView
(o di tipi derivati da CEditView
) presentano le limitazioni seguenti:
CEditView
non implementa il vero ciò che vedete è quello che si ottiene (WYSIWYG) di modifica. Dove esiste una scelta tra leggibilità sullo schermo e output stampato corrispondente,CEditView
opta per la leggibilità dello schermo.CEditView
può visualizzare testo in un solo tipo di carattere. Non è supportata alcuna formattazione di caratteri speciale. Per altre funzionalità, vedere classe CRichEditView .La quantità di testo che può
CEditView
contenere è limitata. I limiti sono uguali a per ilCEdit
controllo .
Per altre informazioni su CEditView
, vedere Classi di viste derivate disponibili in MFC.
Gerarchia di ereditarietà
CEditView
Requisiti
Intestazione: afxext.h
CEditView::CEditView
Costruisce un oggetto di tipo CEditView
.
CEditView();
Osservazioni:
Dopo aver costruito l'oggetto, è necessario chiamare la funzione CWnd::Create prima che venga usato il controllo di modifica. Se si deriva una classe da CEditView
e la si aggiunge al modello usando CWinApp::AddDocTemplate
, il framework chiama sia questo costruttore che la Create
funzione .
CEditView::d wStyleDefault
Contiene lo stile predefinito dell'oggetto CEditView
.
static const DWORD dwStyleDefault;
Osservazioni:
Passare questo membro statico come parametro dwStyle della Create
funzione per ottenere lo stile predefinito per l'oggetto CEditView
.
CEditView::FindText
Chiamare la FindText
funzione per cercare il CEditView
buffer di testo dell'oggetto.
BOOL FindText(
LPCTSTR lpszFind,
BOOL bNext = TRUE,
BOOL bCase = TRUE);
Parametri
lpszFind
Testo da trovare.
bNext
Specifica la direzione della ricerca. Se TRUE, la direzione di ricerca è verso la fine del buffer. Se FALSE, la direzione di ricerca è verso l'inizio del buffer.
bCase
Specifica se la ricerca fa distinzione tra maiuscole e minuscole. Se TRUE, la ricerca fa distinzione tra maiuscole e minuscole. Se FALSE, la ricerca non fa distinzione tra maiuscole e minuscole.
Valore restituito
Diverso da zero se viene trovato il testo di ricerca; in caso contrario, 0.
Osservazioni:
Questa funzione cerca nel buffer il testo specificato da lpszFind, a partire dalla selezione corrente, nella direzione specificata da bNext e con distinzione tra maiuscole e minuscole specificate da bCase. Se il testo viene trovato, imposta la selezione sul testo trovato e restituisce un valore diverso da zero. Se il testo non viene trovato, la funzione restituisce 0.
In genere non è necessario chiamare la funzione a meno che non si esegua l'override FindText
OnFindNext
di , che chiama FindText
.
CEditView::GetBufferLength
Chiamare questa funzione membro per ottenere il numero di caratteri attualmente presenti nel buffer del controllo di modifica, senza includere il carattere di terminazione Null.
UINT GetBufferLength() const;
Valore restituito
Lunghezza della stringa nel buffer.
CEditView::GetEditCtrl
Chiamare GetEditCtrl
per ottenere un riferimento al controllo di modifica utilizzato dalla visualizzazione di modifica.
CEdit& GetEditCtrl() const;
Valore restituito
Riferimento a un oggetto CEdit
.
Osservazioni:
Questo controllo è di tipo CEdit, quindi puoi modificare il controllo di modifica di Windows direttamente usando le CEdit
funzioni membro.
Attenzione
L'utilizzo dell'oggetto CEdit
può modificare lo stato del controllo di modifica di Windows sottostante. Ad esempio, non è consigliabile modificare le impostazioni della scheda usando la funzione CEdit::SetTabStops perché CEditView
memorizza nella cache queste impostazioni per l'utilizzo sia nel controllo di modifica che nella stampa. Usare invece CEditView::SetTabStops.
Esempio
void CMyEditView::OnInitialUpdate()
{
CEditView::OnInitialUpdate();
// get the edit control and set some initial properties for it
CEdit &theEdit = GetEditCtrl();
// adjust the left margin without changing the right margin
DWORD dwMargins = theEdit.GetMargins();
theEdit.SetMargins(20, HIWORD(dwMargins));
// only accept 10k of text
theEdit.SetLimitText(10 * 1024);
}
CEditView::GetPrinterFont
Chiamare GetPrinterFont
per ottenere un puntatore a un oggetto CFont che descrive il tipo di carattere della stampante corrente.
CFont* GetPrinterFont() const;
Valore restituito
Puntatore a un CFont
oggetto che specifica il tipo di carattere della stampante corrente; NULL se il tipo di carattere della stampante non è stato impostato. Il puntatore può essere temporaneo e non deve essere memorizzato per usi successivi.
Osservazioni:
Se il tipo di carattere della stampante non è stato impostato, il comportamento di stampa predefinito della classe consiste nel stampare utilizzando lo stesso tipo di carattere utilizzato per la CEditView
visualizzazione.
Utilizzare questa funzione per determinare il tipo di carattere della stampante corrente. Se non è il tipo di carattere della stampante desiderato, usare CEditView::SetPrinterFont per modificarlo.
CEditView::GetSelectedText
Chiamare GetSelectedText
per copiare il testo selezionato in un CString
oggetto, fino alla fine della selezione o al carattere che precede il primo carattere di ritorno a capo nella selezione.
void GetSelectedText(CString& strResult) const;
Parametri
strResult
Riferimento all'oggetto CString
che deve ricevere il testo selezionato.
CEditView::LockBuffer
Chiamare questa funzione membro per ottenere un puntatore al buffer. Il buffer non deve essere modificato.
LPCTSTR LockBuffer() const;
Valore restituito
Puntatore al buffer del controllo di modifica.
CEditView::OnFindNext
Cerca nel testo nel buffer il testo specificato da lpszFind, nella direzione specificata da bNext, con distinzione tra maiuscole e minuscole specificate da bCase.
virtual void OnFindNext(
LPCTSTR lpszFind,
BOOL bNext,
BOOL bCase);
Parametri
lpszFind
Testo da trovare.
bNext
Specifica la direzione della ricerca. Se TRUE, la direzione di ricerca è verso la fine del buffer. Se FALSE, la direzione di ricerca è verso l'inizio del buffer.
bCase
Specifica se la ricerca fa distinzione tra maiuscole e minuscole. Se TRUE, la ricerca fa distinzione tra maiuscole e minuscole. Se FALSE, la ricerca non fa distinzione tra maiuscole e minuscole.
Osservazioni:
La ricerca inizia all'inizio della selezione corrente e viene eseguita tramite una chiamata a FindText. Nell'implementazione predefinita chiama OnFindNext
OnTextNotFound se il testo non viene trovato.
Eseguire l'override OnFindNext
per modificare il modo in cui un CEditView
oggetto derivato da esegue la ricerca di testo. CEditView
chiama OnFindNext
quando l'utente sceglie il pulsante Trova successivo nella finestra di dialogo Trova standard.
CEditView::OnReplaceAll
CEditView
chiama OnReplaceAll
quando l'utente seleziona il pulsante Sostituisci tutto nella finestra di dialogo sostituisci standard.
virtual void OnReplaceAll(
LPCTSTR lpszFind,
LPCTSTR lpszReplace,
BOOL bCase);
Parametri
lpszFind
Testo da trovare.
lpszReplace
Testo da sostituire con il testo di ricerca.
bCase
Specifica se la ricerca fa distinzione tra maiuscole e minuscole. Se TRUE, la ricerca fa distinzione tra maiuscole e minuscole. Se FALSE, la ricerca non fa distinzione tra maiuscole e minuscole.
Osservazioni:
OnReplaceAll
cerca il testo nel buffer per il testo specificato da lpszFind, con distinzione tra maiuscole e minuscole specificate da bCase. La ricerca inizia all'inizio della selezione corrente. Ogni volta che viene trovato il testo di ricerca, questa funzione sostituisce tale occorrenza del testo con il testo specificato da lpszReplace. La ricerca viene eseguita tramite una chiamata a FindText. Nell'implementazione predefinita viene chiamato OnTextNotFound se il testo non viene trovato.
Se la selezione corrente non corrisponde a lpszFind, la selezione viene aggiornata alla prima occorrenza del testo specificato da lpszFind e non viene eseguita una sostituzione. Ciò consente all'utente di confermare che si tratta di ciò che vuole fare quando la selezione non corrisponde al testo da sostituire.
Eseguire l'override OnReplaceAll
per modificare il modo in cui un CEditView
oggetto derivato da -sostituisce il testo.
CEditView::OnReplaceSel
CEditView
chiama OnReplaceSel
quando l'utente seleziona il pulsante Sostituisci nella finestra di dialogo Sostituisci standard.
virtual void OnReplaceSel(
LPCTSTR lpszFind,
BOOL bNext,
BOOL bCase,
LPCTSTR lpszReplace);
Parametri
lpszFind
Testo da trovare.
bNext
Specifica la direzione della ricerca. Se TRUE, la direzione di ricerca è verso la fine del buffer. Se FALSE, la direzione di ricerca è verso l'inizio del buffer.
bCase
Specifica se la ricerca fa distinzione tra maiuscole e minuscole. Se TRUE, la ricerca fa distinzione tra maiuscole e minuscole. Se FALSE, la ricerca non fa distinzione tra maiuscole e minuscole.
lpszReplace
Testo da sostituire con il testo trovato.
Osservazioni:
Dopo aver sostituito la selezione, questa funzione cerca nel testo nel buffer l'occorrenza successiva del testo specificato da lpszFind, nella direzione specificata da bNext, con distinzione tra maiuscole e minuscole specificate da bCase. La ricerca viene eseguita tramite una chiamata a FindText. Se il testo non viene trovato, viene chiamato OnTextNotFound .
Eseguire l'override OnReplaceSel
per modificare il modo in cui un CEditView
oggetto derivato da sostituisce il testo selezionato.
CEditView::OnTextNotFound
Eseguire l'override di questa funzione per modificare l'implementazione predefinita, che chiama la funzione MessageBeep
windows .
virtual void OnTextNotFound(LPCTSTR lpszFind);
Parametri
lpszFind
Testo da trovare.
CEditView::P rintInsideRect
Chiamare PrintInsideRect
per stampare il testo nel rettangolo specificato da rectLayout.
UINT PrintInsideRect(
CDC *pDC,
RECT& rectLayout,
UINT nIndexStart,
UINT nIndexStop);
Parametri
pDC
Puntatore al contesto del dispositivo della stampante.
rectLayout
Riferimento a un oggetto CRect o a una struttura RECT che specifica il rettangolo in cui deve essere eseguito il rendering del testo.
nIndexStart
Indice all'interno del buffer del primo carattere di cui eseguire il rendering.
nIndexStop
Indice all'interno del buffer del carattere che segue l'ultimo carattere di cui eseguire il rendering.
Valore restituito
Indice del carattere successivo da stampare, ovvero il carattere che segue l'ultimo carattere di cui è stato eseguito il rendering.
Osservazioni:
Se il CEditView
controllo non dispone dello stile ES_AUTOHSCROLL, il testo viene disposto all'interno del rettangolo di rendering. Se il controllo ha lo stile ES_AUTOHSCROLL, il testo viene ritagliato sul bordo destro del rettangolo.
L'elemento rect.bottom
dell'oggetto rectLayout viene modificato in modo che le dimensioni del rettangolo definiscino la parte del rettangolo originale occupato dal testo.
CEditView::SerializeRaw
Chiamare SerializeRaw
per fare in modo che un CArchive
oggetto legga o scriva il testo nell'oggetto CEditView
in un file di testo.
void SerializeRaw(CArchive& ar);
Parametri
Ar
Riferimento all'oggetto CArchive
che archivia il testo serializzato.
Osservazioni:
SerializeRaw
differisce dall'implementazione CEditView
interna di Serialize
in quanto legge e scrive solo il testo, senza dati di descrizione dell'oggetto precedenti.
CEditView::SetPrinterFont
Chiamare SetPrinterFont
per impostare il tipo di carattere della stampante sul tipo di carattere specificato da pFont.
void SetPrinterFont(CFont* pFont);
Parametri
pFont
Puntatore a un oggetto di tipo CFont
. Se NULL, il tipo di carattere utilizzato per la stampa è basato sul tipo di carattere visualizzato.
Osservazioni:
Se si desidera che la visualizzazione usi sempre un tipo di carattere specifico per la stampa, includere una chiamata a SetPrinterFont
nella funzione della OnPreparePrinting
classe. Questa funzione virtuale viene chiamata prima che venga eseguita la stampa, quindi la modifica del tipo di carattere viene eseguita prima della stampa del contenuto della visualizzazione.
CEditView::SetTabStops
Chiamare questa funzione per impostare le tabulazioni utilizzate per la visualizzazione e la stampa.
void SetTabStops(int nTabStops);
Parametri
nTabStops
Larghezza di ogni tabulazione, in unità di dialogo.
Osservazioni:
È supportata solo una larghezza di tabulazione singola. ( CEdit
gli oggetti supportano più larghezze di tabulazioni. Le larghezze si trovano in unità di dialogo, che corrispondono a un quarto della larghezza media dei caratteri (in base solo ai caratteri alfabetici maiuscoli e minuscoli) del tipo di carattere utilizzato al momento della stampa o della visualizzazione. Non è consigliabile usare CEdit::SetTabStops
perché CEditView
deve memorizzare nella cache il valore tabulazione.
Questa funzione modifica solo le schede dell'oggetto per cui viene chiamata. Per modificare le tabulazioni per ogni CEditView
oggetto nell'applicazione, chiamare la funzione di SetTabStops
ogni oggetto.
Esempio
Questo frammento di codice imposta le tabulazioni nel controllo su ogni quarto carattere misurando attentamente il tipo di carattere utilizzato dal controllo.
// gain a reference to the edit control
CEdit &theEdit = GetEditCtrl();
// get the font the control is using
CFont *pFont = theEdit.GetFont();
TEXTMETRIC tm;
// get the control's DC, too
CDC *pDC = theEdit.GetDC();
// Select the font that the control uses by default into the DC.
// We must do this because the control may or may not be using
// that font at this exact moment
CFont *pOldFont = pDC->SelectObject(pFont);
// Retrieve text metrics for that font and return the previously
// selected font.
pDC->GetTextMetrics(&tm);
pDC->SelectObject(pOldFont);
// Get an identity rectangle and map it to dialog units
CRect rect(0, 0, 100, 1);
::MapDialogRect((HWND)this, rect);
// We now know that 100 dialog units are rect.Width() screen units,
// so we can multiply screen units by 100 and divide by rect.Width()
// to find dialog units from screen units. tm.tmAveCharWidth is
// the width of _one_ character, so setting the tabs at every
// four characters means we also multiply by four.
SetTabStops((4 * tm.tmAveCharWidth * 100) / rect.Width());
CEditView::UnlockBuffer
Chiamare questa funzione membro per sbloccare il buffer.
void UnlockBuffer() const;
Osservazioni:
Chiamare UnlockBuffer
dopo aver terminato di usare il puntatore restituito da LockBuffer.
Vedi anche
SuperPAD di esempio MFC
Classe CCtrlView
Grafico della gerarchia
Classe CEdit
Classe CDocument
Classe CDocTemplate
Classe CCtrlView
Classe CRichEditView