MFC was the way to write real Windows applications until .NET came around.
Visual Basic was mostly used by not so skilled developers, creating applications that IT department had to take care of, sometimes rewriting them into MFC ones.
Delphi and C++ Builder were the only solid alternatives outside Microsoft world, but thanks to the way they drove prices upwards and the identity crisis from Borland, most developers went away to Microsoft products, as the platform is always a safer better for development tools.
As I mentioned, since Windows Vista all new API are COM, and UWP, which is the future of the platform is COM as well.
UWP is what .NET was supposed to be initially, COM+ Runtime, just that UWP uses .NET metadata instead of COM type libraries and allows for real instances, not only interfaces.
COM is a first class type in .NET given its original design, many of the .NET APIs are COM objects underneath, including the whole CLR native APIs.
Drivers written in C++ on XP only by adventurous coders with their own compilers or hacks somehow, as Visual C++ only supports kernel mode since Windows 8.
> It doesn't really need to change, opening a file is not different now than a decade ago
Actually it has changed.
OpenFile() has been deprecated and replaced by CreateFile(), which was superseded by CreateFile2().
And on Windows 10, CreateFileFromApp() and CreateFile2FromApp() should be used instead, otherwise the application won't run from the store.
And if you want to use any of the goodies from Windows 8 onwards, they are only available as UWP APIs.