FormView et les MFC

Signaler
Messages postés
2
Date d'inscription
lundi 12 mai 2003
Statut
Membre
Dernière intervention
10 janvier 2004
-
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
-
Salut,
une petite question, je pense que vous savez qu'en utilisant les MFC on peut batir un projet SDI ou MDI basée sur CFormView ce qui fait qu'on obtient une fiche qui ressemble presque à une boite de dialogue.
Mais est-ce qu'il y a un moyen pour supprimer "l'ancrage" de la FormView dans la vue, ce qui permettrait d'obtenir une fiche qui ressemble à une boite de dialogue "plate" si je puis dire (en gros comme quand on ouvre VB ou Delphi, on a une fiche avec rien dessus) ?
Merci

8 réponses

Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
Je ne sais pas si c'est le résultat que tu veux mais essaie :

cs.dwExStyle &= ~WS_EX_CLIENTEDGE;

dans PreCreateWindow de MainFrame et TestView

après avoir appelée fonction classe de base
Messages postés
2
Date d'inscription
lundi 12 mai 2003
Statut
Membre
Dernière intervention
10 janvier 2004

" après avoir appelée fonction classe de base " ?
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
Dans ClassWizard, sélectionne la classe dérivant de CFormView et ajoute la fonction PreCreateWindow :

dans le code faire la modif :

BOOL CTestView::PreCreateWindow(CREATESTRUCT& cs)
{
if(!CFormView::PreCreateWindow(cs))
return FALSE;

cs.dwExStyle &= ~WS_EX_CLIENTEDGE;
return TRUE;
}

idem pour MainFrame
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
ymca2003 je pense qu'il serait plus utile de modifier cs avant d'appeler CFormView::PreCreateWindow(cs), non?
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
Non car dans le traitement par défaut, le style WS_EX_CLIENTEDGE est ajouté donc si on veut l'enlever, il faut le faire après avoir appeler CFormView::PreCreateWindow.
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
Le problème c'est que si lu fait après ca ne sert a rien puisque ta fenêtre est déja crée
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
Non PreCreateWindow est appelé et retourne AVANT que la fenêtre soit créée (d'ou le nom)
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
Tu avais raison, il faut modifier cs après l'appel, capendant il y a encoore quelque chose qui m'échappe: Create est appelée avant PreCreateWindow, donc quelle est exactement la fonction de Create?