1) Должно быть
ofn.lpstrFilter = "All\0*.*\0Text\0*.TXT\0\0";//именно 2 нуля в конце - это признак конца строки (см. MSDN)
2) Что за бред в строке ofn.nMaxFIle? Откуда там 9999?
Виндовсу нужно знать размер массива в TCHAR
Должно быть
ofn.nMaxFile = 200;//размер в TCHAR - сколько навыделяли, столько и указали.
//Можно и попроще что-то вроде
enum {MY_BUFF_SIZE=1024};//ну например 1024 символа зарезервим
TCHAR szBuff[MY_FUFF_SIZE]={0};
ofn.lpstrFile=szBuff;
ofn.nMaxFile=sizeof(szBuff)/sizeof(TCHAR);//размер нужен именно в TCHAR - не забываем делить на размер TCHAR...
3) Не забываем загрузить ComDlg32.DLL — всякие MFC, .NEt как правило уже держат ее в памяти. В чистом WinAPI коде это очень часто не так, и тогда GetOpenFilename возращает по любому FALSE. Часто на этом попадаются...