First, my project is too large and I don't want to go and replace everything with OpenFileName(). Second, when I have to define _WIN32_WINNT to 0x0501 because I need it to use other functions that are define like #if (_WIN32_WINNT >= 0x0500) //here is the function #endif so OPENFILENAME will have the extra three data members. If Platform SDK provides me this (actually) new structure doesn't it also provide the necessary lib? Because of my settings it should try to link first to SDK libs and only after (if not found) to VS6.0 old libs.