Création de fenêtre MFC... - C++ - Programmation
Marsh Posté le 14-03-2003 à 15:09:17
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.
Marsh Posté le 14-03-2003 à 16:32:13
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...
Marsh Posté le 14-03-2003 à 17:00:10
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
Marsh Posté le 14-03-2003 à 17:05:33
Arf
J'ai écris :
Code :
|
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
Marsh Posté le 14-03-2003 à 17:07:59
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
Marsh Posté le 14-03-2003 à 17:15:46
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 :
une fonction ca prend des parentheses...
Bon ben c bon du coup pour ca...
Marsh Posté le 14-03-2003 à 13:47:04
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...