c''est quoi la version de compilateur vs ? 6.0, .net 2001-2003 ,2005 ?
:D
Version imprimable
c''est quoi la version de compilateur vs ? 6.0, .net 2001-2003 ,2005 ?
:D
c'est visual c++ .net
on la trouve ou la version du compile, sur le about, j'ai :
Microsoft Development Environment 2003 Version 7.1.3088
bon c'est a cause des templates ,ça passe parfaitement sous VC6.0...
essaye de mettre ce code dans templdef.h
en remplacement du bloc DECLARE_TEMPLATE_MESSAGE_MAP
de plus a partir de .net cette macro existe ,je l'ai renommée en changeant
_TEMPLATE_ par _TPL_
ça devrait passer sous .net 2003 ,mais ça passe pas sous VC 2005 :evil: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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 /////////////////////////////////////////////////////////////////////////////// // definition for MESSAGE_MAP: #define DECLARE_TPL_MESSAGE_MAP() DECLARE_MESSAGE_MAP() #include "afxtempl.h" #if _MSC_VER >= 0x0700 #ifdef _AFXDLL #define BEGIN_TPL_MESSAGE_MAP(theTemplArgs, theClass, baseClass) \ template \ const AFX_MSGMAP* PASCAL theClass::GetThisMessageMap() \ { return &theClass::messageMap; } \ template \ const AFX_MSGMAP* theClass::GetMessageMap() const \ { return &theClass::messageMap; } \ template \ AFX_COMDAT const AFX_MSGMAP theClass::messageMap = \ { &baseClass::GetThisMessageMap, &theClass::_messageEntries[0] }; \ template \ AFX_COMDAT const AFX_MSGMAP_ENTRY theClass::_messageEntries[] = \ { #else #define BEGIN_TPL_MESSAGE_MAP(theTemplArgs, theClass, baseClass) \ template \ const AFX_MSGMAP* theClass::GetMessageMap() const \ { return &theClass::messageMap; } \ template \ AFX_COMDAT const AFX_MSGMAP theClass::messageMap = \ { &baseClass::messageMap, &theClass::_messageEntries[0] }; \ template \ AFX_COMDAT const AFX_MSGMAP_ENTRY theClass::_messageEntries[] = \ { #endif #else #ifdef _AFXDLL #define BEGIN_TPL_MESSAGE_MAP(theTemplArgs, theClass, baseClass) \ template <theTemplArgs> \ const AFX_MSGMAP* PASCAL theClass::_GetBaseMessageMap() \ { return &baseClass::messageMap; } \ template <theTemplArgs> \ const AFX_MSGMAP* theClass::GetMessageMap() const \ { return &theClass::messageMap; } \ template <theTemplArgs> \ AFX_COMDAT AFX_DATADEF const AFX_MSGMAP theClass::messageMap = \ { &theClass::_GetBaseMessageMap, &theClass::_messageEntries[0] }; \ template <theTemplArgs> \ AFX_COMDAT const AFX_MSGMAP_ENTRY theClass::_messageEntries[] = \ { \ #else #define BEGIN_TPL_MESSAGE_MAP(theTemplArgs, theClass, baseClass) \ template <theTemplArgs> \ const AFX_MSGMAP* theClass::GetMessageMap() const \ { return &theClass::messageMap; } \ template <theTemplArgs> \ AFX_COMDAT AFX_DATADEF const AFX_MSGMAP theClass::messageMap = \ { &baseClass::messageMap, &theClass::_messageEntries[0] }; \ template <theTemplArgs> \ AFX_COMDAT const AFX_MSGMAP_ENTRY theClass::_messageEntries[] = \ { \ #endif #endif #define END_TPL_MESSAGE_MAP() END_MESSAGE_MAP()
oula !!!
j'ai à bloc d'erreur !!!!
j'essai de trouver la premiere ..... et jla poste
[edit de moi :)] jai supprimé les 300 lignes d'erreurs que j'avais mis et qui encombré le forum inutilement
si tu relis mon message ,j'ai dis qu'il fallait remplacer
DECLARE_TEMPLATE_MESSAGE_MAP par
DECLARE_TPL_MESSAGE_MAP
et de maniere generale _TEMPLATE_ par _TPL_ ......
c'est fait (exact j'avais oublié)
ca se réduit maintenant à :
Citation:
------ Build started: Project: Douchette, Configuration: Debug Win32 ------
Compiling...
XTabCtrl.cpp
XTabCtrl.h(87) : error C2039: '_GetBaseMessageMap' : is not a member of 'CTplDlgColor<GENERIC_DLGCOLOR>'
XTabCtrl.cpp(53) : error C2440: 'static_cast' : cannot convert from 'void (__thiscall CXTabCtrl::* )(NMHDR *,LRESULT *)' to 'BOOL (__thiscall CCmdTarget::* )(NMHDR *,LRESULT *)'
None of the functions with this name in scope match the target type
XTabCtrl.cpp(129) : warning C4244: 'initializing' : conversion from 'INT_PTR' to 'int', possible loss of data
DlValidationPage2.cpp
DlValidation.cpp
XTabCtrl.h(87) : error C2039: '_GetBaseMessageMap' : is not a member of 'CTplDlgColor<GENERIC_DLGCOLOR>'
DlRecapitulatif.cpp
XTabCtrl.h(87) : error C2039: '_GetBaseMessageMap' : is not a member of 'CTplDlgColor<GENERIC_DLGCOLOR>'
DlListClick.cpp
XTabCtrl.h(87) : error C2039: '_GetBaseMessageMap' : is not a member of 'CTplDlgColor<GENERIC_DLGCOLOR>'
DlConnection.cpp
XTabCtrl.h(87) : error C2039: '_GetBaseMessageMap' : is not a member of 'CTplDlgColor<GENERIC_DLGCOLOR>'
DlAccueil.cpp
XTabCtrl.h(87) : error C2039: '_GetBaseMessageMap' : is not a member of 'CTplDlgColor<GENERIC_DLGCOLOR>'
Douchette.cpp
XTabCtrl.h(87) : error C2039: '_GetBaseMessageMap' : is not a member of 'CTplDlgColor<GENERIC_DLGCOLOR>'
Generating Code...
Build log was saved at "file://Debug\BuildLog.htm"
Douchette - 8 error(s), 1 warning(s)
---------------------- Done ----------------------
Build: 0 succeeded, 1 failed, 0 skipped
bon j'ai opté pour une solution compilable pour les 3 compilateurs vc6,.net,2005., je verrais le probleme des messages map templates une autre fois.
le projet est a jour.
:D
y'a une manip à faire avec ?
j'ai cette erreur dans ton projet :Citation:
XTabCtrl.cpp(53) : error C2440: 'static_cast' : cannot convert from 'void (__thiscall CXTabCtrl::* )(NMHDR *,LRESULT *)' to 'BOOL (__thiscall CCmdTarget::* )(NMHDR *,LRESULT *)'
essaye ça:
j'ai remplacé le void par BOOL .Code:
1
2
3
4
5
6
7
8
9 BOOL CXTabCtrl::OnSelchanging(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here m_iSelectedTab = GetCurSel(); *pResult = 0; return FALSE; }
modifie aussi le .h .
c'est le probleme du portage d'un code VC6 sur .net ....
:D
lol, ce coup ci,
c'est le gris qui déconne :)
le titre de l'onglet est foncé alors que le contenu est clair
tu as appelé :SetDialogBkColor dans les differentes dialogues ?
voir mon exemple .
http://farscape.developpez.com/images/Cxtabctrl.JPG
:D
je pensais qu'il suffisait de mettre TabCtrl.SetAutoSizePannel(); à l'appelante
comment puis alors connaitre la couleur de base (le gris clair) ?
je l'ai plus en tete mais :
une petite copie ecran de la zone concernée ,
puis appel paint
copier la zone
prelevée la couleur avec l'outil prelevement couleur
et menu couleurs / modifier les couleurs /bouton couleurs personnalisées.
la tu trouves les valeurs RGB.
:D
j'essai de l'appeler comme tu l'a fais :
et j'ai bien misCitation:
BOOL DlValidationPage2::OnInitDialog()
{
CDialog::OnInitDialog();
SetDialogBkColor(RGB(193, 193, 255));
dans mon .h seulement, il trouve pas :Citation:
#include "XTabCtrl.h"
jvois pas mon erreur la,Citation:
DlValidationPage2.cpp(56) : error C3861: 'SetDialogBkColor': identifier not found, even with argument-dependent lookup
j'ai beau cleaner ma solution, rien n'y fais
regarde mon exemple et l'utilsation de la classe template....
les 3 classes panneaux et dialog utilisent la classe template....Code:
1
2
3
4
5
6 class CTabMoreInformation : public CTplDlgColor<CDialog> ... class CTabInformation : public CTplDlgColor<CDialog> ... class CTabctrlDlg : public CTplDlgColor<CDialog>
voir les implementations dans les .cpp.
:D
quelle tache ! j'ai zappé ca !
mais sinon, pkoi hier de base, le gris etait ok (di ce n'est dans les onglet), et plus la ?
j'ai rien fais de plus hier, aucun SetDialogBkColor ....
le gris etait ok sur les panneaux grace au resize des dialogues...
ben il y est toujours ce truc mais plus le gris
ton projet integre un manifest ? si oui tu as mis le Ctabctrl owner draw dans les ressources.
sinon montre moi une copie d'ecran de ta fenetre .
:D