:
:
: Que vois-je??!? Tu déclare une classe DANS une autre: la classe CItem dans CTplLayout!!! Comment le compilo interprète ça??
:
:
: Que vois-je??!? Tu déclare une classe DANS une autre: la classe CItem dans CTplLayout!!! Comment le compilo interprète ça??
la notion de template a ete utilisée pour eviter les notions d'heritage multiples et de multi utilisation (trois classes supportées CDialog etc ..) .Envoyé par r0d
si ta classe se nomme TestLayoutDlg modifi la declaration et code comme suit :
il suffit juste de rajouter CTplLayout<...> sur la classe de base ....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 // . h class TestLayoutDlg : public CTplLayout<CDialog> { //...... // code TestLayoutDlg::TestLayoutDlg() : CTplLayout<CDialog>(TestLayoutDlg::IDD) { //{{AFX_DATA_INIT(TestLayoutDlg) //}}AFX_DATA_INIT }
apres voir mon post et le sample fournit .
il n'y a pas deux sources .h et cpp parce que sinon dans le cas d'un template ça ne compile pas du moins avec VC6.0.
J’ai tout a fais le droit de déclarer une classe a l'intérieur d'une autre classe, ça limite sa portée d'utilisation à la classe container et sa visibilité c'est tout .
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
J'ai récupéré ton exemple. C'est un projet SDI, isn't it? alors j'ai rajouté des boutons un peu partout sur la Dialog (ID:IDD_TESTMDILAYOUT_FORM), et ça plante sur la fonction AddControl(), 4eme ligne: ScreentoClient(item.m_rcControl). item contient des valeurs erronées.
Faut-il déclarer une variable membre pour chaque bouton? Qu'ai-je oublié?
non c'est un projet MDI ...
montre ton initialisation dans OnInitialUpdate .
il n' y a pas besoin d'avoir une variable attachée au controle .
si ça plante c'est que la ressource n'est pas dispo , bizar .
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
je n'ai rien touché
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 void CTestMdILayoutView::OnInitialUpdate() { CFormView::OnInitialUpdate(); CChildFrame *pChild=static_cast<CChildFrame *>(GetParentFrame()); if(pChild->GetInitialRectFrame().IsRectNull()) { ResizeParentToFit(); } AddControl(IDC_STATICLIB,eSizeType::sizeResize,eSizeType::sizeRepos); AddControl(IDOK,eSizeType::sizeRepos,eSizeType::sizeNone); AddControl(IDCANCEL,eSizeType::sizeRepos,eSizeType::sizeNone); InitDialog(pChild->GetInitialRectFrame(),FALSE); // initialisation de la DialogBar pChild->m_DlgBar.InitDialog(); }![]()
il plante sur GetWindowRect() en fait. Je n'arrive pas à aller dans le code de cette fonction pour voir ce qu'il s'y passe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 void CTplLayout<GENERIC_LAYOUT>::AddControl(const UINT resID,const eSizeType xsize,const eSizeType ysize,const bool bFlickerFree) { CItem item; // create the new item CWnd *pWnd=GetDlgItem(resID); pWnd->GetWindowRect(item.m_rcControl); ...
voic le code d'erreur:
Exception non gérée à 0x7c28e64a (mfc71d.dll) dans TestMdILayout.exe:0xC0000005: Violation d'accès lors de la lecture de l'emplacement 0x00000020.
beu c'est quoi le pb ? ,j'ai rajouté des boutons dans la view ça fonctionne j'ai pas de pb .
tu as fais quoi exactement ?
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
j'ai rajouté des boutons sur le formviewJ'ai copié 6 fois le bouton "ok" et je les ai mis un peu partout dans la fenêtre. Rien de plus.
l'erreur dont je te parle viens du fait que pWnd = 0x000000000
:trouve: c'est quand j'enlève le static "A faire: placez les controles de formulaires sur cette boite de dialogue" que ça plante!!!
si ça plante ça veut dire que l'identifiant n'existe plus dans la ressource ..
c'est quel identifiant IDOK ?
verifis que les identifiants passés a addcontrol existent bien dans la ressource ...
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
ok, ça marche, et je commence à comprendre!
bon, je vais essayer de comprendre ce que tu as fais. Il va donc me falloir comprendre les templates, connaitre un minimum sur les projet MDI, et me plonger dans ton code... une bonne soirée et une bonne nuit de dev en perspective
en tout cas, encoreet
![]()
j'ai rajouté des explications dans le post it.
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
Partager