voila ma méthode :
j'ai dans une fenêtre une déclaration d'onglet (des dialog-PropertyPage child sans bord, etc)
j'ai également la déclaration du PropertySheet qui les englobe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 CTab_1 tab_onglet1; CTab_2 tab_onglet2;
CSheet est une classe dérivant de PropertySheet, à laquelle je n'ai pas touché, si ce n'est un rajout de "Focus" sur le onpaint
Code : Sélectionner tout - Visualiser dans une fenêtre à part CSheet* tab;
mais passons
un PictureControle siege sur le dialog pour aider au positionnement visuel du Property : IDC_PLACEHOLDER
Arrive le moment d'instanciation du propertysheet
Cependant le Create génère systématiquement une exception (violation d'accès)...
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
23 // on récupère le pointeur sur la picture CWnd* tab_place = GetDlgItem(IDC_PLACEHOLDER); // on créé le sheet tab = new CSheet("",tab_place,0); // on lui ajoute les 2 onglets tab->AddPage(&tab_onglet1); tab->AddPage(&tab_onglet2); // et on créé l'instance if (!tab->Create(tab_place, WS_CHILD | WS_VISIBLE, 0)) { delete tab; tab = NULL; return; } // positionnement physique dépendant de la position de la picture CRect r; tab_place->GetWindowRect(r); tab->SetWindowPos(NULL, 0, 0, r.Width(), r.Height(), SWP_NOZORDER | SWP_NOACTIVATE);
j'ai fait quelque chose de mal ?
je place cette init dans un paint (avec un booléen pour ne le faire qu'une fois). J'ai essayé aussi dans oninitdialog...
mais systématiquement la première fois ça plante...
Alors le résultat : l'appli tourne sans probleme... jusqu'à ce qu'on passe la fenêtre en second plan (genre on la recouvre avec un IE)... on ne peut alors plus la réafficher. Et lorsqu'on quitte, on a une serie d'exception
Partager