È deprecated perché è stata introdotta quella nuova, ma fatto sta che quella nuova è supportata solo da Vista in su, per cui se vuoi supportare ancora XP (tuttora diffusissimo) non hai alternative.Originariamente inviato da gianvituzzi
ma quella funzione è deprecated comeleggo dal sito...
Non puoi forzare un bel niente, una PWSTR è di fatto un wchar_t *, ossia una stringa Unicode che non puoi trasformare in ANSI con un semplice cast; per cui:come posso forzare un casting per portarla da PWSTR a semplice char * ??
- o usi Unicode in tutta la tua applicazione (opzione consigliata, sono stufo di vedere in giro applicazioni Windows che ancora usano i char * e si incasinano se un percorso contiene caratteri stranieri);
- o usi i generic text mappings, avendo cura di impostare nelle proprietà del progetto Unicode come codifica predefinita (opzione di fatto equivalente alla precedente ma da me preferita per una serie di altri motivi);
- oppure converti (non è un cast, è proprio una conversione carattere per carattere) la stringa Unicode in ANSI utilizzando o l'apposita funzione della CRT (wcstombs), o l'equivalente API di Windows (WideCharToMultiByte). Tuttavia ti sconsiglio fortemente di usare questo approccio, specialmente con i percorsi di file, visto che non tutti i caratteri Unicode possono essere convertiti in ANSI, per cui ti potresti ritrovare con un percorso pieno di punti di domanda al posto dei caratteri non convertibili.
Qui una spiegazione un po' più approfondita della questione ANSI/Unicode.