Para que te aparezca una ventana para seleccionar un fichero, debes utilizar la función GetOpenFileName().
Si lo que quieres es explorar un directorio, debes utilizar SHBrowseForFolder(). Es la ventana en la que sólo aparecen carpetas.
Te pongo un ejemplo de la primera:
OPENFILENAME ofn={0};
char Nombre[MAX_PATH] = {0};
char DirInicial[MAX_PATH];
wsprintf(DirInicial, "C:\WINNT");
ofn.lStructSize=sizeof(OPENFILENAME);
ofn.hwndOwner=hDlg;
ofn.lpstrFilter="Archivos JPEG\0*.JPG\0Archivos GIF\0*.GIF\0Todos los archivos\0*.*\0";
ofn.lpstrFile=Nombre;
ofn.nMaxFile=MAX_PATH;
ofn.lpstrInitialDir=DirInicial;
ofn.lpstrTitle="Buscar ficheros gráficos";
ofn.Flags=OFN_LONGNAMES|OFN_NOCHANGEDIR|OFN_NONETWORKBUTTON|OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST;
if (GetOpenFileName(&ofn)) {
/* el usuario ha aceptado */
} else {
/* el usuario ha cancelado */
}
Un saludo.