Classe CEdit
Fornisce la funzionalità di un controllo di modifica di Windows.
Sintassi
class CEdit : public CWnd
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CEdit::CEdit | Costruisce un CEdit oggetto controllo. |
Metodi pubblici
Nome | Descrizione |
---|---|
CEdit::CanUndo | Determina se un'operazione di controllo di modifica può essere annullata. |
CEdit::CharFromPos | Recupera gli indici di riga e carattere per il carattere più vicino a una posizione specificata. |
CEdit::Clear | Elimina (cancella) la selezione corrente (se presente) nel controllo di modifica. |
CEdit::Copy | Copia la selezione corrente ,se presente, nel controllo di modifica negli Appunti in formato CF_TEXT. |
CEdit::Create | Crea il controllo di modifica di Windows e lo collega all'oggetto CEdit . |
CEdit::Cut | Elimina (taglia) la selezione corrente (se presente) nel controllo di modifica e copia il testo eliminato negli Appunti in formato CF_TEXT. |
CEdit::EmptyUndoBuffer | Reimposta (cancella) il flag di annullamento di un controllo di modifica. |
CEdit::FmtLines | Imposta l'inclusione di caratteri di interruzione di riga temporanea attiva o disattivata all'interno di un controllo di modifica a più righe. |
CEdit::GetCueBanner | Recupera il testo visualizzato come segnale di testo, o suggerimento, in un controllo di modifica quando il controllo è vuoto e non ha lo stato attivo. |
CEdit::GetFirstVisibleLine | Determina la riga più visibile in alto in un controllo di modifica. |
CEdit::GetHandle | Recupera un handle per la memoria attualmente allocata per un controllo di modifica a più righe. |
CEdit::GetHighlight | Ottiene gli indici dei caratteri iniziali e finali in un intervallo di testo evidenziato nel controllo di modifica corrente. |
CEdit::GetLimitText | Ottiene la quantità massima di testo che CEdit può contenere. |
CEdit::GetLine | Recupera una riga di testo da un controllo di modifica. |
CEdit::GetLineCount | Recupera il numero di righe in un controllo di modifica a più righe. |
CEdit::GetMargins | Ottiene i margini sinistro e destro per l'oggetto CEdit . |
CEdit::GetModify | Determina se il contenuto di un controllo di modifica è stato modificato. |
CEdit::GetPasswordChar | Recupera il carattere password visualizzato in un controllo di modifica quando l'utente immette testo. |
CEdit::GetRect | Ottiene il rettangolo di formattazione di un controllo di modifica. |
CEdit::GetSel | Ottiene le posizioni del primo e dell'ultimo carattere della selezione corrente in un controllo di modifica. |
CEdit::HideBalloonTip | Nasconde qualsiasi suggerimento a forma di fumetto associato al controllo di modifica corrente. |
CEdit::LimitText | Limita la lunghezza del testo che l'utente può immettere in un controllo di modifica. |
CEdit::LineFromChar | Recupera il numero di riga della riga contenente l'indice di caratteri specificato. |
CEdit::LineIndex | Recupera l'indice di caratteri di una riga all'interno di un controllo di modifica a più righe. |
CEdit::LineLength | Recupera la lunghezza di una riga in un controllo di modifica. |
CEdit::LineScroll | Scorre il testo di un controllo di modifica a più righe. |
CEdit::P aste | Inserisce i dati dagli Appunti nel controllo di modifica in corrispondenza della posizione corrente del cursore. I dati vengono inseriti solo se gli Appunti contengono dati in formato CF_TEXT. |
CEdit::P osFromChar | Recupera le coordinate dell'angolo superiore sinistro di un indice di caratteri specificato. |
CEdit::ReplaceSel | Sostituisce la selezione corrente in un controllo di modifica con il testo specificato. |
CEdit::SetCueBanner | Imposta il testo visualizzato come segnale di testo o suggerimento in un controllo di modifica quando il controllo è vuoto e non ha lo stato attivo. |
CEdit::SetHandle | Imposta l'handle sulla memoria locale che verrà utilizzata da un controllo di modifica a più righe. |
CEdit::SetHighlight | Evidenzia un intervallo di testo visualizzato nel controllo di modifica corrente. |
CEdit::SetLimitText | Imposta la quantità massima di testo CEdit che può contenere. |
CEdit::SetMargins | Imposta i margini sinistro e destro per questo CEdit oggetto . |
CEdit::SetModify | Imposta o cancella il flag di modifica per un controllo di modifica. |
CEdit::SetPasswordChar | Imposta o rimuove un carattere password visualizzato in un controllo di modifica quando l'utente immette testo. |
CEdit::SetReadOnly | Imposta lo stato di sola lettura di un controllo di modifica. |
CEdit::SetRect | Imposta il rettangolo di formattazione di un controllo di modifica a più righe e aggiorna il controllo. |
CEdit::SetRectNP | Imposta il rettangolo di formattazione di un controllo di modifica a più righe senza ridisegnare la finestra di controllo. |
CEdit::SetSel | Seleziona un intervallo di caratteri in un controllo di modifica. |
CEdit::SetTabStops | Imposta le tabulazioni in un controllo di modifica a più righe. |
CEdit::ShowBalloonTip | Visualizza un suggerimento per il fumetto associato al controllo di modifica corrente. |
CEdit::Annulla | Inverte l'ultima operazione di controllo di modifica. |
Osservazioni:
Un controllo di modifica è una finestra figlio rettangolare in cui l'utente può immettere testo.
È possibile creare un controllo di modifica da un modello di finestra di dialogo o direttamente nel codice. In entrambi i casi, chiamare prima il costruttore CEdit
per costruire l'oggetto CEdit
, quindi chiamare la funzione membro Create per creare il controllo di modifica di Windows e collegarlo all'oggetto CEdit
.
La costruzione può essere un processo in un unico passaggio in una classe derivata da CEdit
. Scrivere un costruttore per la classe derivata e chiamare Create
dall'interno del costruttore.
CEdit
eredita funzionalità significative da CWnd
. Per impostare e recuperare testo da un CEdit
oggetto, utilizzare le CWnd
funzioni membro SetWindowText e GetWindowText, che impostano o ottengono l'intero contenuto di un controllo di modifica, anche se si tratta di un controllo multilinea. Le righe di testo in un controllo multilinea sono separate da sequenze di caratteri '\r\n'. Inoltre, se un controllo di modifica è multilinea, ottenere e impostare parte del testo del controllo chiamando le CEdit
funzioni membro GetLine, SetSel, GetSel e ReplaceSel.
Se si desidera gestire i messaggi di notifica di Windows inviati da un controllo di modifica al relativo elemento padre (in genere una classe derivata da CDialog
), aggiungere una voce della mappa messaggi e una funzione membro del gestore messaggi alla classe padre per ogni messaggio.
Ogni voce della mappa messaggi ha il formato seguente:
ON_NOTIFICATION( id, memberFxn )
dove id
specifica l'ID finestra figlio del controllo di modifica che invia la notifica e memberFxn
è il nome della funzione membro padre scritta per gestire la notifica.
Il prototipo della funzione padre è il seguente:
afx_msg void memberFxn ( );
Di seguito è riportato un elenco di potenziali voci della mappa messaggi e una descrizione dei casi in cui verrebbero inviati all'elemento padre:
ON_EN_CHANGE L'utente ha eseguito un'azione che potrebbe aver modificato il testo in un controllo di modifica. A differenza del messaggio di notifica EN_UPDATE, questo messaggio di notifica viene inviato dopo che Windows aggiorna la visualizzazione.
ON_EN_ERRSPACE Il controllo di modifica non può allocare memoria sufficiente per soddisfare una richiesta specifica.
ON_EN_HSCROLL L'utente fa clic sulla barra di scorrimento orizzontale di un controllo di modifica. La finestra padre riceve una notifica prima dell'aggiornamento della schermata.
ON_EN_KILLFOCUS Il controllo di modifica perde lo stato attivo dell'input.
ON_EN_MAXTEXT L'inserimento corrente ha superato il numero specificato di caratteri per il controllo di modifica ed è stato troncato. Inviato anche quando un controllo di modifica non dispone dello stile ES_AUTOHSCROLL e il numero di caratteri da inserire supererebbe la larghezza del controllo di modifica. Inviato anche quando un controllo di modifica non ha lo stile ES_AUTOVSCROLL e il numero totale di righe risultanti da un inserimento di testo supera l'altezza del controllo di modifica.
ON_EN_SETFOCUS Inviato quando un controllo di modifica riceve lo stato attivo per l'input.
ON_EN_UPDATE Il controllo di modifica sta per visualizzare il testo modificato. Inviato dopo che il controllo ha formattato il testo, ma prima di visualizzare il testo in modo che le dimensioni della finestra possano essere modificate, se necessario.
ON_EN_VSCROLL L'utente fa clic sulla barra di scorrimento verticale di un controllo di modifica. La finestra padre riceve una notifica prima dell'aggiornamento della schermata.
Se si crea un CEdit
oggetto all'interno di una finestra di dialogo, l'oggetto CEdit
viene eliminato automaticamente quando l'utente chiude la finestra di dialogo.
Se si crea un CEdit
oggetto da una risorsa di dialogo usando l'editor di dialoghi, l'oggetto CEdit
viene eliminato automaticamente quando l'utente chiude la finestra di dialogo.
Se si crea un CEdit
oggetto all'interno di una finestra, potrebbe essere necessario eliminarlo definitivamente. Se si crea l'oggetto CEdit
nello stack, viene eliminato automaticamente. Se si crea l'oggetto nell'heap CEdit
usando la new
funzione , è necessario chiamare delete
sull'oggetto per distruggerlo quando l'utente termina il controllo di modifica di Windows. Se si alloca memoria nell'oggetto, eseguire l'override CEdit
del CEdit
distruttore per eliminare le allocazioni.
Per modificare determinati stili in un controllo di modifica,ad esempio ES_READONLY, è necessario inviare messaggi specifici al controllo anziché utilizzare ModifyStyle. Vedere Modificare gli stili di controllo in Windows SDK.
Per altre informazioni su CEdit
, vedere Controlli.
Gerarchia di ereditarietà
CEdit
Requisiti
Intestazione: afxwin.h
CEdit::CanUndo
Chiamare questa funzione per determinare se l'ultima operazione di modifica può essere annullata.
BOOL CanUndo() const;
Valore restituito
Diverso da zero se l'ultima operazione di modifica può essere annullata da una chiamata alla Undo
funzione membro; 0 se non può essere annullata.
Osservazioni:
Per altre informazioni, vedere EM_CANUNDO in Windows SDK.
Esempio
Vedere l'esempio per CEdit::Undo.
CEdit::CEdit
Costruisce un oggetto CEdit
.
CEdit();
Osservazioni:
Usare Crea per costruire il controllo di modifica di Windows.
Esempio
// Declare a local CEdit object.
CEdit myEdit;
// Declare a dynamic CEdit object.
CEdit *pmyEdit = new CEdit;
CEdit::CharFromPos
Chiamare questa funzione per recuperare gli indici di riga e carattere in base zero del carattere più vicino al punto specificato in questo CEdit
controllo
int CharFromPos(CPoint pt) const;
Parametri
pt
Coordinate di un punto nell'area client di questo CEdit
oggetto.
Valore restituito
Indice dei caratteri in WORD con ordine basso e indice di riga in WORD di ordine elevato.
Osservazioni:
Nota
Questa funzione membro è disponibile a partire da Windows 95 e Windows NT 4.0.
Per altre informazioni, vedere EM_CHARFROMPOS in Windows SDK.
Esempio
// CMyEdit inherits from CEdit
void CMyEdit::OnLButtonDown(UINT nFlags, CPoint point)
{
int n = CharFromPos(point);
int nLineIndex = HIWORD(n);
int nCharIndex = LOWORD(n);
TRACE(_T("nLineIndex = %d, nCharIndex = %d\r\n"), nLineIndex, nCharIndex);
CEdit::OnLButtonDown(nFlags, point);
}
CEdit::Clear
Chiamare questa funzione per eliminare (deselezionare) la selezione corrente (se presente) nel controllo di modifica.
void Clear();
Osservazioni:
L'eliminazione eseguita da Clear
può essere annullata chiamando la funzione membro Annulla .
Per eliminare la selezione corrente e posizionare il contenuto eliminato negli Appunti, chiamare la funzione membro Cut .
Per altre informazioni, vedere WM_CLEAR in Windows SDK.
Esempio
// Delete all of the text.
m_myEdit.SetSel(0, -1);
m_myEdit.Clear();
CEdit::Copy
Chiamare questa funzione per comitare la selezione corrente (se presente) nel controllo di modifica negli Appunti in formato CF_TEXT.
void Copy();
Osservazioni:
Per altre informazioni, vedere WM_COPY in Windows SDK.
Esempio
// Copy all of the text to the clipboard.
m_myEdit.SetSel(0, -1);
m_myEdit.Copy();
CEdit::Create
Crea il controllo di modifica di Windows e lo collega all'oggetto CEdit
.
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Parametri
dwStyle
Specifica lo stile del controllo di modifica. Applicare qualsiasi combinazione di stili di modifica al controllo .
rect
Specifica le dimensioni e la posizione del controllo di modifica. Può essere un oggetto o RECT
una CRect
struttura.
pParentWnd
Specifica la finestra padre del controllo di modifica (in genere ).CDialog
Non deve essere NULL.
nID
Specifica l'ID del controllo di modifica.
Valore restituito
Diverso da zero se l'inizializzazione ha esito positivo; in caso contrario, 0.
Osservazioni:
Si costruisce un CEdit
oggetto in due passaggi. Prima di tutto, chiamare il CEdit
costruttore e quindi chiamare Create
, che crea il controllo di modifica di Windows e lo collega all'oggetto CEdit
.
Quando Create
viene eseguito, Windows invia i messaggi WM_NCCREATE, WM_NCCALCSIZE, WM_CREATE e WM_GETMINMAXINFO al controllo di modifica.
Questi messaggi vengono gestiti per impostazione predefinita dalle funzioni membro OnNcCreate, OnNcCalcSize, OnCreate e OnGetMinMaxInfo nella CWnd
classe base. Per estendere la gestione predefinita dei messaggi, derivare una classe da CEdit
, aggiungere una mappa messaggi alla nuova classe ed eseguire l'override delle funzioni membro del gestore messaggi precedenti. Eseguire l'override OnCreate
di , ad esempio, per eseguire l'inizializzazione necessaria per la nuova classe.
Applicare gli stili di finestra seguenti a un controllo di modifica.
WS_CHILD sempre
WS_VISIBLE in genere
WS_DISABLED raramente
WS_GROUP A raggruppare i controlli
WS_TABSTOP Per includere il controllo di modifica nell'ordine di tabulazione
Esempio
// dynamically create an edit control
CEdit *pEdit = new CEdit;
pEdit->Create(ES_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER,
CRect(10, 10, 100, 100), this, 1);
CEdit::Cut
Chiamare questa funzione per eliminare (tagliare) la selezione corrente (se presente) nel controllo di modifica e copiare il testo eliminato negli Appunti nel formato CF_TEXT.
void Cut();
Osservazioni:
L'eliminazione eseguita da Cut
può essere annullata chiamando la funzione membro Annulla .
Per eliminare la selezione corrente senza inserire il testo eliminato negli Appunti, chiamare la funzione membro Clear .
Per altre informazioni, vedere WM_CUT in Windows SDK.
Esempio
// Delete all of the text and copy it to the clipboard.
m_myEdit.SetSel(0, -1);
m_myEdit.Cut();
CEdit::EmptyUndoBuffer
Chiamare questa funzione per reimpostare (deselezionare) il flag di annullamento di un controllo di modifica.
void EmptyUndoBuffer();
Osservazioni:
Il controllo di modifica non sarà ora in grado di annullare l'ultima operazione. Il flag di annullamento viene impostato ogni volta che un'operazione all'interno del controllo di modifica può essere annullata.
Il flag di annullamento viene cancellato automaticamente ogni volta che vengono chiamate le funzioni membro SetWindowText o SetHandleCWnd
.
Per altre informazioni, vedere EM_EMPTYUNDOBUFFER in Windows SDK.
Esempio
// Clear the undo buffer.
if (m_myEdit.CanUndo())
{
m_myEdit.EmptyUndoBuffer();
ASSERT(!m_myEdit.CanUndo());
}
CEdit::FmtLines
Chiamare questa funzione per impostare l'inclusione di caratteri di interruzione linea temporanea attiva o disattivata all'interno di un controllo di modifica a più righe.
BOOL FmtLines(BOOL bAddEOL);
Parametri
bAddEOL
Specifica se inserire caratteri di interruzione di riga temporanea. Il valore TRUE inserisce i caratteri; un valore false li rimuove.
Valore restituito
Diverso da zero se si verifica una formattazione; in caso contrario, 0.
Osservazioni:
Un'interruzione linea morbida è costituita da due ritorni a capo e da un avanzamento linea inserito alla fine di una riga interrotta a causa del ritorno a capo automatico. Un'interruzione di linea dura è costituita da un ritorno a capo e da un avanzamento riga. Le righe che terminano con un'interruzione di riga rigida non sono interessate da FmtLines
.
Windows risponderà solo se l'oggetto CEdit
è un controllo di modifica a più righe.
FmtLines
influisce solo sul buffer restituito da GetHandle e sul testo restituito da WM_GETTEXT. Non ha alcun impatto sulla visualizzazione del testo all'interno del controllo di modifica.
Per altre informazioni, vedere EM_FMTLINES in Windows SDK.
Esempio
CString strText;
// Add soft line-break breaks.
m_myEdit.FmtLines(TRUE);
// Dump the text of the edit control.
m_myEdit.GetWindowText(strText);
AFXDUMP(strText);
// Remove soft line-break breaks.
m_myEdit.FmtLines(FALSE);
CEdit::GetCueBanner
Recupera il testo visualizzato come segnale di testo o suggerimento in un controllo di modifica quando il controllo è vuoto.
BOOL GetCueBanner(
LPWSTR lpszText,
int cchText) const;
CString GetCueBanner() const;
Parametri
lpszText
[out] Puntatore a una stringa contenente il testo del segnale.
cchText
[in] Numero di caratteri che è possibile ricevere. Questo numero include il carattere NULL di terminazione.
Valore restituito
Per il primo overload, TRUE se il metodo ha esito positivo; in caso contrario FALSE.
Per il secondo overload, CString che contiene il testo del segnale se il metodo ha esito positivo; in caso contrario, la stringa vuota ("").
Osservazioni:
Questo metodo invia il messaggio di EM_GETCUEBANNER , descritto in Windows SDK. Per altre informazioni, vedere la macro Edit_GetCueBannerText .
CEdit::GetFirstVisibleLine
Chiamare questa funzione per determinare la riga più visibile in un controllo di modifica.
int GetFirstVisibleLine() const;
Valore restituito
Indice in base zero della riga visibile in alto. Per i controlli di modifica a riga singola, il valore restituito è 0.
Osservazioni:
Per altre informazioni, vedere EM_GETFIRSTVISIBLELINE in Windows SDK.
Esempio
int nFirstVisible = m_myEdit.GetFirstVisibleLine();
// Scroll the edit control so that the first visible line
// is the first line of text.
if (nFirstVisible > 0)
{
m_myEdit.LineScroll(-nFirstVisible, 0);
}
CEdit::GetHandle
Chiamare questa funzione per recuperare un handle alla memoria attualmente allocata per un controllo di modifica a più righe.
HLOCAL GetHandle() const;
Valore restituito
Handle di memoria locale che identifica il buffer che contiene il contenuto del controllo di modifica. Se si verifica un errore, ad esempio l'invio del messaggio a un controllo di modifica a riga singola, il valore restituito è 0.
Osservazioni:
L'handle è un handle di memoria locale e può essere usato da qualsiasi funzione di memoria di Windows locale che accetta un handle di memoria locale come parametro.
GetHandle
viene elaborato solo da controlli di modifica a più righe.
Chiamare GetHandle
un controllo di modifica a più righe in una finestra di dialogo solo se la finestra di dialogo è stata creata con il set di flag di stile DS_LOCALEDIT. Se lo stile DS_LOCALEDIT non è impostato, si otterrà comunque un valore restituito diverso da zero, ma non sarà possibile usare il valore restituito.
Nota
GetHandle
non funzionerà con Windows 95/98. Se chiami GetHandle
in Windows 95/98, restituirà NULL. GetHandle
funzionerà come documentato in Windows NT, versioni 3.51 e successive.
Per altre informazioni, vedere EM_GETHANDLE in Windows SDK.
Esempio
HLOCAL h = m_myEdit.GetHandle();
LPCTSTR lpszText = (LPCTSTR)::LocalLock(h);
// Dump the text of the edit control.
AFXDUMP(lpszText);
::LocalUnlock(h);
CEdit::GetHighlight
Ottiene gli indici dei primi e degli ultimi caratteri in un intervallo di testo evidenziato nel controllo di modifica corrente.
BOOL GetHighlight(
int* pichStart,
int* pichEnd) const;
Parametri
pichStart
[out] Indice in base zero del primo carattere nell'intervallo di testo evidenziato.
pichEnd
[out] Indice in base zero dell'ultimo carattere nell'intervallo di testo evidenziato.
Valore restituito
TRUE se questo metodo ha esito positivo; in caso contrario, FALSE.
Osservazioni:
Questo metodo invia il messaggio di EM_GETHILITE , descritto in Windows SDK. Sia SetHighlight
che GetHighlight
sono attualmente abilitati solo per le compilazioni UNICODE.
CEdit::GetLimitText
Chiamare questa funzione membro per ottenere il limite di testo per questo CEdit
oggetto.
UINT GetLimitText() const;
Valore restituito
Limite di testo corrente, in TCHAR, per questo CEdit
oggetto.
Osservazioni:
Il limite di testo è la quantità massima di testo, in TCHAR, che il controllo di modifica può accettare.
Nota
Questa funzione membro è disponibile a partire da Windows 95 e Windows NT 4.0.
Per altre informazioni, vedere EM_GETLIMITTEXT in Windows SDK.
Esempio
CString strText(_T("I'm an edit control!"));
UINT nLength = strText.GetLength() * sizeof(TCHAR);
// Want the text limit to be at least the size of the new string.
if (m_myEdit.GetLimitText() < nLength)
m_myEdit.SetLimitText(nLength);
m_myEdit.SetWindowText(strText);
CEdit::GetLine
Chiamare questa funzione per recuperare una riga di testo da un controllo di modifica e posizionarla in lpszBuffer.
int GetLine(
int nIndex,
LPTSTR lpszBuffer) const;
int GetLine(
int nIndex,
LPTSTR lpszBuffer,
int nMaxLength) const;
Parametri
nIndex
Specifica il numero di riga da recuperare da un controllo di modifica a più righe. I numeri di riga sono in base zero; Il valore 0 specifica la prima riga. Questo parametro viene ignorato da un controllo di modifica a riga singola.
lpszBuffer
Punta al buffer che riceve una copia della riga. La prima parola del buffer deve specificare il numero massimo di TCHAR che possono essere copiati nel buffer.
nMaxLength
Specifica il numero massimo di caratteri TCHAR che possono essere copiati nel buffer. GetLine
inserisce questo valore nella prima parola di lpszBuffer prima di effettuare la chiamata a Windows.
Valore restituito
Numero di caratteri attualmente copiati. Il valore restituito è 0 se il numero di riga specificato da nIndex è maggiore del numero di righe nel controllo di modifica.
Osservazioni:
La riga copiata non contiene un carattere di terminazione Null.
Per altre informazioni, vedere EM_GETLINE in Windows SDK.
Esempio
Vedere l'esempio per CEdit::GetLineCount.
CEdit::GetLineCount
Chiamare questa funzione per recuperare il numero di righe in un controllo di modifica a più righe.
int GetLineCount() const;
Valore restituito
Intero contenente il numero di righe nel controllo di modifica a più righe. Se nel controllo di modifica non è stato immesso testo, il valore restituito è 1.
Osservazioni:
GetLineCount
viene elaborato solo da controlli di modifica a più righe.
Per altre informazioni, vedere EM_GETLINECOUNT in Windows SDK.
Esempio
int i, nLineCount = m_myEdit.GetLineCount();
CString strText, strLine;
// Dump every line of text of the edit control.
for (i = 0; i < nLineCount; i++)
{
// length of line i:
int len = m_myEdit.LineLength(m_myEdit.LineIndex(i));
m_myEdit.GetLine(i, strText.GetBuffer(len), len);
strText.ReleaseBuffer(len);
strLine.Format(_T("line %d: '%s'\n"), i, strText);
AFXDUMP(strLine);
}
CEdit::GetMargins
Chiamare questa funzione membro per recuperare i margini sinistro e destro di questo controllo di modifica.
DWORD GetMargins() const;
Valore restituito
Larghezza del margine sinistro in WORD in ordine basso e larghezza del margine destro in WORD di ordine elevato.
Osservazioni:
I margini vengono misurati in pixel.
Nota
Questa funzione membro è disponibile a partire da Windows 95 e Windows NT 4.0.
Per altre informazioni, vedere EM_GETMARGINS in Windows SDK.
Esempio
Vedere l'esempio per CEditView::GetEditCtrl.
CEdit::GetModify
Chiamare questa funzione per determinare se il contenuto di un controllo di modifica è stato modificato.
BOOL GetModify() const;
Valore restituito
Diverso da zero se il contenuto del controllo di modifica è stato modificato; 0 se sono rimasti invariati.
Osservazioni:
Windows mantiene un flag interno che indica se il contenuto del controllo di modifica è stato modificato. Questo flag viene cancellato quando il controllo di modifica viene creato per la prima volta e può anche essere cancellato chiamando la funzione membro SetModify .
Per altre informazioni, vedere EM_GETMODIFY in Windows SDK.
Esempio
// Reset the modified state only if my edit has been modified.
if (m_myEdit.GetModify())
m_myEdit.SetModify(FALSE);
CEdit::GetPasswordChar
Chiamare questa funzione per recuperare il carattere password visualizzato in un controllo di modifica quando l'utente immette testo.
TCHAR GetPasswordChar() const;
Valore restituito
Specifica il carattere da visualizzare anziché il carattere digitato dall'utente. Il valore restituito è NULL se non esiste alcun carattere password.
Osservazioni:
Se si crea il controllo di modifica con lo stile ES_PASSWORD, la DLL che supporta il controllo determina il carattere password predefinito. Il manifesto o il metodo InitCommonControlsEx determina la DLL che supporta il controllo di modifica. Se user32.dll supporta il controllo di modifica, il carattere password predefinito è ASTERISK ('*', U+002A). Se comctl32.dll versione 6 supporta il controllo di modifica, il carattere predefinito è BLACK CIRCLE ('●', U+25CF). Per altre informazioni sulla DLL e sulla versione che supportano i controlli comuni, vedere Shell e Versioni dei controlli comuni.
Questo metodo invia il messaggio EM_GETPASSWORDCHAR , descritto in Windows SDK.
Esempio
// Turn on the password mode.
m_myEdit.SetPasswordChar('*');
ASSERT(m_myEdit.GetStyle() & ES_PASSWORD);
ASSERT(m_myEdit.GetPasswordChar() == '*');
CEdit::GetRect
Chiamare questa funzione per ottenere il rettangolo di formattazione di un controllo di modifica.
void GetRect(LPRECT lpRect) const;
Parametri
lpRect
Punta alla RECT
struttura che riceve il rettangolo di formattazione.
Osservazioni:
Il rettangolo di formattazione è il rettangolo di limitazione del testo, indipendentemente dalle dimensioni della finestra di controllo di modifica.
Il rettangolo di formattazione di un controllo di modifica a più righe può essere modificato dalle funzioni membro SetRect e SetRectNP .
Per altre informazioni, vedere EM_GETRECT in Windows SDK.
Esempio
Vedere l'esempio per CEdit::LimitText.
CEdit::GetSel
Chiamare questa funzione per ottenere le posizioni del carattere iniziale e finale della selezione corrente (se presente) in un controllo di modifica, usando il valore restituito o i parametri.
DWORD GetSel() const;
void GetSel(
int& nStartChar,
int& nEndChar) const;
Parametri
nStartChar
Riferimento a un numero intero che riceverà la posizione del primo carattere nella selezione corrente.
nEndChar
Riferimento a un numero intero che riceverà la posizione del primo carattere non selezionato oltre la fine della selezione corrente.
Valore restituito
La versione che restituisce un valore DWORD restituisce un valore che contiene la posizione iniziale nella parola in ordine basso e la posizione del primo carattere non selezionato dopo la fine della selezione nella parola in ordine elevato.
Osservazioni:
Per altre informazioni, vedere EM_GETSEL in Windows SDK.
Esempio
// Set the selection to be all characters after the current selection.
DWORD dwSel = m_myEdit.GetSel();
m_myEdit.SetSel(HIWORD(dwSel), -1);
CEdit::HideBalloonTip
Nasconde qualsiasi suggerimento a forma di fumetto associato al controllo di modifica corrente.
BOOL HideBalloonTip();
Valore restituito
TRUE se questo metodo ha esito positivo; in caso contrario, FALSE.
Osservazioni:
Questa funzione invia il messaggio di EM_HIDEBALLOONTIP , descritto in Windows SDK.
CEdit::LimitText
Chiamare questa funzione per limitare la lunghezza del testo che l'utente può immettere in un controllo di modifica.
void LimitText(int nChars = 0);
Parametri
nChars
Specifica la lunghezza (in TCHAR) del testo che l'utente può immettere. Se questo parametro è 0, la lunghezza del testo viene impostata su UINT_MAX byte. Questo è il comportamento predefinito.
Osservazioni:
La modifica del limite di testo limita solo il testo che l'utente può immettere. Non ha alcun effetto su alcun testo già presente nel controllo di modifica, né influisce sulla lunghezza del testo copiato nel controllo di modifica dalla funzione membro SetWindowText in CWnd
. Se un'applicazione usa la SetWindowText
funzione per inserire più testo in un controllo di modifica di quello specificato nella chiamata a LimitText
, l'utente può eliminare qualsiasi testo all'interno del controllo di modifica. Tuttavia, il limite di testo impedirà all'utente di sostituire il testo esistente con nuovo testo, a meno che l'eliminazione della selezione corrente non causi che il testo scende al di sotto del limite di testo.
Nota
In Win32 (Windows NT e Windows 95/98), SetLimitText sostituisce questa funzione.
Per altre informazioni, vedere EM_LIMITTEXT in Windows SDK.
Esempio
// Limit the number of characters to be the maximum number visible.
// Get the text metrics for the edit; needed for the
// average character width.
TEXTMETRIC tm;
CDC *pDC = m_myEdit.GetDC();
pDC->GetTextMetrics(&tm);
m_myEdit.ReleaseDC(pDC);
CRect r;
m_myEdit.GetRect(&r);
m_myEdit.LimitText(r.Width() / tm.tmAveCharWidth);
CEdit::LineFromChar
Chiamare questa funzione per recuperare il numero di riga della riga contenente l'indice di caratteri specificato.
int LineFromChar(int nIndex = -1) const;
Parametri
nIndex
Contiene il valore dell'indice in base zero per il carattere desiderato nel testo del controllo di modifica oppure contiene -1. Se nIndex è -1, specifica la riga corrente, ovvero la riga che contiene il cursore.
Valore restituito
Numero di riga in base zero della riga contenente l'indice dei caratteri specificato da nIndex. Se nIndex è -1, viene restituito il numero della riga contenente il primo carattere della selezione. Se non è presente alcuna selezione, viene restituito il numero di riga corrente.
Osservazioni:
Un indice di caratteri è il numero di caratteri dall'inizio del controllo di modifica.
Questa funzione membro viene usata solo dai controlli di modifica a più righe.
Per altre informazioni, vedere EM_LINEFROMCHAR in Windows SDK.
Esempio
// The index of the char to get information on.
int nIndex = 4;
CString strText;
m_myEdit.GetWindowText(strText);
strText = strText.Mid(nIndex, 1);
// Get the text extent of the character.
CDC *pDC = m_myEdit.GetDC();
CSize sz = pDC->GetTextExtent(strText);
m_myEdit.ReleaseDC(pDC);
CPoint pt = m_myEdit.PosFromChar(nIndex);
// Dump the index, character, line number, and character bounds.
TRACE(_T("nIndex = %d, character = %c, line = %d, bounds = ")
_T("{%d, %d, %d, %d}\r\n"),
nIndex, strText[0], m_myEdit.LineFromChar(nIndex),
pt.x /* left */, pt.y /* top */,
pt.x + sz.cx /* right */, pt.y + sz.cy /* bottom */);
CEdit::LineIndex
Chiamare questa funzione per recuperare l'indice dei caratteri di una riga all'interno di un controllo di modifica a più righe.
int LineIndex(int nLine = -1) const;
Parametri
nLine
Contiene il valore di indice per la riga desiderata nel testo del controllo di modifica oppure contiene -1. Se nLine è -1, specifica la riga corrente, ovvero la riga che contiene il cursore.
Valore restituito
Indice di caratteri della riga specificata in nLine o -1 se il numero di riga specificato è maggiore del numero di righe nel controllo di modifica.
Osservazioni:
L'indice dei caratteri è il numero di caratteri dall'inizio del controllo di modifica alla riga specificata.
Questa funzione membro viene elaborata solo da controlli di modifica a più righe.
Per altre informazioni, vedere EM_LINEINDEX in Windows SDK.
Esempio
// The string for replacing.
CString strString(_T("Hi, we're the replacements."));
int nBegin, nEnd;
// Replace the second line, if it exists, of the edit control
// with the text strString.
if ((nBegin = m_myEdit.LineIndex(1)) != -1)
{
nEnd = nBegin + m_myEdit.LineLength(nBegin);
m_myEdit.SetSel(nBegin, nEnd);
m_myEdit.ReplaceSel(strString);
}
CEdit::LineLength
Recupera la lunghezza di una riga in un controllo di modifica.
int LineLength(int nLine = -1) const;
Parametri
nLine
Indice in base zero di un carattere nella riga la cui lunghezza deve essere recuperata. Il valore predefinito è -1.
Valore restituito
Per i controlli di modifica a riga singola, il valore restituito è la lunghezza, in TCHAR, del testo nel controllo di modifica.
Per i controlli di modifica su più righe, il valore restituito è la lunghezza, in TCHAR, della riga specificata dal parametro nLine . Per il testo ANSI, la lunghezza è il numero di byte nella riga; per il testo Unicode, la lunghezza è il numero di caratteri nella riga. La lunghezza non include il carattere di ritorno a capo alla fine della riga.
Se il parametro nLine è maggiore del numero di caratteri nel controllo, il valore restituito è zero.
Se il parametro nLine è -1, il valore restituito corrisponde al numero di caratteri non selezionati nelle righe che contengono caratteri selezionati. Ad esempio, se la selezione si estende dal quarto carattere di una riga all'ottavo carattere dalla fine della riga successiva, il valore restituito è 10. Ovvero, tre caratteri sulla prima riga e sette sul successivo.
Per altre informazioni sul tipo TCHAR, vedere la riga TCHAR nella tabella in Tipi di dati di Windows.
Osservazioni:
Questo metodo è supportato dal messaggio EM_LINELENGTH , descritto in Windows SDK.
Esempio
Vedere l'esempio per CEdit::LineIndex.
CEdit::LineScroll
Chiamare questa funzione per scorrere il testo di un controllo di modifica a più righe.
void LineScroll(
int nLines,
int nChars = 0);
Parametri
nLines
Specifica il numero di righe da scorrere verticalmente.
nChars
Specifica il numero di posizioni dei caratteri da scorrere orizzontalmente. Questo valore viene ignorato se il controllo di modifica ha lo stile ES_RIGHT o ES_CENTER.
Osservazioni:
Questa funzione membro viene elaborata solo da controlli di modifica a più righe.
Il controllo di modifica non scorre verticalmente oltre l'ultima riga di testo nel controllo di modifica. Se la riga corrente più il numero di righe specificate da nLines supera il numero totale di righe nel controllo di modifica, il valore viene regolato in modo che l'ultima riga del controllo di modifica venga scorrere fino alla parte superiore della finestra del controllo di modifica.
LineScroll
può essere utilizzato per scorrere orizzontalmente oltre l'ultimo carattere di qualsiasi riga.
Per altre informazioni, vedere EM_LINESCROLL in Windows SDK.
Esempio
Vedere l'esempio per CEdit::GetFirstVisibleLine.
CEdit::P aste
Chiamare questa funzione per inserire i dati dagli Appunti nell'oggetto CEdit
in corrispondenza del punto di inserimento.
void Paste();
Osservazioni:
I dati vengono inseriti solo se gli Appunti contengono dati in formato CF_TEXT.
Per altre informazioni, vedere WM_PASTE in Windows SDK.
Esempio
// Replace all of the text with the text in the clipboard.
m_myEdit.SetSel(0, -1);
m_myEdit.Paste();
CEdit::P osFromChar
Chiamare questa funzione per ottenere la posizione (angolo superiore sinistro) di un determinato carattere all'interno di questo CEdit
oggetto.
CPoint PosFromChar(UINT nChar) const;
Parametri
nChar
Indice in base zero del carattere specificato.
Valore restituito
Coordinate dell'angolo superiore sinistro del carattere specificato da nChar.
Osservazioni:
Il carattere viene specificato assegnando il valore di indice in base zero. Se nChar è maggiore dell'indice dell'ultimo carattere in questo CEdit
oggetto, il valore restituito specifica le coordinate della posizione del carattere appena oltre l'ultimo carattere in questo CEdit
oggetto.
Nota
Questa funzione membro è disponibile a partire da Windows 95 e Windows NT 4.0.
Per altre informazioni, vedere EM_POSFROMCHAR in Windows SDK.
Esempio
Vedere l'esempio per CEdit::LineFromChar.
CEdit::ReplaceSel
Chiamare questa funzione per sostituire la selezione corrente in un controllo di modifica con il testo specificato da lpszNewText.
void ReplaceSel(LPCTSTR lpszNewText, BOOL bCanUndo = FALSE);
Parametri
lpszNewText
Punta a una stringa con terminazione Null contenente il testo sostitutivo.
bCanUndo
Per specificare che questa funzione può essere annullata, impostare il valore di questo parametro su TRUE. Il valore predefinito è FALSE.
Osservazioni:
Sostituisce solo una parte del testo in un controllo di modifica. Se si desidera sostituire tutto il testo, usare la funzione membro CWnd::SetWindowText .
Se non è presente alcuna selezione corrente, il testo sostitutivo viene inserito nella posizione corrente del cursore.
Per altre informazioni, vedere EM_REPLACESEL in Windows SDK.
Esempio
Vedere l'esempio per CEdit::LineIndex.
CEdit::SetCueBanner
Imposta il testo visualizzato come segnale di testo o suggerimento in un controllo di modifica quando il controllo è vuoto.
BOOL SetCueBanner(LPCWSTR lpszText);
BOOL SetCueBanner(
LPCWSTR lpszText,
BOOL fDrawWhenFocused = FALSE);
Parametri
lpszText
[in] Puntatore a una stringa contenente il segnale da visualizzare nel controllo di modifica.
fDrawWhenFocused
[in] Se FALSE, il banner di segnale non viene disegnato quando l'utente fa clic sul controllo di modifica e assegna al controllo lo stato attivo.
Se TRUE, il banner del segnale viene disegnato anche quando il controllo ha lo stato attivo. Il banner segnale scompare quando l'utente inizia a digitare nel controllo.
Il valore predefinito è FALSE.
Valore restituito
TRUE se il metodo ha esito positivo; in caso contrario FALSE.
Osservazioni:
Questo metodo invia il messaggio di EM_SETCUEBANNER , descritto in Windows SDK. Per altre informazioni, vedere la macro Edit_SetCueBannerTextFocused .
Esempio
Nell'esempio seguente viene illustrato il metodo CEdit::SetCueBanner .
m_cedit.SetCueBanner(_T("First, enter text here..."), TRUE);
CEdit::SetHandle
Chiamare questa funzione per impostare l'handle sulla memoria locale che verrà utilizzata da un controllo di modifica a più righe.
void SetHandle(HLOCAL hBuffer);
Parametri
hBuffer
Contiene un handle per la memoria locale. Questo handle deve essere stato creato da una chiamata precedente alla funzione LocalAlloc di Windows usando il flag LMEM_MOVEABLE. Si presuppone che la memoria contenga una stringa con terminazione Null. In caso contrario, il primo byte della memoria allocata deve essere impostato su 0.
Osservazioni:
Il controllo di modifica userà quindi questo buffer per archiviare il testo attualmente visualizzato anziché allocare il proprio buffer.
Questa funzione membro viene elaborata solo da controlli di modifica a più righe.
Prima che un'applicazione imposti un nuovo handle di memoria, deve usare la funzione membro GetHandle per ottenere l'handle nel buffer di memoria corrente e liberare tale memoria usando la LocalFree
funzione Windows.
SetHandle
cancella il buffer di annullamento (la funzione membro CanUndo quindi restituisce 0) e il flag di modifica interno (la funzione membro GetModify restituisce quindi 0). La finestra di controllo di modifica viene ridisegnata.
È possibile utilizzare questa funzione membro in un controllo di modifica a più righe in una finestra di dialogo solo se è stata creata la finestra di dialogo con il set di flag di stile DS_LOCALEDIT.
Nota
GetHandle
non funzionerà con Windows 95/98. Se chiami GetHandle
in Windows 95/98, restituirà NULL. GetHandle
funzionerà come documentato in Windows NT, versioni 3.51 e successive.
Per altre informazioni, vedere EM_SETHANDLE, LocalAlloc e LocalFree in Windows SDK.
Esempio
// The string to set in the edit control.
CString strString(_T("George Frideric"));
// Initialize the new local handle.
size_t cbSize = (strString.GetLength() + 1) * sizeof(TCHAR);
HLOCAL h = ::LocalAlloc(LHND, cbSize);
LPTSTR lpszText = (LPTSTR)::LocalLock(h);
_tcsncpy_s(lpszText, cbSize / sizeof(TCHAR), strString, _TRUNCATE);
::LocalUnlock(h);
// Free the current text handle of the edit control.
::LocalFree(m_myEdit.GetHandle());
// Set the new text handle.
m_myEdit.SetHandle(h);
CEdit::SetHighlight
Evidenzia un intervallo di testo visualizzato nel controllo di modifica corrente.
void SetHighlight(
int ichStart,
int ichEnd);
Parametri
ichStart
[in] Indice in base zero del primo carattere nell'intervallo di testo da evidenziare.
ichEnd
[in] Indice in base zero dell'ultimo carattere nell'intervallo di testo da evidenziare.
Osservazioni:
Questo metodo invia il messaggio di EM_SETHILITE , descritto in Windows SDK. Questo metodo invia il messaggio di EM_SETHILITE , descritto in Windows SDK. Sia SetHighlight
che GetHighlight
sono abilitati solo per le compilazioni UNICODE.
CEdit::SetLimitText
Chiamare questa funzione membro per impostare il limite di testo per questo CEdit
oggetto.
void SetLimitText(UINT nMax);
Parametri
nMax
Nuovo limite di testo, espresso in caratteri.
Osservazioni:
Il limite di testo è la quantità massima di testo, espressa in caratteri, che il controllo di modifica può accettare.
La modifica del limite di testo limita solo il testo che l'utente può immettere. Non ha alcun effetto su alcun testo già presente nel controllo di modifica, né influisce sulla lunghezza del testo copiato nel controllo di modifica dalla funzione membro SetWindowText in CWnd
. Se un'applicazione usa la SetWindowText
funzione per inserire più testo in un controllo di modifica di quello specificato nella chiamata a LimitText
, l'utente può eliminare qualsiasi testo all'interno del controllo di modifica. Tuttavia, il limite di testo impedirà all'utente di sostituire il testo esistente con nuovo testo, a meno che l'eliminazione della selezione corrente non causi che il testo scende al di sotto del limite di testo.
Questa funzione sostituisce LimitText in Win32.
Per altre informazioni, vedere EM_SETLIMITTEXT in Windows SDK.
Esempio
Vedere l'esempio per CEditView::GetEditCtrl.
CEdit::SetMargins
Chiamare questo metodo per impostare i margini sinistro e destro di questo controllo di modifica.
void SetMargins(
UINT nLeft,
UINT nRight);
Parametri
nLeft
Larghezza del nuovo margine sinistro, in pixel.
nRight
Larghezza del nuovo margine destro, in pixel.
Osservazioni:
Nota
Questa funzione membro è disponibile a partire da Windows 95 e Windows NT 4.0.
Per altre informazioni, vedere EM_SETMARGINS in Windows SDK.
Esempio
Vedere l'esempio per CEditView::GetEditCtrl.
CEdit::SetModify
Chiamare questa funzione per impostare o cancellare il flag modificato per un controllo di modifica.
void SetModify(BOOL bModified = TRUE);
Parametri
bModified
Un valore TRUE indica che il testo è stato modificato e un valore FALSE indica che non è stato modificato. Per impostazione predefinita, il flag modificato è impostato.
Osservazioni:
Il flag modificato indica se il testo all'interno del controllo di modifica è stato modificato. Viene impostato automaticamente ogni volta che l'utente modifica il testo. È possibile recuperarne il valore con la funzione membro GetModify .
Per altre informazioni, vedere EM_SETMODIFY in Windows SDK.
Esempio
Vedere l'esempio per CEdit::GetModify.
CEdit::SetPasswordChar
Chiamare questa funzione per impostare o rimuovere un carattere password visualizzato in un controllo di modifica quando l'utente digita testo.
void SetPasswordChar(TCHAR ch);
Parametri
Ch
Specifica il carattere da visualizzare al posto del carattere digitato dall'utente. Se ch è 0, vengono visualizzati i caratteri effettivi digitati dall'utente.
Osservazioni:
Quando viene impostato un carattere password, tale carattere viene visualizzato per ogni carattere digitato dall'utente.
Questa funzione membro non ha alcun effetto su un controllo di modifica a più righe.
Quando viene chiamata la SetPasswordChar
funzione membro, CEdit
ridisegnerà tutti i caratteri visibili usando il carattere specificato da ch.
Se il controllo di modifica viene creato con lo stile ES_PASSWORD , il carattere password predefinito viene impostato su un asterisco ( *). Questo stile viene rimosso se SetPasswordChar
viene chiamato con ch impostato su 0.
Per altre informazioni, vedere EM_SETPASSWORDCHAR in Windows SDK.
Esempio
// Turn off the password mode.
m_myEdit.SetPasswordChar(0);
ASSERT(!(m_myEdit.GetStyle() & ES_PASSWORD));
CEdit::SetReadOnly
Chiama questa funzione per impostare lo stato di sola lettura di un controllo di modifica.
BOOL SetReadOnly(BOOL bReadOnly = TRUE);
Parametri
bReadOnly
Specifica se impostare o rimuovere lo stato di sola lettura del controllo di modifica. Il valore TRUE imposta lo stato di sola lettura; Un valore false imposta lo stato su lettura/scrittura.
Valore restituito
Diverso da zero se l'operazione ha esito positivo o 0 se si verifica un errore.
Osservazioni:
L'impostazione corrente è disponibile testando il flag ES_READONLY nel valore restituito di CWnd::GetStyle.
Per altre informazioni, vedere EM_SETREADONLY in Windows SDK.
Esempio
// Set the edit control to be read-only.
m_myEdit.SetReadOnly(TRUE);
ASSERT(m_myEdit.GetStyle() & ES_READONLY);
CEdit::SetRect
Chiamare questa funzione per impostare le dimensioni di un rettangolo usando le coordinate specificate.
void SetRect(LPCRECT lpRect);
Parametri
lpRect
Punta alla struttura o CRect
all'oggetto RECT
che specifica le nuove dimensioni del rettangolo di formattazione.
Osservazioni:
Questo membro viene elaborato solo da controlli di modifica a più righe.
Utilizzare SetRect
per impostare il rettangolo di formattazione di un controllo di modifica a più righe. Il rettangolo di formattazione è il rettangolo di limitazione del testo, indipendentemente dalle dimensioni della finestra di controllo di modifica. Quando il controllo di modifica viene creato per la prima volta, il rettangolo di formattazione corrisponde all'area client della finestra di controllo di modifica. Usando la SetRect
funzione membro, un'applicazione può rendere il rettangolo di formattazione più grande o minore della finestra di controllo di modifica.
Se il controllo di modifica non dispone di una barra di scorrimento, il testo verrà ritagliato, non sottoposto a wrapping, se il rettangolo di formattazione è maggiore della finestra. Se il controllo di modifica contiene un bordo, il rettangolo di formattazione viene ridotto in base alle dimensioni del bordo. Se si regola il rettangolo restituito dalla GetRect
funzione membro, è necessario rimuovere le dimensioni del bordo prima di passare il rettangolo a SetRect
.
Quando SetRect
viene chiamato, il testo del controllo di modifica viene riformattato e riprodotto nuovamente.
Per altre informazioni, vedere EM_SETRECT in Windows SDK.
Esempio
// Flag indicating whether to redraw the edit control.
bool fRedraw = TRUE;
CRect r;
m_myEdit.GetRect(&r);
// Reduce the formatting rect of the edit control by
// 10 pixels on each side.
if ((r.Width() > 20) && (r.Height() > 20))
{
r.DeflateRect(10, 10);
if (fRedraw)
m_myEdit.SetRect(&r);
else
m_myEdit.SetRectNP(&r);
}
CEdit::SetRectNP
Chiamare questa funzione per impostare il rettangolo di formattazione di un controllo di modifica a più righe.
void SetRectNP(LPCRECT lpRect);
Parametri
lpRect
Punta a una struttura o CRect
a un RECT
oggetto che specifica le nuove dimensioni del rettangolo.
Osservazioni:
Il rettangolo di formattazione è il rettangolo di limitazione del testo, indipendentemente dalle dimensioni della finestra di controllo di modifica.
SetRectNP
è identico alla SetRect
funzione membro, ad eccezione del fatto che la finestra di controllo di modifica non viene ridisegnata.
Quando il controllo di modifica viene creato per la prima volta, il rettangolo di formattazione corrisponde all'area client della finestra di controllo di modifica. Chiamando la SetRectNP
funzione membro, un'applicazione può rendere il rettangolo di formattazione più grande o minore della finestra di controllo di modifica.
Se il controllo di modifica non dispone di una barra di scorrimento, il testo verrà ritagliato, non sottoposto a wrapping, se il rettangolo di formattazione è maggiore della finestra.
Questo membro viene elaborato solo da controlli di modifica a più righe.
Per altre informazioni, vedere EM_SETRECTNP in Windows SDK.
Esempio
Vedere l'esempio per CEdit::SetRect.
CEdit::SetSel
Chiamare questa funzione per selezionare un intervallo di caratteri in un controllo di modifica.
void SetSel(
DWORD dwSelection,
BOOL bNoScroll = FALSE);
void SetSel(
int nStartChar,
int nEndChar,
BOOL bNoScroll = FALSE);
Parametri
dwSelection
Specifica la posizione iniziale nella parola in ordine basso e nella posizione finale nella parola di ordine elevato. Se la parola di ordine basso è 0 e la parola di ordine elevato è -1, viene selezionato tutto il testo nel controllo di modifica. Se la parola in ordine basso è -1, viene rimossa qualsiasi selezione corrente.
bNoScroll
Indica se il cursore deve essere sottoposto a scorrimento nella visualizzazione. Se FALSE, il cursore viene scorrevole nella visualizzazione. Se TRUE, il cursore non viene scorrevole nella visualizzazione.
nStartChar
Specifica la posizione iniziale. Se nStartChar è 0 e nEndChar è -1, viene selezionato tutto il testo nel controllo di modifica. Se nStartChar è -1, viene rimossa qualsiasi selezione corrente.
nEndChar
Specifica la posizione finale.
Osservazioni:
Per altre informazioni, vedere EM_SETSEL in Windows SDK.
Esempio
Vedere l'esempio per CEdit::GetSel.
CEdit::SetTabStops
Chiamare questa funzione per impostare le tabulazioni in un controllo di modifica a più righe.
void SetTabStops();
BOOL SetTabStops(const int& cxEachStop);
BOOL SetTabStops(
int nTabStops,
LPINT rgTabStops);
Parametri
cxEachStop
Specifica che le tabulazioni devono essere impostate in ogni unità di dialogo cxEachStop .
nTabStops
Specifica il numero di tabulazioni contenute in rgTabStops. Questo numero deve essere maggiore di 1.
rgTabStops
Punta a una matrice di interi senza segno che specificano le tabulazioni nelle unità di dialogo. Un'unità di dialogo è una distanza orizzontale o verticale. Un'unità di dialogo orizzontale è uguale a un quarto dell'unità di larghezza di base del dialogo corrente e 1 unità di dialogo verticale è uguale a un ottavo dell'unità di altezza di base del dialogo corrente. Le unità di base del dialogo vengono calcolate in base all'altezza e alla larghezza del tipo di carattere di sistema corrente. La GetDialogBaseUnits
funzione Windows restituisce le unità di base correnti del dialogo in pixel.
Valore restituito
Diverso da zero se le schede sono state impostate; in caso contrario, 0.
Osservazioni:
Quando il testo viene copiato in un controllo di modifica a più righe, qualsiasi carattere di tabulazione nel testo causerà la generazione dello spazio fino alla tabulazione successiva.
Per impostare tabulazioni sulle dimensioni predefinite di 32 unità di dialogo, chiamare la versione senza parametri di questa funzione membro. Per impostare tabulazioni su dimensioni diverse da 32, chiamare la versione con il parametro cxEachStop . Per impostare tabulazioni su una matrice di dimensioni, usare la versione con due parametri.
Questa funzione membro viene elaborata solo da controlli di modifica a più righe.
SetTabStops
non ridisegna automaticamente la finestra di modifica. Se si modificano le tabulazioni per il testo già nel controllo di modifica, chiamare CWnd::InvalidateRect per ridisegnare la finestra di modifica.
Per altre informazioni, vedere EM_SETTABSTOPS e GetDialogBaseUnits in Windows SDK.
Esempio
Vedere l'esempio per CEditView::SetTabStops.
CEdit::ShowBalloonTip
Visualizza un suggerimento per il fumetto associato al controllo di modifica corrente.
BOOL ShowBalloonTip(PEDITBALLOONTIP pEditBalloonTip);
BOOL ShowBalloonTip(
LPCWSTR lpszTitle,
LPCWSTR lpszText,
INT ttiIcon = TTI_NONE);
Parametri
pEditBalloonTip
[in] Puntatore a una struttura EDITBALLOONTIP che descrive la punta del fumetto.
lpszTitle
[in] Puntatore a una stringa Unicode che contiene il titolo della punta del fumetto.
lpszText
[in] Puntatore a una stringa Unicode che contiene il testo della descrizione del fumetto.
ttiIcon
[in] Valore INT che specifica il tipo di icona da associare alla punta del fumetto. Il valore predefinito è TTI_NONE. Per altre informazioni, vedere il ttiIcon
membro della struttura EDITBALLOONTIP .
Valore restituito
TRUE se questo metodo ha esito positivo; in caso contrario, FALSE.
Osservazioni:
Questa funzione invia il messaggio di EM_SHOWBALLOONTIP , descritto in Windows SDK. Per altre informazioni, vedere la macro Edit_ShowBalloonTip .
Esempio
Il primo esempio di codice definisce una variabile, m_cedit
, usata per accedere al controllo di modifica corrente. Questa variabile viene usata nell'esempio riportato di seguito.
public:
// Variable to access the edit control.
CEdit m_cedit;
Nell'esempio di codice successivo viene visualizzato un suggerimento per un controllo di modifica. Il metodo CEdit::ShowBalloonTip specifica un titolo e un testo di suggerimento per il fumetto.
m_cedit.ShowBalloonTip(
_T("CEdit Balloon Tip"), // title
_T("Here's a tip!"), // text
TTI_INFO);
CEdit::Annulla
Chiamare questa funzione per annullare l'ultima operazione di controllo di modifica.
BOOL Undo();
Valore restituito
Per un controllo di modifica a riga singola, il valore restituito è sempre diverso da zero. Per un controllo di modifica a più righe, il valore restituito è diverso da zero se l'operazione di annullamento ha esito positivo oppure 0 se l'operazione di annullamento ha esito negativo.
Osservazioni:
È anche possibile annullare un'operazione di annullamento. Ad esempio, è possibile ripristinare il testo eliminato con la prima chiamata a Undo
. Finché non è presente alcuna operazione di modifica, è possibile rimuovere di nuovo il testo con una seconda chiamata a Undo
.
Per altre informazioni, vedere EM_UNDO in Windows SDK.
Esempio
// Undo the last operation, if possible.
if (m_myEdit.CanUndo())
m_myEdit.Undo();
Vedi anche
MFC Sample CALCDRIV
CMNCTRL2 di esempio MFC
Classe CWnd
Grafico della gerarchia
Classe CWnd
Classe CButton
Classe CComboBox
Classe CListBox
Classe CScrollBar
Classe CStatic
Classe CDialog