The problem you are having is probably using Multi-Byte characters in a Unicode build. If that is the issue, you may be able to solve it by setting your project to use Multi-Byte characters instead. (I believe MFC will switch between the types appropriately, but I'm not sure because I've never used MFC.)
That isn't the recommended solution, though. It would be better to rewrite it as Unicode, specifically, this line:
CFileDialog dlg( TRUE, NULL, NULL, 0,
(_T("Class Schedule Config Files (*.cfg)|*.cfg|All Files (*.*)|*.*|")), this );
That should fix it. Unicode is recommended because that is what Windows uses under the hood, and no conversions will be required.
Another approach, if you really want to force it in (which isn't suggested either) is to use WideCharToMultiByte to create another string from the one I placed the "_T" in front of. You would have to set up a variable, and do more work. But again, that wouldn't be a recommendation - it's just for knowledge purposes.
Happy coding!
David