Partager via


SUPERPAD, exemple : illustre un serveur d'édition visuelle qui modifie du texte à l'aide de CEditView

Mise à jour : novembre 2007

L'exemple SUPERPAD montre comment utiliser la classe CEditView en association avec la prise en charge du serveur d'édition visuelle.

Note de sécurité :

Cet exemple de code est fourni pour illustrer un concept et ne doit pas être utilisé dans des applications ou des sites Web, car il peut ne pas illustrer les pratiques de programmation les plus sûres. Microsoft n'assume aucune responsabilité pour tout dommage indirect ou consécutif en cas d'utilisation de l'exemple de code à des fins autres que celles prévues.

Pour obtenir des exemples et des instructions d'installation :

  • Dans le menu ? (Aide) de Visual Studio, cliquez sur Exemples.

    Pour plus d'informations, consultez Recherche des fichiers d'exemple.

  • La liste la plus récente et la plus complète d'exemples est disponible en ligne à partir de la page Visual Studio 2008 Samples.

  • Des exemples sont également disponibles sur le disque dur de votre ordinateur. Des exemples et un fichier Readme sont stockés par défaut dans un dossier sous \Program Files\Visual Studio 9.0\Samples\. Pour les éditions Express de Visual Studio, tous les exemples sont disponibles en ligne.

Génération et exécution de l'exemple

Pour générer et exécuter l'exemple SUPERPAD

  1. Ouvrez la solution superpad.sln.

  2. Dans le menu Générer, cliquez sur Générer.

  3. Pour utiliser SUPERPAD en tant que serveur d'édition visuelle, exécutez-le une fois en tant qu'application autonome pour lui permettre de s'inscrire dans le système.

    La première fois que vous exécutez SUPERPAD, il affiche une fenêtre de démarrage ressemblant une boîte de dialogue À propos de. Cette boîte de dialogue ne reste que peu de temps à l'écran et disparaît après un délai donné. Pour fermer la fenêtre de démarrage, appuyez sur n'importe quelle touche ou cliquez.

    D'une exécution à l'autre, SUPERPAD garde en mémoire la position de sa fenêtre. Il se rappelle également si la fenêtre de document a été agrandie dans la fenêtre frame MDI.

Fonctionnalités SUPERPAD supplémentaires

SUPERPAD illustre des utilisations avancées de CEditView via la dérivation de classe, y compris l'activation/désactivation du retour automatique à la ligne du contrôle d'édition et le changement de la police écran et d'imprimante. SUPERPAD illustre également de nombreuses techniques de programmation MFC différentes :

  • affichage de l'utilisation des ressources système dans la boîte de dialogue À propos de ;

  • affichage de la fenêtre de démarrage lors du premier démarrage de l'application ;

  • positionnement persistant des fenêtres grâce au stockage des informations relatives à la position des fenêtres dans un fichier .ini privé ;

  • traitement des boucles inactives ;

  • utilisation d'un curseur d'attente ;

  • sous-classement d'une fenêtre ;

  • ajout d'en-têtes et de pieds de page pendant l'impression ;

  • insertion de sauts de page pendant l'impression ;

  • le démarrage de l'aperçu avant impression à l'endroit de la sélection actuelle dans le document ;

  • à partir de l'aperçu avant impression, le retour au même emplacement dans le document.

  • boîte de dialogue des polices standard (CFontDialog).

Le menu File contient des commandes standard — New, Open, Close, Save, Save As, Print, Print Preview, Print Setup, la liste des derniers fichiers utilisés et Exit.

Le menu File propose également une option Page Setup que vous pouvez utiliser pour spécifier un en-tête et/ou un bas de page spécifique à chaque page. Laissez vide l'en-tête ou le bas de page si vous n'en voulez pas. L'en-tête et le bas de page peuvent accueillir n'importe quel texte. Vous pouvez également spécifier l'un des codes de mise en forme suivants :

  • &f pour le nom du fichier ;

  • &p pour le numéro de page ;

  • n'importe quel code de mise en forme défini pour la fonction strftime runtime C. Par exemple : %a pour le nom abrégé du jour de la semaine, %B pour le nom complet du mois, %d pour le jour du mois et %Y pour l'année et le siècle. Ces options de mise en forme ne sont pas disponibles si vous liez SUPERPAD à la version DLL de MFC, car strftime n'est pas disponible dans une DLL.

SUPERPAD offre les commandes de menu Edit suivantes, lesquelles sont gérées par défaut par CEditView : Cut, Copy, Page, Delete, Find. Find Next, Replace, Select All et Undo. Le menu Edit propose également une commande Word Wrap permettant d'activer ou de désactiver le retour automatique à la ligne.

Le menu View contient les commandes suivantes, qui appliquent diverses fonctionnalités de CEditView :

  • Set Tab Stops — entrez un seul entier dans la boîte de dialogue pour obtenir des taquets de tabulation régulièrement espacés.

  • Set Font — spécifiez la police à utiliser pour l'affichage du fichier.

  • Set Printer Font — spécifiez la police à utiliser pour l'impression.

  • Mirror Display Font — activez cet état (bascule) si vous souhaitez désélectionner temporairement la police d'imprimante actuellement spécifiée et utiliser à la place la police d'imprimante la plus proche possible de la police écran.

Classes de SUPERPAD

SUPERPAD dérive sa classe d'affichage CPadView de CEditView. CPadView accède aux attributs et opérations de CEditView à ajouter aux fonctionnalités de CEditView, conformément à la description fournie ici.

CPadView appelle CEditView::SetFont et SetPrinterFont pour initialiser et changer les polices écran et d'imprimante.

Pour implémenter la commande Edit Word Wrap, CPadView active ou désactive le retour automatique à la ligne en créant un nouveau contrôle d'édition (dont WNDCLASS est le contrôle d'édition Windows standard). Cette classe active et désactive les styles ES_AUTOHSCROLL et WS_HSCROLL du contrôle, qui déterminent tous deux si un contrôle d'édition applique ou non le retour automatique à la ligne. CPadView enregistre la mémoire tampon de l'ancien contrôle d'édition et la place dans le nouveau. Enfin, elle détruit l'ancien contrôle d'édition, puis associe hWnd du nouveau contrôle d'édition à la classe CPadView en appelant CWnd::SubclassWindow.

CPadView se substitue à OnPrint pour ajouter des en-têtes et bas de pages. Elle se substitue à OnBeginPrinting pour définir l'heure actuelle, dont l'affichage est facultatif dans l'en-tête, le bas de page ou les deux. Elle fait commencer l'aperçu avant impression au niveau de la sélection actuelle dans le contrôle d'édition.

CPadView se substitue à CView::OnScrollTo pour faire défiler l'affichage jusqu'au dernier l'emplacement affiché par l'aperçu avant impression.

Mots clés

Cet exemple illustre l'utilisation des mots clés suivants :

AfxGetApp ; AfxGetInstanceHandle ; AfxMessageBox ; AfxOleInit ; CArchive::Flush ; CArchive::GetFile ; CArchive::IsStoring ; CBitmap::CreateCompatibleBitmap ; CButton::DrawItem ; CCmdUI::SetCheck ; CDC::Attach ; CDC::CreateCompatibleDC ; CDC::Detach ; CDC::DrawIcon ; CDC::FillRect ; CDC::GetDeviceCaps ; CDC::GetTextMetrics ; CDC::IntersectClipRect ; CDC::LPtoHIMETRIC ; CDC::LineTo ; CDC::MoveTo ; CDC::Rectangle ; CDC::RestoreDC ; CDC::SaveDC ; CDC::SelectObject ; CDC::SetBkMode ; CDC::SetWindowExt ; CDC::SetWindowOrg ; CDC::StretchBlt ; CDC::TextOut ; CDialog::Create ; CDialog::DoModal ; CDialog::OnInitDialog ; CDocTemplate::SetServerInfo ; CDocument::DeleteContents ; CDocument::GetFirstViewPosition ; CDocument::GetNextView ; CEditView::GetEditCtrl ; CEditView::GetPrinterFont ; CEditView::PrintInsideRect ; CEditView::SerializeRaw ; CEditView::SetPrinterFont ; CEditView::SetTabStops ; CEditView::dwStyleDefault ; CFile::Write ; CFont::CreateFontIndirect ; CFontDialog::DoModal ; CFrameWnd::ActivateFrame ; CFrameWnd::Create ; CFrameWnd::LoadFrame ; CGdiObject::CreateStockObject ; CGdiObject::DeleteObject ; CGdiObject::GetObject ; CObject::AssertValid ; CObject::Dump ; CObject::IsKindOf ; CObject::Serialize ; COleIPFrameWnd::OnCreateControlBars ; COleLinkingDoc::OnGetLinkedItem ; COleResizeBar::Create ; COleServerDoc::IsInPlaceActive ; COleServerDoc::OnDeactivateUI ; COleServerDoc::OnGetEmbeddedItem ; COleServerDoc::UpdateAllItems ; COleServerItem::CopyToClipboard ; COleServerItem::GetDataSource ; COleServerItem::GetDocument ; COleServerItem::OnDraw ; COleServerItem::OnGetExtent ; COleServerItem::OnRenderFileData ; COleServerItem::OnShow ; COleServerItem::SetItemName ; COleTemplateServer::ConnectTemplate ; COleTemplateServer::UpdateRegistry ; CPrintDialog::CreatePrinterDC ; CPrintInfo::SetMaxPage ; CRect::Height ; CRect::InflateRect ; CRect::IsRectEmpty ; CRect::SetRect ; CRect::Size ; CRect::Width ; CStatusBar::Create ; CStatusBar::SetIndicators ; CString::Find ; CString::GetBuffer ; CString::GetLength ; CString::IsEmpty ; CString::Left ; CString::LoadString ; CString::Mid ; CString::ReleaseBuffer ; CTime::Format ; CToolBar::Create ; CToolBar::LoadBitmap ; CToolBar::SetButtons ; CView::GetDocument ; CView::OnBeginPrinting ; CView::OnPrepareDC ; CView::OnPrint ; CWinApp::AddDocTemplate ; CWinApp::EnableShellOpen ; CWinApp::ExitInstance ; CWinApp::GetProfileInt ; CWinApp::GetProfileString ; CWinApp::InitInstance ; CWinApp::LoadStdProfileSettings ; CWinApp::OnIdle ; CWinApp::PreTranslateMessage ; CWinApp::RegisterShellFileTypes ; CWinApp::WriteProfileInt ; CWinApp::WriteProfileString ; CWnd::BringWindowToTop ; CWnd::CenterWindow ; CWnd::DestroyWindow ; CWnd::Detach ; CWnd::DoDataExchange ; CWnd::FromHandle ; CWnd::GetClientRect ; CWnd::GetDC ; CWnd::GetDlgCtrlID ; CWnd::GetFocus ; CWnd::GetFont ; CWnd::GetParent ; CWnd::GetParentFrame ; CWnd::GetStyle ; CWnd::GetSuperWndProcAddr ; CWnd::GetWindowPlacement ; CWnd::GetWindowRect ; CWnd::GetWindowText ; CWnd::GetWindowTextLength ; CWnd::IsZoomed ; CWnd::KillTimer ; CWnd::OnClose ; CWnd::OnCreate ; CWnd::OnEraseBkgnd ; CWnd::OnRButtonDown ; CWnd::OnSize ; CWnd::OnTimer ; CWnd::PreCreateWindow ; CWnd::ReleaseDC ; CWnd::ScreenToClient ; CWnd::SendMessage ; CWnd::SetDlgCtrlID ; CWnd::SetDlgItemText ; CWnd::SetFocus ; CWnd::SetFont ; CWnd::SetOwner ; CWnd::SetTimer ; CWnd::SetWindowPlacement ; CWnd::SetWindowPos ; CWnd::SetWindowText ; CWnd::ShowWindow ; CWnd::SubclassDlgItem ; CWnd::SubclassWindow ; CWnd::UpdateWindow ; CreateWindow ; DragAcceptFiles ; GetCurrentTime ; GetObject ; GetProfileInt ; GetProfileString ; GetStockObject ; GetSystemMetrics ; GlobalMemoryStatus ; IsIconic ; IsWindowVisible ; LOWORD ; LoadIcon ; MulDiv ; SetWindowLong ; SetWindowPos ; UpdateWindow ; WideCharToMultiByte ; WriteProfileString ; _alloca ; _getdrive ; lstrcpyn ; lstrlen ; min ; wcstombs ; wsprintf

Remarque :

Certains exemples, tels que celui-ci, n'ont pas été modifiés pour refléter les changements apportés aux Assistants, aux bibliothèques et au compilateur Visual C++, mais ils illustrent bien l'exécution de la tâche souhaitée.

Voir aussi

Autres ressources

Exemples MFC