CEditView, classe
Type de classe d'affichage qui fournit les fonctionnalités d'un contrôle d'édition Windows et peut être utilisé pour implémenter des fonctionnalités d'éditeur de texte simples.
Syntaxe
class CEditView : public CCtrlView
Membres
Constructeurs publics
Nom | Description |
---|---|
CEditView ::CEditView | Construit un objet de type CEditView . |
Méthodes publiques
Nom | Description |
---|---|
CEditView ::FindText | Recherche une chaîne dans le texte. |
CEditView ::GetBufferLength | Obtient la longueur de la mémoire tampon de caractères. |
CEditView ::GetEditCtrl | Fournit l’accès à la CEdit partie d’un CEditView objet (contrôle d’édition Windows). |
CEditView ::GetPrinterFont | Récupère la police d’imprimante actuelle. |
CEditView ::GetSelectedText | Récupère la sélection de texte actuelle. |
CEditView ::LockBuffer | Verrouille la mémoire tampon. |
CEditView ::P rintInsideRect | Affiche le texte à l’intérieur d’un rectangle donné. |
CEditView ::SerializeRaw | Sérialise un CEditView objet sur disque sous forme de texte brut. |
CEditView ::SetPrinterFont | Définit une nouvelle police d’imprimante. |
CEditView ::SetTabStops | Définit les taquets de tabulation pour l’affichage de l’écran et l’impression. |
CEditView ::UnlockBuffer | Déverrouille la mémoire tampon. |
Méthodes protégées
Nom | Description |
---|---|
CEditView ::OnFindNext | Recherche l’occurrence suivante d’une chaîne de texte. |
CEditView ::OnReplaceAll | Remplace toutes les occurrences d’une chaîne donnée par une nouvelle chaîne. |
CEditView ::OnReplaceSel | Remplace la sélection actuelle. |
CEditView ::OnTextNotFound | Appelé lorsqu’une opération de recherche ne correspond pas à un texte supplémentaire. |
Membres de données publics
Nom | Description |
---|---|
CEditView ::d wStyleDefault | Style par défaut pour les objets de type CEditView . |
Notes
La CEditView
classe fournit les fonctions supplémentaires suivantes :
Impression.
Recherchez et remplacez.
Étant donné que la classe CEditView
est un dérivé de la classe CView
, les objets de classe CEditView
peuvent être utilisés avec des documents et des modèles de document.
Le texte de chaque CEditView
contrôle est conservé dans son propre objet mémoire globale. Votre application peut avoir n’importe quel nombre d’objets CEditView
.
Créez des objets de type CEditView
si vous souhaitez une fenêtre de modification avec les fonctionnalités ajoutées répertoriées ci-dessus, ou si vous souhaitez une fonctionnalité d’éditeur de texte simple. Un CEditView
objet peut occuper toute la zone cliente d’une fenêtre. Dérivez vos propres classes pour CEditView
ajouter ou modifier les fonctionnalités de base, ou pour déclarer des classes qui peuvent être ajoutées à un modèle de document.
L’implémentation par défaut de la classe CEditView
gère les commandes suivantes : ID_EDIT_SELECT_ALL, ID_EDIT_FIND, ID_EDIT_REPLACE, ID_EDIT_REPEAT et ID_FILE_PRINT.
La limite de caractères par défaut est CEditView
(1024 * 1024 - 1 = 1048575). Cela peut être modifié en appelant la fonction EM_LIMITTEXT du contrôle d’édition sous-jacent. Toutefois, les limites sont différentes en fonction du système d’exploitation et du type de contrôle d’édition (monoligne ou multiligne). Pour plus d’informations sur ces limites, consultez EM_LIMITTEXT.
Pour modifier cette limite dans votre contrôle, remplacez la OnCreate()
fonction de votre CEditView
classe et insérez la ligne de code suivante :
GetEditCtrl().SetLimitText(nNewVal); //nNewVal, the new character limit
Les objets de type CEditView
(ou de types dérivés de CEditView
) présentent les limitations suivantes :
CEditView
n’implémente pas vrai ce que vous voyez est ce que vous obtenez (WYSIWYG) édition. Lorsqu’il existe un choix entre la lisibilité à l’écran et la sortie imprimée correspondante,CEditView
opte pour la lisibilité de l’écran.CEditView
peut afficher du texte dans une seule police. Aucune mise en forme spéciale de caractères n’est prise en charge. Pour plus de fonctionnalités, consultez la classe CRichEditView .La quantité de texte qu’une
CEditView
peut contenir est limitée. Les limites sont les mêmes que pour leCEdit
contrôle.
Pour plus d’informations sur , consultez les classes d’affichage CEditView
dérivées disponibles dans MFC.
Hiérarchie d'héritage
CEditView
Spécifications
En-tête : afxext.h
CEditView ::CEditView
Construit un objet de type CEditView
.
CEditView();
Notes
Après avoir construit l’objet, vous devez appeler la fonction CWnd ::Create avant l’utilisation du contrôle d’édition. Si vous dérivez une classe et CEditView
que vous l’ajoutez au modèle à l’aide CWinApp::AddDocTemplate
de , l’infrastructure appelle à la fois ce constructeur et la Create
fonction.
CEditView ::d wStyleDefault
Contient le style par défaut de l’objet CEditView
.
static const DWORD dwStyleDefault;
Notes
Transmettez ce membre statique en tant que paramètre dwStyle de la Create
fonction pour obtenir le style par défaut de l’objet CEditView
.
CEditView ::FindText
Appelez la fonction pour rechercher la FindText
mémoire tampon de texte de l’objet CEditView
.
BOOL FindText(
LPCTSTR lpszFind,
BOOL bNext = TRUE,
BOOL bCase = TRUE);
Paramètres
lpszFind
Texte à trouver.
bNext
Spécifie la direction de la recherche. Si la valeur est TRUE, la direction de la recherche est vers la fin de la mémoire tampon. Si la valeur est FALSE, la direction de la recherche est vers le début de la mémoire tampon.
bCase
Spécifie si la recherche respecte la casse. Si la valeur est TRUE, la recherche respecte la casse. Si la valeur est FALSE, la recherche n’est pas sensible à la casse.
Valeur de retour
Différent de zéro si le texte de recherche est trouvé ; sinon 0.
Notes
Cette fonction recherche le texte dans la mémoire tampon pour le texte spécifié par lpszFind, en commençant à la sélection actuelle, dans la direction spécifiée par bNext et avec la sensibilité de la casse spécifiée par bCase. Si le texte est trouvé, il définit la sélection sur le texte trouvé et retourne une valeur différente de zéro. Si le texte est introuvable, la fonction retourne 0.
Normalement, vous n’avez pas besoin d’appeler la FindText
fonction, sauf si vous remplacez OnFindNext
, ce qui appelle FindText
.
CEditView ::GetBufferLength
Appelez cette fonction membre pour obtenir le nombre de caractères actuellement présents dans la mémoire tampon du contrôle d’édition, sans inclure le terminateur Null.
UINT GetBufferLength() const;
Valeur de retour
Longueur de la chaîne dans la mémoire tampon.
CEditView ::GetEditCtrl
Appelez-vous GetEditCtrl
pour obtenir une référence au contrôle d’édition utilisé par l’affichage d’édition.
CEdit& GetEditCtrl() const;
Valeur de retour
Référence à un objet CEdit
.
Notes
Ce contrôle est de type CEdit. Vous pouvez donc manipuler le contrôle d’édition Windows directement à l’aide des CEdit
fonctions membres.
Attention
L’utilisation de l’objet CEdit
peut modifier l’état du contrôle d’édition Windows sous-jacent. Par exemple, vous ne devez pas modifier les paramètres d’onglet à l’aide de la fonction CEdit ::SetTabStops , car CEditView
ces paramètres sont mis en cache à utiliser à la fois dans le contrôle d’édition et dans l’impression. Utilisez plutôt CEditView ::SetTabStops.
Exemple
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
Appelez GetPrinterFont
pour obtenir un pointeur vers un objet CFont qui décrit la police d’imprimante actuelle.
CFont* GetPrinterFont() const;
Valeur de retour
Pointeur vers un CFont
objet qui spécifie la police d’imprimante actuelle ; NULL si la police de l’imprimante n’a pas été définie. Le pointeur peut être temporaire et ne doit pas être stocké pour une utilisation ultérieure.
Notes
Si la police de l’imprimante n’a pas été définie, le comportement d’impression par défaut de la CEditView
classe consiste à imprimer à l’aide de la même police utilisée pour l’affichage.
Utilisez cette fonction pour déterminer la police d’imprimante actuelle. S’il ne s’agit pas de la police d’imprimante souhaitée, utilisez CEditView ::SetPrinterFont pour la modifier.
CEditView ::GetSelectedText
Appelez GetSelectedText
pour copier le texte sélectionné dans un CString
objet, jusqu’à la fin de la sélection ou du caractère précédant le premier caractère retour chariot dans la sélection.
void GetSelectedText(CString& strResult) const;
Paramètres
strResult
Référence à l’objet CString
qui doit recevoir le texte sélectionné.
CEditView ::LockBuffer
Appelez cette fonction membre pour obtenir un pointeur vers la mémoire tampon. La mémoire tampon ne doit pas être modifiée.
LPCTSTR LockBuffer() const;
Valeur de retour
Pointeur vers la mémoire tampon du contrôle d’édition.
CEditView ::OnFindNext
Recherche le texte dans la mémoire tampon pour le texte spécifié par lpszFind, dans la direction spécifiée par bNext, avec la sensibilité de la casse spécifiée par bCase.
virtual void OnFindNext(
LPCTSTR lpszFind,
BOOL bNext,
BOOL bCase);
Paramètres
lpszFind
Texte à trouver.
bNext
Spécifie la direction de la recherche. Si la valeur est TRUE, la direction de la recherche est vers la fin de la mémoire tampon. Si la valeur est FALSE, la direction de la recherche est vers le début de la mémoire tampon.
bCase
Spécifie si la recherche respecte la casse. Si la valeur est TRUE, la recherche respecte la casse. Si la valeur est FALSE, la recherche n’est pas sensible à la casse.
Notes
La recherche commence au début de la sélection actuelle et s’effectue via un appel à FindText. Dans l’implémentation par défaut, OnFindNext
appelle OnTextNotFound si le texte est introuvable.
Remplacez OnFindNext
pour modifier la façon dont un CEditView
objet dérivé recherche du texte. CEditView
appelle OnFindNext
lorsque l’utilisateur choisit le bouton Rechercher suivant dans la boîte de dialogue Rechercher standard.
CEditView ::OnReplaceAll
CEditView
appelle OnReplaceAll
lorsque l’utilisateur sélectionne le bouton Remplacer tout dans la boîte de dialogue Remplacer standard.
virtual void OnReplaceAll(
LPCTSTR lpszFind,
LPCTSTR lpszReplace,
BOOL bCase);
Paramètres
lpszFind
Texte à trouver.
lpszReplace
Texte à remplacer par le texte de recherche.
bCase
Spécifie si la recherche respecte la casse. Si la valeur est TRUE, la recherche respecte la casse. Si la valeur est FALSE, la recherche n’est pas sensible à la casse.
Notes
OnReplaceAll
recherche le texte dans la mémoire tampon pour le texte spécifié par lpszFind, avec la sensibilité de la casse spécifiée par bCase. La recherche commence au début de la sélection actuelle. Chaque fois que le texte de recherche est trouvé, cette fonction remplace cette occurrence du texte par le texte spécifié par lpszReplace. La recherche est effectuée via un appel à FindText. Dans l’implémentation par défaut, OnTextNotFound est appelé si le texte est introuvable.
Si la sélection actuelle ne correspond pas à lpszFind, la sélection est mise à jour vers la première occurrence du texte spécifié par lpszFind et un remplacement n’est pas effectué. Cela permet à l’utilisateur de confirmer que c’est ce qu’il souhaite faire lorsque la sélection ne correspond pas au texte à remplacer.
Remplacez OnReplaceAll
pour modifier la façon dont un CEditView
objet dérivé remplace le texte.
CEditView ::OnReplaceSel
CEditView
appelle OnReplaceSel
lorsque l’utilisateur sélectionne le bouton Remplacer dans la boîte de dialogue Remplacer standard.
virtual void OnReplaceSel(
LPCTSTR lpszFind,
BOOL bNext,
BOOL bCase,
LPCTSTR lpszReplace);
Paramètres
lpszFind
Texte à trouver.
bNext
Spécifie la direction de la recherche. Si la valeur est TRUE, la direction de la recherche est vers la fin de la mémoire tampon. Si la valeur est FALSE, la direction de la recherche est vers le début de la mémoire tampon.
bCase
Spécifie si la recherche respecte la casse. Si la valeur est TRUE, la recherche respecte la casse. Si la valeur est FALSE, la recherche n’est pas sensible à la casse.
lpszReplace
Texte à remplacer.
Notes
Après avoir remplacé la sélection, cette fonction recherche le texte dans la mémoire tampon pour la prochaine occurrence du texte spécifié par lpszFind, dans la direction spécifiée par bNext, avec la sensibilité de la casse spécifiée par bCase. La recherche est effectuée via un appel à FindText. Si le texte est introuvable, OnTextNotFound est appelé.
Remplacez OnReplaceSel
la façon dont un CEditView
objet dérivé remplace le texte sélectionné.
CEditView ::OnTextNotFound
Remplacez cette fonction pour modifier l’implémentation par défaut, qui appelle la fonction MessageBeep
Windows.
virtual void OnTextNotFound(LPCTSTR lpszFind);
Paramètres
lpszFind
Texte à trouver.
CEditView ::P rintInsideRect
Appelez PrintInsideRect
le texte à imprimer dans le rectangle spécifié par rectLayout.
UINT PrintInsideRect(
CDC *pDC,
RECT& rectLayout,
UINT nIndexStart,
UINT nIndexStop);
Paramètres
pDC
Pointeur vers le contexte de l’appareil d’imprimante.
rectLayout
Référence à un objet CRect ou à une structure RECT spécifiant le rectangle dans lequel le texte doit être restitué.
nIndexStart
Index dans la mémoire tampon du premier caractère à restituer.
nIndexStop
Index dans la mémoire tampon du caractère suivant le dernier caractère à restituer.
Valeur de retour
Index du caractère suivant à imprimer (c’est-à-dire le caractère suivant le dernier caractère rendu).
Notes
Si le CEditView
contrôle n’a pas le style ES_AUTOHSCROLL, le texte est encapsulé dans le rectangle de rendu. Si le contrôle a le style ES_AUTOHSCROLL, le texte est clippé au bord droit du rectangle.
L’élément rect.bottom
de l’objet rectLayout est modifié afin que les dimensions du rectangle définissent la partie du rectangle d’origine occupée par le texte.
CEditView ::SerializeRaw
Appelez SerializeRaw
pour qu’un CArchive
objet lise ou écrive le texte dans l’objet CEditView
dans un fichier texte.
void SerializeRaw(CArchive& ar);
Paramètres
Ar
Référence à l’objet CArchive
qui stocke le texte sérialisé.
Notes
SerializeRaw
diffère de CEditView
l’implémentation interne de ce qui lui permet de Serialize
lire et d’écrire uniquement le texte, sans données de description d’objet précédentes.
CEditView ::SetPrinterFont
Appelez SetPrinterFont
pour définir la police de l’imprimante sur la police spécifiée par pFont.
void SetPrinterFont(CFont* pFont);
Paramètres
pFont
Pointeur vers un objet de type CFont
. Si la valeur EST NULL, la police utilisée pour l’impression est basée sur la police d’affichage.
Notes
Si vous souhaitez que votre vue utilise toujours une police particulière pour l’impression, incluez un appel à SetPrinterFont
la fonction de OnPreparePrinting
votre classe. Cette fonction virtuelle est appelée avant l’impression, de sorte que la modification de police a lieu avant l’impression du contenu de l’affichage.
CEditView ::SetTabStops
Appelez cette fonction pour définir les taquets de tabulation utilisés pour l’affichage et l’impression.
void SetTabStops(int nTabStops);
Paramètres
nTabStops
Largeur de chaque taquet de tabulation, dans les unités de boîte de dialogue.
Notes
Une seule largeur de taquet de tabulation est prise en charge. ( les CEdit
objets prennent en charge plusieurs largeurs d’onglet.) Les largeurs sont exprimées en unités de dialogue, qui sont égales à un quart de la largeur moyenne des caractères (basées sur les caractères alphabétiques majuscules et minuscules uniquement) de la police utilisée au moment de l’impression ou de l’affichage. Vous ne devez pas utiliser CEdit::SetTabStops
, car CEditView
il faut mettre en cache la valeur de taquet de tabulation.
Cette fonction modifie uniquement les onglets de l’objet pour lequel il est appelé. Pour modifier les taquets de tabulation pour chaque CEditView
objet de votre application, appelez la fonction de SetTabStops
chaque objet.
Exemple
Ce fragment de code définit les taquets de tabulation dans le contrôle sur chaque quatrième caractère en mesurant soigneusement la police utilisée par le contrôle.
// 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
Appelez cette fonction membre pour déverrouiller la mémoire tampon.
void UnlockBuffer() const;
Notes
Appel UnlockBuffer
une fois que vous avez terminé d’utiliser le pointeur retourné par LockBuffer.
Voir aussi
Exemple MFC SUPERPAD
CCtrlView, classe
Graphique hiérarchique
CEdit, classe
CDocument, classe
CDocTemplate, classe
CCtrlView, classe
CRichEditView, classe