Error C2664: cannot convert par.11 from void * to struct HINSTANCE__ *...

martedì 01 agosto 2006 - 11.07

adaco Profilo | Newbie

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, [B]NULL[/B] )

Ma al momento della compilazione ottengo il seguente errore:

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

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 [B]CAST esplicito di NULL a 'struct HINSTANCE__ *' o 'HINSTANCE__ *'[/B] non produce risultati
- Ho [B]sostituito a NULL lo 0 ed un tipo CREATESTRUCT (&cs)[/B] ma non c'è stato verso
- Ho provato a compilare mettendo [B]STRICT[/B] nei settings di C/C++ (stò usando il MICROSOFT VISUAL C++): niente da fare
- Ho provato a linkare la [B]<windef.h>[/B] 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 :) ...

Brainkiller Profilo | Guru

>- Ho capito che, al contrario del C (ambiente dal qual preovengo
>ma essendo passato dal Java), il C++ non CASTIZZA in automatico
>il VOID *

Se mai CASTA ... come Letizia castizza non l'ho mai sentito.

>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

La differenza è che con la CreateWindowEx() puoi usare gli extended style. Diciamo è una versione aggiornata e revisionata della CreateWindo() e al passo con gli OS + recenti.

>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 :) ...

L'unica cosa che ti posso consigliare, perchè il VC++ + Win32 è un bel casino è, se non hai esperienza, prenderti qualche bel manualotto sulle Win32 da 1000 pagine e studiartelo.
Ciao


David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

adaco Profilo | Newbie

>Se mai CASTA ... come Letizia castizza non l'ho mai sentito.
Ammetto che il richiamo alla famosa suona meglio (anche se poi, non mi sembra poi tanto CASTA) ma volevo... Diciamo così... Creare un neologismo

>La differenza è che con la CreateWindowEx() puoi usare gli extended style. Diciamo è una >versione aggiornata e revisionata della CreateWindo() e al passo con gli OS + recenti.
Immaginavo ma... Grazie per l'informazione

>L'unica cosa che ti posso consigliare, perchè il VC++ + Win32 è un bel casino è, se non hai >esperienza, prenderti qualche bel manualotto sulle Win32 da 1000 pagine e studiartelo.
>Ciao
ah ah ah Se volevi spaventarmi non ci sei riuscito!!! Provenendo dall'ANSI C casini ne ho visti tanti e ho preso talmente tante tranvate che alla fine o sopravvivi o muori... Io, per fortuna, ho scelto di sopravvivere! Infatti, da buon Cista (si dice così? Caso mai ti "regalo" un'altro neologismo ah ah ah) ho capito che qualcosa non tornava da parte del compilatore e ho trovato da qualche parte per caso su web qualcuno che suggeriva di concentrarsi sul 10° parametro e non sull'11°!!! Infatti il segreto era CASTare hinstance che è un HANDLE a HINSTANCE ed il compilatore non si incazza più!!! Non ho capito il giro ma così funziona quindi... Va bene.
Grazie davvero per l'interessamento e... Alla prossima!!!

Brainkiller Profilo | Guru

>ah ah ah Se volevi spaventarmi non ci sei riuscito!!!
>Provenendo dall'ANSI C casini ne ho visti tanti e ho preso talmente
>tante tranvate che alla fine o sopravvivi o muori...

L'ANSI C in confronto non è niente. Lo può imparare anche un bambino alle scuole media. L'unica cosa un po' complessa sono i puntatori e l'aritmetica dei puntatori.

Il C++ è decisamente più avanzato, con classi, oggetti, ereditarietà, ecc.

Il Visual C++ è ancora di più visto che è C++ + tutto lo stack di funzioni Win32 che sono qualche migliaio e poi se programmi per Windows anche le MFC altro pacco.

Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

adaco Profilo | Newbie

Premesso che sono convinto che nel nostro lavoro non si è mai finito di imparare (come dalla vita del resto) ti assicuro che l'ANSI C mi ha insegnato un bel po' di cose che poi mi sono servite per tutti gli altri linguaggi che ho incontrato Java compreso...

P.S: La risoluzione del problema in oggetto, ad esempio, non sarebbe stata scritta in nessun manuale al mondo e mi fa piacere pensare che derivi dalla forma mentis "regalatami" dall'ANSI C... Posso sbagliare ma preferisco mantenere questa mia visione, se vuoi anche un po' "romantica", del mio lavoro

Brainkiller Profilo | Guru

>Premesso che sono convinto che nel nostro lavoro non si è mai
>finito di imparare (come dalla vita del resto) ti assicuro che
>l'ANSI C mi ha insegnato un bel po' di cose che poi mi sono servite
>per tutti gli altri linguaggi che ho incontrato Java compreso...

Io non ho detto questo, lo stai dicendo tu.

Io ho detto solo che apprendere l'ANSI C rispetto ad altri linguaggi come Visual C++ è decisamente più facile. Non ho detto che imparare l'ANSI C non serve a niente.

Ciao


David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5