La classe CView
Fournit les fonctionnalités de base des classes de vues définies par l'utilisateur.
class AFX_NOVTABLE CView : public CWnd
Nom | Description |
---|---|
CView::CView |
Construit un objet CView . |
Nom | Description |
---|---|
CView::DoPreparePrinting |
Affiche la boîte de dialogue Imprimer et crée un contexte d’appareil d’imprimante ; appel en cas de substitution de la OnPreparePrinting fonction membre. |
CView::GetDocument |
Retourne le document associé à l’affichage. |
CView::IsSelected |
Teste si un élément de document est sélectionné. Requis pour la prise en charge OLE. |
CView::OnDragEnter |
Appelé lorsqu’un élément est d’abord déplacé dans la région glisser-déplacer d’une vue. |
CView::OnDragLeave |
Appelé lorsqu’un élément déplacé quitte la région glisser-déplacer d’une vue. |
CView::OnDragOver |
Appelé lorsqu’un élément est déplacé sur la région glisser-déplacer d’une vue. |
CView::OnDragScroll |
Appelé pour déterminer si le curseur est déplacé dans la région de défilement de la fenêtre. |
CView::OnDrop |
Appelé lorsqu’un élément a été supprimé dans la région glisser-déplacer d’une vue, gestionnaire par défaut. |
CView::OnDropEx |
Appelé lorsqu’un élément a été supprimé dans la région glisser-déplacer d’une vue, gestionnaire principal. |
CView::OnInitialUpdate |
Appelé après qu’une vue soit d’abord attachée à un document. |
CView::OnPrepareDC |
Appelée avant que la OnDraw fonction membre soit appelée pour l’affichage d’écran ou la fonction membre est appelée pour l’impression ou l’aperçu OnPrint avant impression. |
CView::OnScroll |
Appelé lorsque les éléments OLE sont déplacés au-delà des bordures de la vue. |
CView::OnScrollBy |
Appelé lorsqu’une vue contenant des éléments OLE actifs sur place est défiler. |
Nom | Description |
---|---|
CView::OnActivateFrame |
Appelée lorsque la fenêtre frame contenant la vue est activée ou désactivée. |
CView::OnActivateView |
Appelé lorsqu’une vue est activée. |
CView::OnBeginPrinting |
Appelé lorsqu’un travail d’impression commence ; remplacer pour allouer des ressources GDI (Graphics Device Interface). |
CView::OnDraw |
Appelé pour afficher une image du document pour l’affichage d’écran, l’impression ou l’aperçu avant impression. Implémentation requise. |
CView::OnEndPrinting |
Appelé lorsqu’un travail d’impression se termine ; remplacer pour libérer des ressources GDI. |
CView::OnEndPrintPreview |
Appelé lorsque le mode d’aperçu est arrêté. |
CView::OnPreparePrinting |
Appelé avant l’impression ou l’aperçu d’un document ; remplacer pour initialiser la boîte de dialogue Imprimer. |
CView::OnPrint |
Appelé pour imprimer ou afficher un aperçu d’une page du document. |
CView::OnUpdate |
Appelé pour notifier une vue que son document a été modifié. |
Une vue est attachée à un document et sert d’intermédiaire entre le document et l’utilisateur : l’affichage affiche une image du document à l’écran ou à l’imprimante et interprète l’entrée de l’utilisateur en tant qu’opérations sur le document.
Une vue est un enfant d’une fenêtre frame. Plusieurs vues peuvent partager une fenêtre frame, comme dans le cas d’une fenêtre de fractionnement. La relation entre une classe d’affichage, une classe de fenêtre frame et une classe de document est établie par un CDocTemplate
objet. Lorsque l’utilisateur ouvre une nouvelle fenêtre ou fractionne une fenêtre existante, l’infrastructure construit une nouvelle vue et l’attache au document.
Un affichage ne peut être attaché qu’à un seul document, mais un document peut avoir plusieurs vues attachées simultanément , par exemple, si le document est affiché dans une fenêtre de fractionnement ou dans plusieurs fenêtres enfants dans une application MDI (Multiple Document Interface). Votre application peut prendre en charge différents types de vues pour un type de document donné ; Par exemple, un programme de traitement de texte peut fournir à la fois une vue de texte complète d’un document et une vue hiérarchique qui affiche uniquement les en-têtes de section. Ces différents types de vues peuvent être placés dans des fenêtres frame distinctes ou dans des volets distincts d’une seule fenêtre frame si vous utilisez une fenêtre de fractionnement.
Une vue peut être responsable de la gestion de plusieurs types d’entrée différents, tels que l’entrée clavier, l’entrée de la souris ou l’entrée via glisser-déplacer, ainsi que les commandes des menus, des barres d’outils ou des barres de défilement. Une vue reçoit les commandes transférées par sa fenêtre frame. Si la vue ne gère pas une commande donnée, elle transfère la commande à son document associé. Comme toutes les cibles de commande, une vue gère les messages via une carte de messages.
La vue est chargée d’afficher et de modifier les données du document, mais pas de les stocker. Le document fournit l’affichage avec les détails nécessaires sur ses données. Vous pouvez autoriser l’affichage à accéder directement aux membres de données du document, ou vous pouvez fournir des fonctions membres dans la classe de document pour que la classe d’affichage appelle.
Quand les données d’un document changent, l’affichage responsable des modifications appelle généralement la CDocument::UpdateAllViews
fonction pour le document, ce qui notifie toutes les autres vues en appelant la OnUpdate
fonction membre pour chacun d’eux. L’implémentation par défaut invalide OnUpdate
l’ensemble de la zone cliente de la vue. Vous pouvez le remplacer pour invalider uniquement les régions de la zone cliente qui mappent aux parties modifiées du document.
Pour utiliser CView
, dérivez une classe de celui-ci et implémentez la OnDraw
fonction membre pour effectuer l’affichage de l’écran. Vous pouvez également utiliser OnDraw
pour effectuer l’impression et l’aperçu avant impression. L’infrastructure gère la boucle d’impression pour l’impression et l’aperçu de votre document.
Une vue gère les messages de barre de défilement avec les fonctions membres et CWnd::OnVScroll
les CWnd::OnHScroll
fonctions membres. Vous pouvez implémenter la gestion des messages de barre de défilement dans ces fonctions, ou vous pouvez utiliser la classe CScrollView
dérivée pour gérer le CView
défilement pour vous.
En outre, la bibliothèque de classes Microsoft Foundation fournit neuf autres classes dérivées CScrollView
de CView
:
CCtrlView
, vue qui permet l’utilisation du document : architecture d’affichage avec arborescence, liste et contrôles d’édition enrichis.CDaoRecordView
, vue qui affiche les enregistrements de base de données dans les contrôles de boîte de dialogue.CEditView
, vue qui fournit un éditeur de texte multiligne simple. Vous pouvez utiliser unCEditView
objet comme contrôle dans une boîte de dialogue, ainsi qu’une vue sur un document.CFormView
, vue à défilement qui contient des contrôles de boîte de dialogue et basée sur une ressource de modèle de dialogue.CListView
, vue qui permet l’utilisation du document - afficher l’architecture avec des contrôles de liste.CRecordView
, vue qui affiche les enregistrements de base de données dans les contrôles de boîte de dialogue.CRichEditView
, vue qui permet l’utilisation du document - afficher l’architecture avec des contrôles d’édition enrichis.CScrollView
, vue qui fournit automatiquement la prise en charge du défilement.CTreeView
, vue qui autorise l’utilisation du document : architecture d’affichage avec des contrôles d’arborescence.
La CView
classe a également une classe d’implémentation dérivée nommée CPreviewView
, qui est utilisée par l’infrastructure pour effectuer l’aperçu d’impression. Cette classe prend en charge les fonctionnalités propres à la fenêtre d’aperçu avant impression, comme une barre d’outils, un aperçu simple ou double page et un zoom, c’est-à-dire en agrandissant l’image aperçue. Vous n’avez pas besoin d’appeler ou de remplacer l’une des CPreviewView
fonctions membres, sauf si vous souhaitez implémenter votre propre interface pour l’aperçu avant impression (par exemple, si vous souhaitez prendre en charge la modification en mode Aperçu avant impression). Pour plus d’informations sur l’utilisation CView
, consultez Architecture et impression de document/affichage. En outre, consultez la Note technique 30 pour plus d’informations sur la personnalisation de l’aperçu avant impression.
CView
En-tête : afxwin.h
Construit un objet CView
.
CView();
L’infrastructure appelle le constructeur lorsqu’une nouvelle fenêtre frame est créée ou qu’une fenêtre est fractionnée. Remplacez la OnInitialUpdate
fonction membre pour initialiser la vue une fois le document attaché.
Appelez cette fonction à partir de votre remplacement pour OnPreparePrinting
appeler la boîte de dialogue Imprimer et créer un contexte d’appareil d’imprimante.
BOOL DoPreparePrinting(CPrintInfo* pInfo);
pInfo
Pointe vers une CPrintInfo
structure qui décrit le travail d’impression actuel.
Différent de zéro si l’impression ou l’aperçu avant impression peut commencer ; 0 si l’opération a été annulée.
Le comportement de cette fonction varie selon qu’elle est appelée pour l’impression ou l’aperçu avant impression (spécifié par le m_bPreview
membre du pInfo
paramètre). Si un fichier est imprimé, cette fonction appelle la boîte de dialogue Imprimer, en utilisant les valeurs de la CPrintInfo
structure vers pInfo
laquelle pointe ; une fois que l’utilisateur a fermé la boîte de dialogue, la fonction crée un contexte d’appareil d’imprimante en fonction des paramètres spécifiés dans la boîte de dialogue et retourne ce contexte d’appareil par le biais du pInfo
paramètre. Ce contexte d’appareil est utilisé pour imprimer le document.
Si un fichier est en préversion, cette fonction crée un contexte d’appareil d’imprimante à l’aide des paramètres d’imprimante actuels ; ce contexte d’appareil est utilisé pour simuler l’imprimante pendant la préversion.
Appelez cette fonction pour obtenir un pointeur vers le document de la vue.
CDocument* GetDocument() const;
Pointeur vers l’objet CDocument
associé à la vue. NULL
si l’affichage n’est pas attaché à un document.
Cela vous permet d’appeler les fonctions membres du document.
Appelé par l’infrastructure pour vérifier si l’élément de document spécifié est sélectionné.
virtual BOOL IsSelected(const CObject* pDocItem) const;
pDocItem
Pointe vers l’élément de document testé.
Différent de zéro si l’élément de document spécifié est sélectionné ; sinon 0.
L’implémentation par défaut de cette fonction retourne FALSE
. Remplacez cette fonction si vous implémentez la sélection à l’aide d’objets CDocItem
. Vous devez remplacer cette fonction si votre vue contient des éléments OLE.
Appelé par l’infrastructure lorsque la fenêtre frame contenant la vue est activée ou désactivée.
virtual void OnActivateFrame(
UINT nState,
CFrameWnd* pFrameWnd);
nState
Spécifie si la fenêtre frame est activée ou désactivée. Ce peut être l’une des valeurs suivantes :
WA_INACTIVE
La fenêtre frame est désactivée.WA_ACTIVE
La fenêtre frame est activée par le biais d’une méthode autre qu’un clic de souris (par exemple, à l’aide de l’interface clavier pour sélectionner la fenêtre).WA_CLICKACTIVE
La fenêtre frame est activée par un clic de souris
pFrameWnd
Pointeur vers la fenêtre frame à activer.
Remplacez cette fonction membre si vous souhaitez effectuer un traitement spécial lorsque la fenêtre frame associée à la vue est activée ou désactivée. Par exemple, CFormView
effectue ce remplacement lorsqu’il enregistre et restaure le contrôle qui a le focus.
Appelé par l’infrastructure lorsqu’une vue est activée ou désactivée.
virtual void OnActivateView(
BOOL bActivate,
CView* pActivateView,
CView* pDeactiveView);
bActivate
Indique si la vue est activée ou désactivée.
pActivateView
Pointe vers l’objet d’affichage en cours d’activation.
pDeactiveView
Pointe vers l’objet d’affichage en cours de désactivation.
L’implémentation par défaut de cette fonction définit le focus sur la vue activée. Remplacez cette fonction si vous souhaitez effectuer un traitement spécial lorsqu’une vue est activée ou désactivée. Par exemple, si vous souhaitez fournir des signaux visuels spéciaux qui distinguent l’affichage actif des vues inactives, vous examinez le bActivate
paramètre et mettez à jour l’apparence de la vue en conséquence.
Les pActivateView
paramètres pointent pDeactiveView
vers la même vue si la fenêtre de trame principale de l’application est activée sans modification dans l’affichage actif ( par exemple, si le focus est transféré d’une autre application vers celui-ci, plutôt que d’un affichage à un autre au sein de l’application ou lors du basculement entre les fenêtres enfants MDI. Cela permet à une vue de recréer sa palette, si nécessaire.
Ces paramètres diffèrent quand ils CFrameWnd::SetActiveView
sont appelés avec une vue différente de ce qui CFrameWnd::GetActiveView
retournerait. Cela se produit le plus souvent avec des fenêtres de fractionnement.
Appelé par l’infrastructure au début d’un travail d’impression ou d’aperçu avant impression, après que OnPreparePrinting
a été appelé.
virtual void OnBeginPrinting(
CDC* pDC,
CPrintInfo* pInfo);
pDC
Pointe vers le contexte de l’imprimante.
pInfo
Pointe vers une CPrintInfo
structure qui décrit le travail d’impression actuel.
L’implémentation par défaut de cette fonction est sans effet. Remplacez cette fonction pour allouer des ressources GDI, telles que des stylets ou des polices, nécessaires précisément pour l’impression. Sélectionnez les objets GDI dans le contexte de l’appareil à partir de la OnPrint
fonction membre pour chaque page qui les utilise. Si vous utilisez le même objet d’affichage pour l’affichage et l’impression d’écran, utilisez des variables distinctes pour les ressources GDI nécessaires à chaque affichage ; vous pourrez ainsi mettre à jour l’écran pendant l’impression.
Vous pouvez aussi utiliser cette fonction pour exécuter des initialisations qui dépendent des propriétés du contexte de l’imprimante. Par exemple, le nombre de pages nécessaires à l’impression du document peut dépendre des paramètres que l’utilisateur a spécifiés dans la boîte de dialogue d’impression (comme la longueur de page). Dans ce cas, vous ne pouvez pas spécifier la longueur du document dans la OnPreparePrinting
fonction membre, où vous le feriez normalement ; vous devez attendre que le contexte de l’appareil d’imprimante ait été créé en fonction des paramètres de la boîte de dialogue. OnBeginPrinting
est la première fonction substituable qui vous donne accès à l’objet CDC
représentant le contexte de l’appareil d’imprimante. Vous pouvez donc définir la longueur du document à partir de cette fonction. Notez que si la longueur du document n’est pas spécifiée à ce stade, aucune barre de défilement ne s’affiche pendant l’aperçu avant impression.
Appelé par l’infrastructure lorsque la souris entre d’abord dans la région de non-défilement de la fenêtre cible de déplacement.
virtual DROPEFFECT OnDragEnter(
COleDataObject* pDataObject,
DWORD dwKeyState,
CPoint point);
pDataObject
Pointe vers l’être COleDataObject
déplacé dans la zone de dépôt de la vue.
dwKeyState
Contient l’état des touches de modificateur. Il s’agit d’une combinaison de n’importe quel nombre des éléments suivants : MK_CONTROL
, , MK_SHIFT
MK_ALT
, MK_LBUTTON
, MK_MBUTTON
, et MK_RBUTTON
.
point
Position actuelle de la souris par rapport à la zone cliente de la vue.
Valeur du DROPEFFECT
type énuméré, qui indique le type de suppression qui se produirait si l’utilisateur a supprimé l’objet à cette position. Le type de suppression dépend généralement de l’état de clé actuel indiqué par dwKeyState
. Un mappage standard des états clés aux DROPEFFECT
valeurs est le suivant :
DROPEFFECT_NONE
L’objet de données ne peut pas être supprimé dans cette fenêtre.DROPEFFECT_LINK
pourMK_CONTROL|MK_SHIFT
Créer une liaison entre l’objet et son serveur.DROPEFFECT_COPY
pourMK_CONTROL
Créer une copie de l’objet supprimé.DROPEFFECT_MOVE
pourMK_ALT
Créer une copie de l’objet supprimé et supprimer l’objet d’origine. Il s’agit généralement de l’effet de suppression par défaut, lorsque la vue peut accepter cet objet de données.
Pour plus d’informations, consultez l’exemple OCLIENT
MFC Advanced Concepts .
L’implémentation par défaut consiste à ne rien faire et à retourner DROPEFFECT_NONE
.
Remplacez cette fonction pour préparer les appels futurs à la OnDragOver
fonction membre. Toutes les données requises à partir de l’objet de données doivent être récupérées pour une utilisation ultérieure dans la OnDragOver
fonction membre. La vue doit également être mise à jour pour donner des commentaires visuels à l’utilisateur. Pour plus d’informations, consultez l’article OLE glisser-déplacer : Implémenter une cible de déplacement.
Appelé par l’infrastructure pendant une opération de glissement lorsque la souris est déplacée hors de la zone de déplacement valide pour cette fenêtre.
virtual void OnDragLeave();
Remplacez cette fonction si l’affichage actuel doit nettoyer toutes les actions effectuées pendant OnDragEnter
ou OnDragOver
appels, telles que la suppression de commentaires utilisateur visuels pendant que l’objet a été déplacé et supprimé.
Appelé par l’infrastructure pendant une opération de glissement lorsque la souris est déplacée sur la fenêtre cible de déplacement.
virtual DROPEFFECT OnDragOver(
COleDataObject* pDataObject,
DWORD dwKeyState,
CPoint point);
pDataObject
Pointe vers l’être COleDataObject
déplacé sur la cible de déplacement.
dwKeyState
Contient l’état des touches de modificateur. Il s’agit d’une combinaison de n’importe quel nombre des éléments suivants : MK_CONTROL
, , MK_SHIFT
MK_ALT
, MK_LBUTTON
, MK_MBUTTON
, et MK_RBUTTON
.
point
Position actuelle de la souris par rapport à la zone cliente d’affichage.
Valeur du DROPEFFECT
type énuméré, qui indique le type de suppression qui se produirait si l’utilisateur a supprimé l’objet à cette position. Le type de suppression dépend souvent de l’état de clé actuel, comme indiqué par dwKeyState
. Un mappage standard des états clés aux DROPEFFECT
valeurs est le suivant :
DROPEFFECT_NONE
L’objet de données ne peut pas être supprimé dans cette fenêtre.DROPEFFECT_LINK
pourMK_CONTROL|MK_SHIFT
Créer une liaison entre l’objet et son serveur.DROPEFFECT_COPY
pourMK_CONTROL
Créer une copie de l’objet supprimé.DROPEFFECT_MOVE
pourMK_ALT
Créer une copie de l’objet supprimé et supprimer l’objet d’origine. Il s’agit généralement de l’effet de suppression par défaut, lorsque la vue peut accepter l’objet de données.
Pour plus d’informations, consultez l’exemple OCLIENT
MFC Advanced Concepts .
L’implémentation par défaut consiste à ne rien faire et à retourner DROPEFFECT_NONE
.
Remplacez cette fonction pour donner des commentaires visuels à l’utilisateur pendant l’opération de glissement. Étant donné que cette fonction est appelée en continu, tout code contenu dans celui-ci doit être optimisé autant que possible. Pour plus d’informations, consultez l’article OLE glisser-déplacer : Implémenter une cible de déplacement.
Appelé par l’infrastructure avant d’appeler OnDragEnter
ou OnDragOver
pour déterminer si le point se trouve dans la région de défilement.
virtual DROPEFFECT OnDragScroll(
DWORD dwKeyState,
CPoint point);
dwKeyState
Contient l’état des touches de modificateur. Il s’agit d’une combinaison de n’importe quel nombre des éléments suivants : MK_CONTROL
, , MK_SHIFT
MK_ALT
, MK_LBUTTON
, MK_MBUTTON
, et MK_RBUTTON
.
point
Contient l’emplacement du curseur, en pixels, par rapport à l’écran.
Valeur du DROPEFFECT
type énuméré, qui indique le type de suppression qui se produirait si l’utilisateur a supprimé l’objet à cette position. Le type de suppression dépend généralement de l’état de clé actuel indiqué par dwKeyState
. Un mappage standard des états clés aux DROPEFFECT
valeurs est le suivant :
DROPEFFECT_NONE
L’objet de données ne peut pas être supprimé dans cette fenêtre.DROPEFFECT_LINK
pourMK_CONTROL|MK_SHIFT
Créer une liaison entre l’objet et son serveur.DROPEFFECT_COPY
pourMK_CONTROL
Créer une copie de l’objet supprimé.DROPEFFECT_MOVE
pourMK_ALT
Créer une copie de l’objet supprimé et supprimer l’objet d’origine.DROPEFFECT_SCROLL
Indique qu’une opération de défilement glisser est sur le point de se produire ou se produit dans la vue cible.
Pour plus d’informations, consultez l’exemple OCLIENT
MFC Advanced Concepts .
Remplacez cette fonction lorsque vous souhaitez fournir un comportement spécial pour cet événement. L’implémentation par défaut fait défiler automatiquement les fenêtres lorsque le curseur est déplacé vers la région de défilement par défaut à l’intérieur de la bordure de chaque fenêtre. Pour plus d’informations, consultez l’article OLE glisser-déplacer : Implémenter une cible de déplacement.
Appelé par l’infrastructure pour afficher une image du document.
virtual void OnDraw(CDC* pDC) = 0;
pDC
Pointe vers le contexte de l’appareil à utiliser pour le rendu d’une image du document.
L’infrastructure appelle cette fonction pour effectuer l’affichage d’écran, l’impression et l’aperçu avant impression, et il transmet un contexte d’appareil différent dans chaque cas. Il n'y a pas d'implémentation par défaut.
Vous devez remplacer cette fonction pour afficher votre affichage du document. Vous pouvez effectuer des appels d’interface d’appareil graphique (GDI) à l’aide de l’objet CDC
pointé par le pDC
paramètre. Vous pouvez sélectionner des ressources GDI, telles que des stylets ou des polices, dans le contexte de l’appareil avant de dessiner, puis les désélectionner ensuite. Souvent, votre code de dessin peut être indépendant de l’appareil ; autrement dit, il ne nécessite pas d’informations sur le type d’appareil qui affiche l’image.
Pour optimiser le dessin, appelez la RectVisible
fonction membre du contexte de l’appareil pour déterminer si un rectangle donné sera dessiné. Si vous devez faire la distinction entre l’affichage d’écran normal et l’impression, appelez la IsPrinting
fonction membre du contexte de l’appareil.
Appelé par l’infrastructure lorsque l’utilisateur libère un objet de données sur une cible de déplacement valide.
virtual BOOL OnDrop(
COleDataObject* pDataObject,
DROPEFFECT dropEffect,
CPoint point);
pDataObject
Pointe vers la COleDataObject
cible de suppression.
dropEffect
Effet de suppression demandé par l’utilisateur.
DROPEFFECT_COPY
Crée une copie de l’objet de données supprimé.DROPEFFECT_MOVE
Déplace l’objet de données vers l’emplacement actuel de la souris.DROPEFFECT_LINK
Crée un lien entre un objet de données et son serveur.
point
Position actuelle de la souris par rapport à la zone cliente d’affichage.
Différent de zéro si la baisse a réussi ; sinon 0.
L’implémentation par défaut ne fait rien et retourne FALSE
.
Remplacez cette fonction pour implémenter l’effet d’une suppression OLE dans la zone cliente de la vue. L’objet de données peut être examiné par le biais pDataObject
des formats de données du Presse-papiers et des données supprimées au point spécifié.
Notes
L’infrastructure n’appelle pas cette fonction s’il existe un remplacement dans OnDropEx
cette classe d’affichage.
Appelé par l’infrastructure lorsque l’utilisateur libère un objet de données sur une cible de déplacement valide.
virtual DROPEFFECT OnDropEx(
COleDataObject* pDataObject,
DROPEFFECT dropDefault,
DROPEFFECT dropList,
CPoint point);
pDataObject
Pointe vers la COleDataObject
cible de suppression.
dropDefault
Effet que l’utilisateur a choisi pour l’opération de suppression par défaut en fonction de l’état actuel de la clé. Ce peut être DROPEFFECT_NONE
. Les effets de suppression sont abordés dans la section Remarques.
dropList
Liste des effets de suppression pris en charge par la source de suppression. Les valeurs d’effet de suppression peuvent être combinées à l’aide de l’opération OR ( |
) au niveau du bit. Les effets de suppression sont abordés dans la section Remarques.
point
Position actuelle de la souris par rapport à la zone cliente d’affichage.
Effet de suppression résultant de la tentative de suppression à l’emplacement spécifié par point
. Il doit s’agir de l’une des valeurs indiquées par dropEffectList
. Les effets de suppression sont abordés dans la section Remarques.
L’implémentation par défaut consiste à ne rien faire et à retourner une valeur factice (-1) pour indiquer que l’infrastructure doit appeler le OnDrop
gestionnaire.
Remplacez cette fonction pour implémenter l’effet d’un glisser-déplacer vers le bouton droit de la souris. Le glisser-déplacer à droite affiche généralement un menu de choix lorsque le bouton droit de la souris est libéré.
Votre remplacement OnDropEx
doit interroger le bouton droit de la souris. Vous pouvez appeler GetKeyState
ou stocker l’état du bouton droit à partir de votre OnDragEnter
gestionnaire.
Si le bouton droit de la souris est enfoncé, votre remplacement doit afficher un menu contextuel qui offre la prise en charge des effets de liste déroulante par la source de liste déroulante.
Examinez
dropList
pour déterminer les effets de suppression pris en charge par la source de suppression. Activez uniquement ces actions dans le menu contextuel.Permet
SetMenuDefaultItem
de définir l’action par défaut en fonctiondropDefault
de .Enfin, effectuez l’action indiquée par la sélection de l’utilisateur dans le menu contextuel.
Si le bouton droit de la souris n’est pas enfoncé, votre remplacement doit traiter cette opération en tant que demande de liste déroulante standard. Utilisez l’effet de suppression spécifié dans
dropDefault
. Vous pouvez également renvoyer la valeur factice (-1) pour indiquer queOnDrop
cette opération de suppression sera gérée.
Permet pDataObject
d’examiner le COleDataObject
format de données du Presse-papiers et les données supprimées au point spécifié.
Les effets de suppression décrivent l’action associée à une opération de suppression. Consultez la liste suivante des effets de suppression :
DROPEFFECT_NONE
Une baisse n’est pas autorisée.DROPEFFECT_COPY
Une opération de copie est effectuée.DROPEFFECT_MOVE
Une opération de déplacement est effectuée.DROPEFFECT_LINK
Un lien des données supprimées vers les données d’origine est établi.DROPEFFECT_SCROLL
Indique qu’une opération de défilement glisser est sur le point de se produire ou se produit dans la cible.
Pour plus d’informations sur la définition de la commande de menu par défaut, consultez SetMenuDefaultItem
le Kit de développement logiciel (SDK) Windows et CMenu::GetSafeHmenu
ce volume.
Appelé par l’infrastructure après l’impression ou l’aperçu d’un document.
virtual void OnEndPrinting(
CDC* pDC,
CPrintInfo* pInfo);
pDC
Pointe vers le contexte de l’imprimante.
pInfo
Pointe vers une CPrintInfo
structure qui décrit le travail d’impression actuel.
L’implémentation par défaut de cette fonction est sans effet. Remplacez cette fonction pour libérer les ressources GDI que vous avez allouées dans la OnBeginPrinting
fonction membre.
Appelé par l’infrastructure lorsque l’utilisateur quitte le mode aperçu avant impression.
virtual void OnEndPrintPreview(
CDC* pDC,
CPrintInfo* pInfo,
POINT point,
CPreviewView* pView);
pDC
Pointe vers le contexte de l’imprimante.
pInfo
Pointe vers une CPrintInfo
structure qui décrit le travail d’impression actuel.
point
Spécifie le point de la page qui a été affichée pour la dernière fois en mode aperçu.
pView
Pointe vers l’objet d’affichage utilisé pour l’aperçu.
L’implémentation par défaut de cette fonction appelle la OnEndPrinting
fonction membre et restaure la fenêtre cadre principale à l’état dans lequel elle se trouvait avant le début de l’aperçu avant le début de l’aperçu avant le début de l’impression. Remplacez cette fonction pour effectuer un traitement spécial lorsque le mode d’aperçu est arrêté. Par exemple, si vous souhaitez conserver la position de l’utilisateur dans le document lors du passage du mode d’aperçu au mode d’affichage normal, vous pouvez faire défiler jusqu’à la position décrite par le point
paramètre et le m_nCurPage
membre de la CPrintInfo
structure vers laquelle pointe le pInfo
paramètre.
Appelez toujours la version de classe de base de OnEndPrintPreview
votre remplacement, généralement à la fin de la fonction.
Appelé par l’infrastructure après que la vue est d’abord attachée au document, mais avant l’affichage initialement affiché.
virtual void OnInitialUpdate();
L’implémentation par défaut de cette fonction appelle la OnUpdate
fonction membre sans informations d’indicateur (autrement dit, en utilisant les valeurs par défaut 0 pour le lHint
paramètre et NULL
pour le pHint
paramètre). Remplacez cette fonction pour effectuer une initialisation ponctuelle qui nécessite des informations sur le document. Par exemple, si votre application a des documents de taille fixe, vous pouvez utiliser cette fonction pour initialiser les limites de défilement d’une vue en fonction de la taille du document. Si votre application prend en charge les documents de taille variable, utilisez OnUpdate
cette option pour mettre à jour les limites de défilement chaque fois que le document change.
Appelé par l’infrastructure avant que la OnDraw
fonction membre soit appelée pour l’affichage d’écran et avant que la fonction membre soit appelée pour chaque page lors de l’impression ou de l’aperçu OnPrint
avant impression.
virtual void OnPrepareDC(
CDC* pDC,
CPrintInfo* pInfo = NULL);
pDC
Pointe vers le contexte de l’appareil à utiliser pour le rendu d’une image du document.
pInfo
Pointe vers une CPrintInfo
structure qui décrit le travail d’impression actuel si OnPrepareDC
elle est appelée pour l’impression ou l’aperçu avant impression ; le m_nCurPage
membre spécifie la page sur le point d’être imprimée. Ce paramètre est NULL
appelé OnPrepareDC
pour l’affichage de l’écran.
L’implémentation par défaut de cette fonction ne fait rien si la fonction est appelée pour l’affichage de l’écran. Toutefois, cette fonction est substituée dans les classes dérivées, telles que CScrollView
, pour ajuster les attributs du contexte de l’appareil ; par conséquent, vous devez toujours appeler l’implémentation de la classe de base au début de votre remplacement.
Si la fonction est appelée pour l’impression, l’implémentation par défaut examine les informations de page stockées dans le pInfo
paramètre. Si la longueur du document n’a pas été spécifiée, OnPrepareDC
suppose que le document doit être long d’une page et arrête la boucle d’impression une fois qu’une page a été imprimée. La fonction arrête la boucle d’impression en définissant le m_bContinuePrinting
membre de la structure FALSE
sur .
Remplacez OnPrepareDC
l’une des raisons suivantes :
Pour ajuster les attributs du contexte de l’appareil en fonction des besoins de la page spécifiée. Par exemple, si vous devez définir le mode de mappage ou d’autres caractéristiques du contexte de l’appareil, procédez ainsi dans cette fonction.
Pour effectuer la pagination au moment de l’impression. Normalement, vous spécifiez la longueur du document lors de l’impression, à l’aide de la
OnPreparePrinting
fonction membre. Toutefois, si vous ne savez pas à l’avance combien de temps le document est (par exemple, lors de l’impression d’un nombre indéterminé d’enregistrements d’une base de données), remplacez-leOnPrepareDC
pour tester la fin du document pendant son impression. Lorsqu’il n’y a plus de document à imprimer, définissez lem_bContinuePrinting
membre de laCPrintInfo
structureFALSE
sur .Pour envoyer des codes d’échappement à l’imprimante sur une base de page par page. Pour envoyer des codes d’échappement à partir de
OnPrepareDC
, appelez laEscape
fonction membre dupDC
paramètre.
Appelez la version de classe de base du OnPrepareDC
début de votre remplacement.
void CMyView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
CView::OnPrepareDC(pDC, pInfo);
// If we are printing, set the mapmode and the window
// extent properly, then set viewport extent. Use the
// SetViewportOrg member function in the CDC class to
// move the viewport origin to the center of the view.
if (pDC->IsPrinting()) // Is the DC a printer DC.
{
CRect rect;
GetClientRect(&rect);
pDC->SetMapMode(MM_ISOTROPIC);
CSize ptOldWinExt = pDC->SetWindowExt(1000, 1000);
ASSERT(ptOldWinExt.cx != 0 && ptOldWinExt.cy != 0);
CSize ptOldViewportExt = pDC->SetViewportExt(rect.Width(), -rect.Height());
ASSERT(ptOldViewportExt.cx != 0 && ptOldViewportExt.cy != 0);
CPoint ptOldOrigin = pDC->SetViewportOrg(rect.Width() / 2, rect.Height() / 2);
}
}
Appelé par l’infrastructure avant l’impression ou l’aperçu d’un document.
virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
pInfo
Pointe vers une CPrintInfo
structure qui décrit le travail d’impression actuel.
Non zéro pour commencer l’impression ; 0 si le travail d’impression a été annulé.
L'implémentation par défaut n'exécute aucune opération.
Vous devez remplacer cette fonction pour activer l’impression et l’aperçu avant impression. Appelez la DoPreparePrinting
fonction membre, en lui transmettant le pInfo
paramètre, puis retournez sa valeur de retour ; DoPreparePrinting
affiche la boîte de dialogue Imprimer et crée un contexte d’appareil d’imprimante. Si vous souhaitez initialiser la boîte de dialogue Imprimer avec des valeurs autres que les valeurs par défaut, affectez des valeurs aux membres de pInfo
. Par exemple, si vous connaissez la longueur du document, passez la valeur à la fonction membre SetMaxPage avant pInfo
d’appeler DoPreparePrinting
. Cette valeur est affichée dans la zone À : dans la partie Plage de la boîte de dialogue Imprimer.
DoPreparePrinting
n’affiche pas la boîte de dialogue Imprimer pour un travail d’aperçu. Si vous souhaitez contourner la boîte de dialogue Imprimer pour un travail d’impression, vérifiez que le m_bPreview
membre d’est pInfo
FALSE
, puis définissez-le TRUE
avant de le transmettre DoPreparePrinting
; réinitialisez-le FALSE
ensuite.
Si vous devez effectuer des initialisations qui nécessitent l’accès à l’objet CDC
représentant le contexte de l’appareil d’imprimante (par exemple, si vous devez connaître la taille de page avant de spécifier la longueur du document), remplacez la OnBeginPrinting
fonction membre.
Si vous souhaitez définir la valeur du ou des m_nNumPreviewPages
membres du pInfo
paramètre, procédez ainsi après l’appel DoPreparePrinting
.m_strPageDesc
La DoPreparePrinting
fonction membre définit m_nNumPreviewPages
la valeur trouvée dans le fichier de l’application. Fichier INI et définit m_strPageDesc
sa valeur par défaut.
Remplacez OnPreparePrinting
et appelez DoPreparePrinting
le remplacement afin que l’infrastructure affiche une boîte de dialogue Imprimer et crée un contrôleur de domaine d’imprimante pour vous.
BOOL CMyEditView::OnPreparePrinting(CPrintInfo* pInfo)
{
return CEditView::DoPreparePrinting(pInfo);
}
Si vous connaissez le nombre de pages contenues dans le document, définissez la page maximale avant OnPreparePrinting
d’appeler DoPreparePrinting
. L’infrastructure affiche le numéro de page maximal dans la zone « à » de la boîte de dialogue Imprimer.
BOOL CExampleView::OnPreparePrinting(CPrintInfo* pInfo)
{
//The document has 2 pages.
pInfo->SetMaxPage(2);
return CView::DoPreparePrinting(pInfo);
}
Appelé par l’infrastructure pour imprimer ou afficher un aperçu d’une page du document.
virtual void OnPrint(
CDC* pDC,
CPrintInfo* pInfo);
pDC
Pointe vers le contexte de l’imprimante.
pInfo
Pointe vers une CPrintInfo
structure qui décrit le travail d’impression actuel.
Pour chaque page imprimée, l’infrastructure appelle cette fonction immédiatement après l’appel de la OnPrepareDC
fonction membre. La page en cours d’impression est spécifiée par le m_nCurPage
membre de la CPrintInfo
structure qui pInfo
pointe vers. L’implémentation par défaut appelle la OnDraw
fonction membre et la transmet au contexte de l’appareil d’imprimante.
Remplacez cette fonction pour l’une des raisons suivantes :
Pour autoriser l’impression de documents multipage. Affiche uniquement la partie du document qui correspond à la page en cours d’impression. Si vous utilisez
OnDraw
pour effectuer le rendu, vous pouvez ajuster l’origine de la fenêtre d’affichage afin que seule la partie appropriée du document soit imprimée.Pour que l’image imprimée soit différente de l’image d’écran (autrement dit, si votre application n’est pas WYSIWYG). Au lieu de passer le contexte de l’appareil d’imprimante à
OnDraw
, utilisez le contexte de l’appareil pour afficher une image à l’aide d’attributs non affichés à l’écran.Si vous avez besoin de ressources GDI pour l’impression que vous n’utilisez pas pour l’affichage de l’écran, sélectionnez-les dans le contexte de l’appareil avant de les dessiner et de les désélectionner par la suite. Ces ressources GDI doivent être allouées dans
OnBeginPrinting
et publiées dansOnEndPrinting
.Pour implémenter des en-têtes ou des pieds de page. Vous pouvez toujours utiliser
OnDraw
pour effectuer le rendu en limitant la zone sur laquelle elle peut s’imprimer.
Notez que le m_rectDraw
membre du pInfo
paramètre décrit la zone imprimable de la page en unités logiques.
N’appelez OnPrepareDC
pas votre remplacement OnPrint
; le framework appelle OnPrepareDC
automatiquement avant d’appeler OnPrint
.
Voici un squelette pour une fonction substituée OnPrint
:
void CMyView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
UNREFERENCED_PARAMETER(pInfo);
// Print headers and/or footers, if desired.
// Find portion of document corresponding to pInfo->m_nCurPage.
OnDraw(pDC);
}
Pour obtenir un autre exemple, consultez CRichEditView::PrintInsideRect
.
Appelé par l’infrastructure pour déterminer si le défilement est possible.
virtual BOOL OnScroll(
UINT nScrollCode,
UINT nPos,
BOOL bDoScroll = TRUE);
nScrollCode
Code de barre de défilement qui indique la demande de défilement de l’utilisateur. Ce paramètre se compose de deux parties : un octet de bas ordre, qui détermine le type de défilement se produisant horizontalement et un octet de classement élevé, qui détermine le type de défilement se produisant verticalement :
SB_BOTTOM
Fait défiler vers le bas.SB_LINEDOWN
Fait défiler une ligne vers le bas.SB_LINEUP
Fait défiler une ligne vers le haut.SB_PAGEDOWN
Fait défiler une page vers le bas.SB_PAGEUP
Fait défiler une page vers le haut.SB_THUMBTRACK
Fait glisser la zone de défilement vers la position spécifiée. La position actuelle est spécifiée dansnPos
.SB_TOP
Fait défiler vers le haut.
nPos
Contient la position actuelle de la zone de défilement si le code de barre de défilement est SB_THUMBTRACK
; sinon, il n’est pas utilisé. Selon la plage de défilement initiale, nPos
peut être négative et doit être castée en cas int
de besoin.
bDoScroll
Détermine si vous devez réellement effectuer l’action de défilement spécifiée. Si TRUE
, le défilement doit avoir lieu ; si FALSE
, le défilement ne doit pas se produire.
Si bDoScroll
c’est TRUE
le cas et que la vue a été réellement défilement, retournez un non-zéro ; sinon, 0. Si bDoScroll
c’est FALSE
le cas, retournez la valeur que vous auriez retournée si bDoScroll
c’était TRUE
, même si vous n’effectuez pas réellement le défilement.
Dans un cas, cette fonction est appelée par l’infrastructure avec bDoScroll
la valeur définie TRUE
lorsque la vue reçoit un message de barre de défilement. Dans ce cas, vous devez faire défiler l’affichage. Dans l’autre cas, cette fonction est appelée avec bDoScroll
la valeur définie FALSE
lorsqu’un élément OLE est initialement déplacé dans la région de défilement automatique d’une cible de déplacement avant que le défilement ne se produise réellement. Dans ce cas, vous ne devez pas faire défiler l’affichage.
Appelé par l’infrastructure lorsque l’utilisateur affiche une zone au-delà de la vue actuelle du document, en faisant glisser un élément OLE sur les bordures actuelles de la vue ou en manipulant les barres de défilement verticales ou horizontales.
virtual BOOL OnScrollBy(
CSize sizeScroll,
BOOL bDoScroll = TRUE);
sizeScroll
Nombre de pixels défiler horizontalement et verticalement.
bDoScroll
Détermine si le défilement de la vue se produit. Si TRUE
, le défilement a lieu ; si FALSE
, le défilement ne se produit pas.
Différent de zéro si la vue a pu faire défiler ; sinon 0.
Dans les classes dérivées, cette méthode vérifie si la vue est défilante dans la direction demandée par l’utilisateur, puis met à jour la nouvelle région si nécessaire. Cette fonction est automatiquement appelée CWnd::OnHScroll
et CWnd::OnVScroll
effectue la demande de défilement réelle.
L’implémentation par défaut de cette méthode ne modifie pas la vue, mais si elle n’est pas appelée, la vue ne fait pas défiler dans une CScrollView
classe dérivée.
Si la largeur ou la hauteur du document dépasse 32767 pixels, le défilement passé à 32767 échoue, car OnScrollBy
il est appelé avec un argument non valide sizeScroll
.
Appelé par l’infrastructure après la modification du document de l’affichage ; cette fonction est appelée par CDocument::UpdateAllViews
et permet à la vue de mettre à jour son affichage pour refléter ces modifications.
virtual void OnUpdate(
CView* pSender,
LPARAM lHint,
CObject* pHint);
pSender
Pointe vers la vue qui a modifié le document ou NULL
si toutes les vues doivent être mises à jour.
lHint
Contient des informations sur les modifications.
pHint
Pointe vers un objet stockant des informations sur les modifications.
Elle est également appelée par l’implémentation par défaut de OnInitialUpdate
. L’implémentation par défaut invalide l’ensemble de la zone cliente, le marquant pour la peinture lorsque le message suivant WM_PAINT
est reçu. Remplacez cette fonction si vous souhaitez mettre à jour uniquement les régions qui correspondent aux parties modifiées du document. Pour ce faire, vous devez transmettre des informations sur les modifications à l’aide des paramètres d’indicateur.
Pour utiliser lHint
, définissez des valeurs d’indicateur spéciales, généralement un masque de bits ou un type énuméré, et que le document passe l’une de ces valeurs. Pour utiliser pHint
, dérivez une classe d’indicateur à partir du CObject
document et faites passer un pointeur à un objet hint ; en cas de OnUpdate
substitution , utilisez la CObject::IsKindOf
fonction membre pour déterminer le type d’exécution de l’objet hint.
En règle générale, vous ne devez pas effectuer de dessin directement à partir de OnUpdate
. Au lieu de cela, déterminez le rectangle décrivant, dans les coordonnées de l’appareil, la zone qui nécessite la mise à jour ; passez ce rectangle à CWnd::InvalidateRect
. Cela provoque la peinture lors de la prochaine réception d’un WM_PAINT
message.
Si lHint
la valeur est 0 et pHint
est NULL
, le document a envoyé une notification de mise à jour générique. Si une vue reçoit une notification de mise à jour générique ou si elle ne peut pas décoder les indicateurs, elle doit invalider toute sa zone cliente.
Exemple MFC MDIDOCVW
CWnd
Classe
Graphique hiérarchique
CWnd
Classe
CFrameWnd
Classe
CSplitterWnd
Classe
CDC
Classe
CDocTemplate
Classe
CDocument
Classe