Slt,
Je cherche un tuto sur l'utilisation des tab control
jtrouve pas !
merci bien
Version imprimable
Slt,
Je cherche un tuto sur l'utilisation des tab control
jtrouve pas !
merci bien
farscape a fait un projet se basant sur les CTabCtrl qui t'apprendra surement pas mal de choses
http://farscape.developpez.com/Samples/CxTabCtrl.zip
il me l'a filé celui la deja, mais c'est en utilisant une classe speciale, non ?
moi jvoudrai les utiliser simplement
c'est un paradoxe ....Citation:
Envoyé par firejocker
Justement le CTabCtrl est tout sauf simple à utiliser.
Cette classe permet justement de faire les choses simplement....
:D
lol, donc si je piges bien....
les tabctrl, c'est la misere à utiliser et ta classe le facilite
elle est libre pour toute utilisation cte classe ?
dans le code, je vois que pour creer les 2 onglets, tu fais :
que fais cette ligne :Code:
1
2
3
4
5
6
7
8
9 m_pTabInformation = new CTabInformation; m_pTabInformation->Create(CTabInformation::IDD, &m_tabctrl); m_tabctrl.AddTab(m_pTabInformation, "Information", 0); m_pTabInformation->m_pTab = &m_tabctrl; m_pTabMoreInformation = new CTabMoreInformation; m_pTabMoreInformation->Create(CTabMoreInformation::IDD, &m_tabctrl); m_tabctrl.AddTab(m_pTabMoreInformation, "More Information", 1);
qui n'apparait que dans l e premier bloc ?Code:m_pTabInformation->m_pTab = &m_tabctrl;
oui ,et je viens de remettre a jour le projet.
:D
jpiges pas pourquoi le gris de la fiche inséré dans le tabctrl est différent du reste de l'appli ?
j'ai tenté de faire ce que tu as fais avec les couleurs, ca donne rien
mon code :
DlValidationPage1 est la classe de la fiche que je veux insererCode:
1
2
3
4
5
6 DlValidationPage1* Page1 = new DlValidationPage1; Page1->Create(DlValidationPage1::IDD, &TabCtrl); TabCtrl.AddTab(Page1, "Information", 0); TabCtrl.SetSelectedColor(RGB(0, 0, 255)); TabCtrl.SetMouseOverColor(RGB(255, 0, 0));
TabCtrl est la variable associé au tab control
tu vois mon erreur la dedans ?
je vois .... c'est le tab control qui n'a pas le même gris que la fiche
comment puis je y remedier ?
je me suis planté dans la MAJ ,j'avais ecrasé mes modifications... :aie:Citation:
Envoyé par firejocker
maintenant c'est ok:
ça permet d'avoir un pointeur directe sur le tabctrl dans la dialogue...Citation:
Envoyé par firejocker
voir la fonction:
pour la couleur ça ne passe pas inapercu lol;Code:
1
2 void CTabInformation::OnUpdateId()
voir les modifications apportées a la dialogue :
application direct de la faq....Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 void CTabInformation::SetDialogBkColor(COLORREF clrCtlBk /*= RGB(192, 192, 192)*/, COLORREF clrCtlText /*= RGB(0, 0, 0) */) { //m_HbrClrCtlBk est à null dans le constructeur if(m_HbrClrCtlBk) ::DeleteObject(m_HbrClrCtlBk); m_HbrClrCtlBk = ::CreateSolidBrush(clrCtlBk); m_ClrCtlText = clrCtlText; /* COLORREF */m_ClrCtlBk= clrCtlBk; } HBRUSH CTabInformation::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes of the DC here switch(nCtlColor) { // Intercepte le message pour la dialogue et les statics. case CTLCOLOR_DLG: case CTLCOLOR_STATIC : // Fixe la couleur decriture du texte pDC->SetTextColor(m_ClrCtlText); // enventuellement suivant les cas // pDC->pDC->SetBkColor(m_ClrCtlBk); // Fixe le fond en transparent pour le texte // à ne pas faire pour un edit. pDC->SetBkMode(TRANSPARENT); // retourne le handle de la brush pour le fond si il existe. if(m_HbrClrCtlBk ) hbr = m_HbrClrCtlBk; break; } // TODO: Return a different brush if the default is not desired return hbr; // TODO: Return a different brush if the default is not desired return hbr; } BOOL CTabInformation::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here SetDialogBkColor(RGB(193, 193, 255)); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }
:D
jvois pas comment l'appliquer pour que le CtrlTab est la même couleur que la ficher CDialog :(
si tu ne toccupes pas de la couleur, ce sera la couleur par défaut partout, donc partout la memeCitation:
Envoyé par firejocker
ben justement non....
le gris par defaut du TabCtrl et celui par defaut de la fiche sont différents, celui du CDialog est plus clair
je remonte cette question une fois car les différences de couleurs sont la,
et qu'ils faut vraiment que j'uniformise ces gris
http://firejocker.info/tmp/vue.jpg
je viens de remettre a jour mon projet .
j'ai rajouté une classe template de gestion des couleurs pour les dialogues:
CTplDlgColor.
j'ai fais l'impasse pour l'instant sur le style XP en cochant la propriete owner draw fixed sur le tabctrl pour eviter la bande grise restante sur le tabctrl.
c'est une question de gout a toi de voir.
note l'appel de la fonction
permet d'ajuster le panneau client sur le tabctrl,evitant ainsi les differences de gris.Code:
1
2 m_tabctrl.SetAutoSizePannel(); // retaille automatiquement les panneaux clients.
:D
cool ca !
ca marche !!!
merci bien !
tu as vu qu'il reste un morceau de gris different
sur le texte des onglets non sélectionnés
bon je ne sais pas ce qui se passe j'ai un pb de mise à jour FTP .. :oops: ,Citation:
Envoyé par firejocker
j'ai changé le nom :
http://farscape.developpez.com/Samples/CxTabCtrl.zip
cette fois ci c'est bon j'ai verifé et re verifié ...
:D
Que faire ?Citation:
c:\Documents and Settings\jb\Mes documents\Visual Studio Projects\Douchette\XTabCtrl.h(87) : error C2039: '_GetBaseMessageMap' : is not a member of 'CTplDlgColor<GENERIC_DLGCOLOR>'
tu as recuperé tout le projet ?
attention il y a un include en plus :
si c'est le projet lui même ,fait un clean et rebuild all.Code:
1
2 #include "TemplDef.h" // message map extensions for templates
:D
j'ai recuperé uniquement ces 3 fichiers :
XTabCtrl.h
XTabCtrl.cpp
TemplDef.h
que j'ai ajouté à ma solution (enfin que le 3 eme, les autres y etaient deja)
clean puis rebuild et j'ai toujours l'erreur