Oggi mi sono imbattutto in un articolo molto interessante e sintetico sulle novità del Visual C++ nel prossimo Visual Studio 2008(in inglese), che per chi di voi è interessato vi consiglio di leggere.

Due le aree trattate:

  1. Supporto per lo sviluppo di applicazioni in Windows Vista. Applicazioni che vogliono avere il "look" di un'applicazione alla Windows Vista e applicazioni che interagiscono con lo User Account Control (UAC)
  2. Supporto per lo sviluppo di applicazioni C++ che interagiscono con il CLR: marshaling di tipi nativi e tipi CLR, etc

Oggi se si vuole realizzare un'applicazione con il look di Vista e non si vogliono utilizzare direttamente le API native del sistema operativo, si ha la possibilità di utilizzare "Vista Bridge", che si trova nel Windows SDK e che, in buona sostanza, è una serire di Wrapper, di esempio, su alcune delle nuove API che sono, così, rese disponibili al mondo .NET. Per chi è interessato può dare uno sgurdo a questa presentazione e a questo post, in cui in parte parlo di Vista Bridge. Il nuovo VC++ ha esteso le MFC per aggiungere il supporto ai nuovi elementi della User Interface(UI) e ai temi di Vista: Common File Dialog, Windows trasparenti, Common Link Control, etc.  La cosa interessante è che se creiamo, ad esempio, una FileDialog su Vista viene visualizzata con il nuovo look, mentre se la stessa applicazione viene fatta girare su un'altro sistema operativo, come 2000, viene visualizzata nel "vecchio modo". Un'applicazione già compilata con la versione precedente delle MFC, invece, presenta la Dialog tradizionale anche su Vista. Così è comunque possibile usare le nuove MFC e forzare il look tradizionale anche su Vista, impostando un opportuno parametro ( i dettagli li trovate nell'articolo segnalato).

Una delle maggiori nuovità per la sicurezza in Vista rigurada lo UAC, che consente alle applicazioni di girare con i privilegi minimi richiesti, anche se l'utente che si è loggatto alla macchina, e il cui account sta facendo girare l'applicazione, appartiene al gruppo degli amministratori. Una applicazione che vuole a pieno sfruttare l'UAC e funzionare nel modo più consono all'applicazione stessa deve avere un manifest opportuno. In Visual Studio 2008 esiste un nuovo switch per il linker che permette la generazione automatica del manifest. Il comportamento di default impostato nel manifest è "As-Invoker", cioè l'applicazionie gira con i privilegi (token di sicurezza) del processo che l'ha lanciata.

image 

Per chi ha avuto modo di utilizzare il C++ "mixando" tipi nativi e tipi CLR, usando ad esempio il C++/CLI in Visual Studio 2005, o le precendenti Managed Extensions for C++, si sarà sicuramente imbattuto nelle problematiche di marshaling tra tipi nativi e tipi CLR, in particolare per le stringhe. Guardate i file marshal*.h in "C:\Program Files\Microsoft Visual Studio 9.0\VC\include\msclr". In Visual Studio 2008 è stata aggiunta una libreria di marshaling per i tipi più comuni di stringhe. Nell'articolo che vi ho segnalato vengono poi puntalizzate altre novità per chi sviluppa usando il CLR dal VC++.

Buona lettura.