|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Feb 2001
Città: Torino
Messaggi: 11769
|
[MFC] Enigma da SuperGuru
Buon giorno a tutti,
di recente mi sto occupando della transizione di una applicazione piuttosto massiccia da Visual Studio 6.0 a Visual Studio 2005. Durante tale transizione, quando si tratta di compilare delle dll, ottengo il seguente warning: Codice:
Warning 1 warning C4003: not enough actual parameters for macro '_IMPLEMENT_RUNTIMECLASS' 16 Ecco un esempio di macro custom Codice:
#define IMPLEMENT_SERIAL_EXP_CELLMODEL(class_name, base_class_name, wSchema) \
CObject* PASCAL class_name::CreateObject() \
{ return new class_name; } \
_IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, wSchema, \
class_name::CreateObject) \
AFX_CLASSINIT _init_##class_name(RUNTIME_CLASS(class_name)); \
CELL_MODEL_IMPEXP CArchive& AFXAPI operator>>(CArchive& ar, class_name* &pOb) \
{ pOb = (class_name*) ar.ReadObject(RUNTIME_CLASS(class_name)); \
return ar; }
Codice:
#define _IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, wSchema, pfnNew) \
CRuntimeClass* PASCAL class_name::_GetBaseClass() \
{ return RUNTIME_CLASS(base_class_name); } \
AFX_COMDAT AFX_DATADEF CRuntimeClass class_name::class##class_name = { \
#class_name, sizeof(class class_name), wSchema, pfnNew, \
&class_name::_GetBaseClass, NULL }; \
CRuntimeClass* class_name::GetRuntimeClass() const \
{ return RUNTIME_CLASS(class_name); } \
Codice:
#define _IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, wSchema, pfnNew, class_init) \
CRuntimeClass* PASCAL class_name::_GetBaseClass() \
{ return RUNTIME_CLASS(base_class_name); } \
AFX_COMDAT CRuntimeClass class_name::class##class_name = { \
#class_name, sizeof(class class_name), wSchema, pfnNew, \
&class_name::_GetBaseClass, NULL, class_init }; \
CRuntimeClass* PASCAL class_name::GetThisClass() \
{ return _RUNTIME_CLASS(class_name); } \
CRuntimeClass* class_name::GetRuntimeClass() const \
{ return _RUNTIME_CLASS(class_name); } \
Ovviamente, se la precedente forma di _IMPLEMENT_RUNTIMECLASS era a malapena documentata in qualche FAQ ed in qualche paginetta di codeguru, la attuale è ASSOLUTAMENTE ignota ai più. Se qualcuno, certamente più preparato di me, riesce a darmi qualche dritta, avrà tutta la mia gratitudine.
__________________
Eroi da non dimenticare: Nicola Calipari (04/03/2005) e Vittorio Arrigoni (14/04/2011) e Bradley Manning. Sono certo che anche i francesi si indignarono per il fatto che i tedeschi, piuttosto che veder dissolvere la loro nazione, preferirono il nazismo. Chi non impara la storia... |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Non so se ti può servire...
cmq prova a vedere qui: https://forums.microsoft.com/MSDN/Sh...36445&SiteID=1 c'è un altro con un problema nella migrazione da VS6 a VS8, solo che il suo probema è diverso, ma magari la parte che interessa a te l'ha fatta giusta.. Io non ci capisco assolutamente nulla di quello che c'è scritto e sono al lavoro e non ho tempo per capirci qualcosa
__________________
|
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Feb 2001
Città: Torino
Messaggi: 11769
|
Quote:
__________________
Eroi da non dimenticare: Nicola Calipari (04/03/2005) e Vittorio Arrigoni (14/04/2011) e Bradley Manning. Sono certo che anche i francesi si indignarono per il fatto che i tedeschi, piuttosto che veder dissolvere la loro nazione, preferirono il nazismo. Chi non impara la storia... |
|
|
|
|
|
|
#4 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
quella macro non andava usata proprio perché non è documentata; io non ti posso aiutare perché non l'ho mai usata, guarda un po'
|
|
|
|
|
|
#5 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
comunque sia vai a vedere la definizione della struct CRuntimeClass, che dovrebbe stare sempre in AFX.H: il parametro class_init viene usato per inizializzare l'ultimo campo della struct. come si chiama quel campo?
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:15.




















