Ma perché continui a proporre la domanda senza rispondere a quanto ti si dice?
Perché continui a mischiare codice managed .NET e codice nativo che usa le API?
Così avrai sempre errori
Se utilizzi un progetto managed, allora utilizza OpenFileDialog
(di cui trovi documentazione in http://msdn.microsoft.com/it-it/libr...openfiledialog(v=vs.80).aspx )
e in questo caso non devi usare quel codice che hai mostrato perché non è adatto.
Se utilizzi le API native (GetOpenFileName) il codice va bene ma non devi creare un progetto managed.