Partager via


Modification des styles d'une fenêtre créée par les MFC

Dans cette version de la fonction WinMain, MFC contient plusieurs classes de fenêtre standard. Étant donné que vous ne modifiez normalement pas la WinMainde MFC, cette fonction ne vous permet pas de modifier les styles de fenêtre par défaut de MFC. Cet article explique comment modifier les styles d'une telle classe de fenêtre pré-enregistrée dans une application existante.

Modifier les styles dans une nouvelle application MFC

Si vous utilisez Visual C++ 2.0 ou une version ultérieure, il est possible de modifier les styles d'affichage par défaut dans l'Assistant d'application lorsque vous créez votre application. Dans la page de fonctionnalités de l'interface utilisateur de l'Assistant Application, modifiez les styles de la fenêtre principale cadre et fenêtres enfants MDI. Pour l'un des types de fenêtre, spécifiez son épaisseur de cadre (épais ou amincir) et les éléments suivants :

  • Si la fenêtre a les contrôles Minimiser ou Maximiser.

  • Si la fenêtre apparaît initialement réduite, agrandie, ou ni l'un ni l'autre.

Pour les fenêtres cadre principales, vous pouvez également spécifier si la fenêtre possède un menu système. Pour les fenêtres enfants MDI, vous pouvez spécifier si la fenêtre prend en charge les volets de séparateur.

Modifier les styles d'une application existante

Si vous modifiez les attributs de fenêtre dans une application existante, suivez les instructions du reste de l'article à la place.

Pour modifier les attributs par défaut d'affichage utilisés par une application du framework créée avec l'Assistant d'Application, substituez la fenêtre de fonction virtuelle membre PreCreateWindow. PreCreateWindow permet à une application d'accéder au processus de conception normalement géré en interne par la classe CDocTemplate. L'infrastructure appelle PreCreateWindow juste avant de créer la fenêtre. En modifiant sa structure CREATESTRUCT passée à PreCreateWindow, votre application peut modifier les attributs utilisés pour créer la fenêtre. Par exemple, pour vous assurer qu'une fenêtre n'utilise pas de légende, utilisez l'opération de bits suivantes :

// cs has been declared as CREATESTRUCT& cs;
cs.style &= ~WS_CAPTION;

L'exemple d'application de CTRLBARS illustre cette technique pour modifier les attributs de fenêtre. Selon ce que votre application modifie dans PreCreateWindow, il peut être nécessaire d'appeler l'implémentation de la classe de la fonction.

Les paragraphes suivants couvrent le cas de SDI et du Cas MDI.

Le cas de SDI

Dans une application d'interface monodocument (SDI), le style d'affichage par défaut dans l'infrastructure est une combinaison des styles de WS_OVERLAPPEDWINDOW et de FWS_ADDTOTITLE. FWS_ADDTOTITLE est un style spécifique à MFC qui demande au framework d'ajouter le titre du document dans la légende de la fenêtre. Pour modifier les attributs de fenêtre dans une application de SDI, substituez la fonction PreCreateWindow dans votre classe dérivée CFrameWnd (que l'Application nomme CMainFrame). Par exemple :

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
    // Call the base-class version 
   if( !CFrameWnd::PreCreateWindow(cs) )
      return FALSE;

    // Create a window without min/max buttons or sizable border 
    cs.style = WS_OVERLAPPED | WS_SYSMENU | WS_BORDER;

    // Size the window to 1/3 screen size and center it 
    cs.cy = ::GetSystemMetrics(SM_CYSCREEN) / 3; 
    cs.cx = ::GetSystemMetrics(SM_CXSCREEN) / 3; 
    cs.y = ((cs.cy * 3) - cs.cy) / 2; 
    cs.x = ((cs.cx * 3) - cs.cx) / 2;

   return TRUE;
}

Ce code crée une fenêtre cadre principale sans boutons d'agrandissement et réduction et sans bordure dimensionnable. La fenêtre est initialement centrée sur l'écran.

Le cas de MDI

Un peu plus de travail est requis pour modifier le style d'affichage de la fenêtre enfant dans une application d'interface multidocument (MDI). Par défaut, une application MDI créée avec l'Assistant d'Application utilise la classe par défaut CMDIChildWnd définie dans MFC. Pour modifier le style d'affichage de la fenêtre enfant MDI, vous devez dériver une nouvelle classe de CMDIChildWnd et remplacer toutes les références à CMDIChildWnd dans votre projet par des références à la nouvelle classe. Très probablement, la seule référence à CMDIChildWnd dans l'application se trouve dans la fonction membre InitInstance de votre application.

Le style d'affichage par défaut utilisé dans une application MDI est une combinaison des styles de WS_CHILD, de WS_OVERLAPPEDWINDOW, et de FWS_ADDTOTITLE. Pour modifier les attributs d'affichage des fenêtres enfants d'une application MDI, substituez la fonction PreCreateWindow dans votre classe dérivée de CMDIChildWnd. Par exemple :

BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs)
{
   // Create a child window without the maximize button 
    cs.style &= ~WS_MAXIMIZEBOX; 

   return CMDIChildWnd::PreCreateWindow(cs);
}

Ce code crée des fenêtres enfants MDI sans bouton Agrandir.

Sur quels éléments souhaitez-vous obtenir des informations supplémentaires ?

Voir aussi

Concepts

styles de fenêtre frame (C++)