Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Salve a tutti !Sto leggendo un tutorial sulle windows api ma gia' al primo programma trovo delle difficoltà!
Nell'effettuare una chiamata a MessageBox ricevo un errore :
error C2664: 'MessageBoxW': impossibile convertire il parametro 2 da 'const char [14]' a 'LPCWSTR'
Il prg facilissimo è questo :
Codice sorgente - presumibilmente C/C++
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst,LPSTR lpCmdLine, int nCmdShow)
e sostituendola nel programma funziona anche da me!
Quindi ho tre domande:
1) perché il primo metodo (praticamente copiato da internet) non funziona?
2) perché nell'errore viene citata MessageBoxW e non MessageBox
3) nel cast che significato ha quella L e perché questa L va attaccata alla stringa mentre se la stacco con uno spazio mi da un errore?
Sono domande "importanti", me ne rendo conto, ma spero che mi rispondiate lo stesso!
Cioa
Ultima modifica effettuata da dacanalr il 24/07/2009 alle 13:54
evidentemente il progetto che hai creato(penso con visual studio) ha come settaggio predefinito di usare le stringhe come wchar_t *
da questo deriva che alla messagebox devi passare un argomento di quel tipo e non un normale char *
Te lo dice il compilatore stesso... MessageBoxW significa che il tuo compilatore sta chiamando la messagebox che prende in ingresso parametri con wchar_t (infatti termina per W)
invece di fare i cast potresti o usare sempre le wchar_t oppure andare nelle proprietà del progetto e cambiare da stringhe unicode a Multibyte array
Perfetto, ho provato e funziona!
Pero' sono riuscito a trovare quella opzione facendo Progetto->Proprietà di MioProgetto
Esiste un metodo per impostarlo come default?
ciao
Ultima modifica effettuata da dacanalr il 24/07/2009 alle 15:13
Quindi ho tre domande:
1) perché il primo metodo (praticamente copiato da internet) non funziona?
2) perché nell'errore viene citata MessageBoxW e non MessageBox
3) nel cast che significato ha quella L e perché questa L va attaccata alla stringa mentre se la stacco con uno spazio mi da un errore?
2) Perchè MessageBox carica una funzione delle dll di windows che in esse si chiama MessageBoxW
3) Perchè la conversione al formato corretto richiede una conversione prima a Long e poi nel formato usato