Partager via


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 le CEdit contrôle.

Pour plus d’informations sur , consultez les classes d’affichage CEditViewdérivées disponibles dans MFC.

Hiérarchie d'héritage

CObject

CCmdTarget

CWnd

CView

CCtrlView

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::AddDocTemplatede , 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 CEditViewobjet 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 CEditViewobjet 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 CEditViewobjet dérivé remplace le texte sélectionné.

CEditView ::OnTextNotFound

Remplacez cette fonction pour modifier l’implémentation par défaut, qui appelle la fonction MessageBeepWindows.

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 CEditViewl’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