PDA

Visualizza la versione completa : [C/C++]: Errore "C2664: cannot convert from void * to struct"


adaco
01-08-2006, 10:20
Buongiorno a tutti e un grazie a chi mi saprà aiutare.
Uso la seguente funzione per aprire la finestra principale del mio main:

CreateWindowEx(0, "PROVA", fullId, WS_CAPTION|WS_SYSMENU, 0, 0, hRes, vRes, NULL, NULL, hInstance, NULL )

Ma al momento della compilazione ottengo il seguente errore:

error C2664: 'CreateWindowExA' : cannot convert parameter 11 from 'void *' to 'struct HINSTANCE__ *' seguito dall'avvertimento Conversion from 'void*' to pointer to non-'void' requires an explicit cast...

Premettendo che:

- Ho capito che, al contrario del C (ambiente dal qual preovengo ma essendo passato dal Java), il C++ non CASTIZZA in automatico il VOID *
- Il CAST esplicito di NULL a 'struct HINSTANCE__ *' o 'HINSTANCE__ *' non produce risultati
- Ho sostituito a NULL lo 0 ed un tipo CREATESTRUCT (&cs) ma non c'è stato verso
- Ho provato a compilare mettendo STRICT nei settings di C/C++ (stò usando il MICROSOFT VISUAL C++): niente da fare
- Ho provato a linkare la <windef.h> come ho visto consigliare su web ma anche qui senza risolvere niente

Stò cominciando ad essere a corto di idee :dhò: ... Qualcuno mi sa dare una mano? La cosa strana è che passando da CreateWindow() a CreateWindowEx() (a proposito che differenza c'è? :bhò: ) per un po' mi era andata bene!!! Ma ora sono incastrato da giorni su 'stà cosa e non riesco a sbloccarmi :confused: ... Grazie a tutti per l'aiuto :) ...

oregon
01-08-2006, 10:40
Con quale compilatore stai lavorando? Ne ho provato alcuni e non ho avuto problemi ...

adaco
01-08-2006, 10:43
Originariamente inviato da oregon
Con quale compilatore stai lavorando? Ne ho provato alcuni e non ho avuto problemi ...
Quello di default de Visual C++ 6.0 di MICROSOFT... Ho pensato anche ad un problema di SDK ho quelle del 98 (e non so se le vede tra l'altro perchè le ho installate dopo)... Però è strano mi sembra un problema di una nbanalità sconfortante :bhò: Eppure sono bloccato da giorni e su web dicono: SEMPLICE FAI IL CAST!!! :dhò:

oregon
01-08-2006, 10:48
Non riesco a replicare il tuo errore ... la compilazione di quella linea avviene normalmente anche con VC6 ...

Sei sicuro che l'errore si riferisce a quella linea?

adaco
01-08-2006, 10:55
Assolutamente si... E tra l'altro ho due modalità di apertura window tutte due con CreateWindowEx() e tutte due con lo stesso errore...

Ti posto i settings del compilatore:
- MFC: Use MFC in a shared DLL (una DLL che ancora non uso e scritta in VB da una collega)
- Warning level: Level 1*
- Preprocessor definitions: WIN32,NDEBUG,_WINDOWS,_MBCS,_AFXDLL,ADACO
- Project options:
/nologo /MD /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_AFXDLL" /D "ADACO" /Fo"Release/" /TP /c
- Precompiled Headers: Not used

Che dici?...

oregon
01-08-2006, 10:57
Prova con



CreateWindowEx(0, "PROVA", fullId, WS_CAPTION|WS_SYSMENU, 0, 0, hRes, vRes, NULL, NULL, (HINSTANCE)hInstance, NULL )

adaco
01-08-2006, 13:13
Grazie OREGON davvero era proprio questo :) ...
Ma la risposta l'ho trovata prima su GOOGLE GRUPPI cercando con "createwindow Conversion from 'void*' to pointer to non-'void'" a questo indirizzo: http://groups.google.it/group/comp.os.ms-windows.programmer.win32/browse_thread/thread/ddb41dfbcc3400c8/53483ac00d82cc70%2353483ac00d82cc70

Non avevo visto la tua risposta perchè non ero stato avvisato del tuo ultimo post... In ogni caso grazie davvero... Quello che fa incazzare :jam: è aver perso giorni per poi scoprire che in realtà non era il parametro 11 a non andare ma bensì il 10 :dhò: (e penso che sia sbagliato anche il messaggio: non è cero un CAST a HINSTANCE__ * quello che vuole)

Tu che cosa ne pensi?

adaco
01-08-2006, 14:00
:biifu: Ora però, al momento della chiamata a CreateWindowsEx() schianta con una bella eccezione... Zero feedback :bhò:

oregon
01-08-2006, 14:13
Beh ... mostra tutto il codice che sta attorno alla chiamata ...

adaco
01-08-2006, 14:15
No dai, 'sto giro è colpa mia... C'era un problema nella wndproc di gestione dei messaggi.
Grazie ancora per la disponibilità ;o)

Loading