Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
837 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Création de fenêtre MFC...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Création de fenêtre MFC...

n°333376
gooopil
pfiew
Posté le 14-03-2003 à 13:47:04  profilanswer
 

Hello !
 
Un petit peu de contexte avant d'en arriver aux questions...
Je bosse sur une appli basée sur les MFC en MDI. Mon but, c'est d'avoir pour un document plusieurs fenêtres filles (original n'est ce pas ;)).
 
Ma première étape fut de réperer ou était crée la fenêtre dans le code d'AppWizard. La seule référence se trouve dans App::InitInstance() à la création du CMultiDocTemplate. J'ai donc remplacé la classe de vue par la mienne (encore sous forme d'ébauche). Jusque la ca va....A peu près...
 
1 - A la création du CMulti(...), la fenêtre est crée automatiquement c ca ??
 
2 - Si je veux plusieurs fenêtres, je fais comment ? Je pensais rajouter à ma class document des membres  pointant sur les différentes vues. Puis, quand le moment est venu, appelé un ShowWindow ou qq chose comme ca....Je prends une bonne direction ou je fais fausse route ?
 
3 - Dans ma classe ChildFrame, fonction PreCreateWindow(CREATESTRUCT& cs), je veux adapter la taille de la fenêtre Child à la taille de la fenêtre app....Je fais comment pour récupérer les infos ? à partir de  HWND  hwndParent ?
 
Bon je crois que ca suffit pour le moment... :)
 

mood
Publicité
Posté le 14-03-2003 à 13:47:04  profilanswer
 

n°333548
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 14-03-2003 à 15:09:17  profilanswer
 

1)
 
La fenetre est créé dans le Create de CView dont ta fenetre derive.
 
Quand tu fais Ctrl-N (New), un nouveau document et une nouvelle fenetre (associé par CMultiDocTemplate) sont créés et associés (le processus est implementé dans CWinApp:OnNewDocument() en gros)
 
2)
Si t'as qu'un document, c'est une appli single document qu'il faut créer
 
3)
Dans la méthode PreCreateWindow(CREATESTRUCT& cs)
tu écris cs.cx et cs.cy avec la taille désirée.


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°333641
gooopil
pfiew
Posté le 14-03-2003 à 16:32:13  profilanswer
 

1 - Ok je pense avoir compris
 
2 - Ben en fait, je veux pouvoir avoir plusieurs doc, chacun associé à plusieurs fenêtres. Donc MDI...En fait je sais rajouter un document (c déjà fait fo cliquer sur new). Mais je voudrais que mon doc ait plusieurs fenêtres....
 
3 - Je sais comment modifier la fenêtre, mon problème c'est que je sais pas comment récupérer la taille de la fenêtre qui contient celle la...
 

n°333652
VisualC++
J'va y penser ...
Posté le 14-03-2003 à 16:52:06  profilanswer
 

GetWindowRect(CRect&) sur ta frameWnd

n°333658
gooopil
pfiew
Posté le 14-03-2003 à 17:00:10  profilanswer
 

J'allais demander comment faire le lien avec la frame...
Pour une fois, j'ai pas été feignant, j'ai regardé dans msdn et je suis tombé sur un truc compréhensible  
BOOL GetWindowRect(HWND hWnd,LPRECT lpRect);
Cool merci pour la réponse à la question 3.
 
Me manque juste quelqu'un qui se dévoue pour m'expliquer la n°2 ;)

n°333664
gooopil
pfiew
Posté le 14-03-2003 à 17:05:33  profilanswer
 

Arf  
J'ai écris :

Code :
  1. CRect parentRect;
  2. GetWindowRect(cs.hwndParent,parentRect);


 
et le compilo me dis : 'GetWindowRect' : function does not take 2 parameters
 
J'ai pas rêver pourtant : http://msdn.microsoft.com/library/ [...] owrect.asp

n°333667
VisualC++
J'va y penser ...
Posté le 14-03-2003 à 17:07:59  profilanswer
 

Euh t utilises les MFC donc utilises comptement lol et pas l api directe
 
Sinon pour les document/vue regarde dans les templates, a partir des templates come mtu l as fait il semble, on peut cree les fenetre qui se retrouve associee avec un doc et une frame

n°333668
VisualC++
J'va y penser ...
Posté le 14-03-2003 à 17:08:42  profilanswer
 

CF ma remarque, tu est en MFC pas en API Win32

n°333670
gooopil
pfiew
Posté le 14-03-2003 à 17:15:46  profilanswer
 

VisualC++ a écrit :

Euh t utilises les MFC donc utilises comptement lol et pas l api directe


 
Utilises comptement lol :??:  
 
Je présume que tu veux dire qu'il faut que j'utilise CWnd::GetWindowRect au lieu de cette fonction mais quand même, je comprends pas cette artie de la phrase ;)
 
Donc question : et je le trouve ou mon objet CFrameWnd dans ma CMDIChildWnd ?
 
EDIT : peut-être avec GetActiveFrame (je recherche de mon côté quand même) J'essaye...
EDIT 2 :
Et ca coince :
je fais  
CFrameWnd* parentWnd = GetActiveFrame;
parentWnd->GetWindowRect(parentRect);
 
et le compilo me dis :
error C2440: 'initializing' : cannot convert from 'class CFrameWnd *(__thiscall CFrameWnd::*)(void)' to 'class CFrameWnd *'  
à la première ligne...
 
EDIT 3 :
:ouch:  une fonction ca prend des parentheses...
Bon ben c bon du coup pour ca...


Message édité par gooopil le 14-03-2003 à 17:58:26

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Création de fenêtre MFC...

 

Sujets relatifs
[VB] Création d'ActiveX en VB6.MFC : les pointeurs sur Doc c'est de la m....?
[JS] Savoir si le chargement d'une fenêtre est terminé ?Mettre au premier plan une fenêtre?
probleme de fenetre pop upFenêtre "Ouvrir un fichier"
Visibilite des classes MFCDéterminer la taille d'une fenêtre
Effacer une fenêtreMFC pointeur sur CDocument
Plus de sujets relatifs à : Création de fenêtre MFC...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR