Überprüfe die Compilereinstellungen, es sieht so aus, als würdest Du mit
Unicode-Einstellungen übersetzen. Ändere das zu ANSI, dann sollte es
gehen.
Wobei bei rein lesendem Zugriff der Umweg über CString::GetBuffer nicht
nötig ist, CString kann direkt anstelle von char* verwendet werden, so
daß Du anstelle von
filenamechar=filename.GetBuffer(filename.GetLength());
fp=fopen(filenamechar,"rb");
einfacher schreiben kannst
fp=fopen(filename,"rb");
Du solltest Dir noch mal Gedanken über Deinen Programmablauf machen -
filename änderst Du, wenn der Dialog mit OK beendet wird. Aber darauf
zugreifen tust Du auch, wenn der Dialog nicht mit OK beendet wird,
also filename nur durch den Default-Konstruktor von CString
initialisiert wurde.
Ist es nicht sinnvoller, den die Datei öffnenden Code nur dann
auszuführen, wenn der Dialog mit OK beendet wurde?