A few years back, I wrote some util library around DShow/DSound to let me play MP3s in a Windows C++ application. Is that still the normal way to do it in a C++/MFC app, or
You could have a look at BASS. It's a simple to use audio library, free for noncommercial use.
You can either use DirectShow but it's not part of DirectX anymore or rely on a third-party library like Bass, FMod, mpg123 or even libwmp3.
If you don't want to use DirectShow anymore (but why change if your existing code keeps working?), you can use MCI:
mciSendString("open la_chenille.mp3 type mpegvideo alias song1", NULL, 0, 0);
mciSendString("play song1", NULL, 0, 0);
mciSendString("close song1", NULL, 0, 0);
If you don't want to pay any licence and wanna do in-house, do the parsing of your mp3 file and pass it to XAudio2. Its a thing that you can do once (2-3 hours at max) and use always. :P
This is an easy way to play any audio file: http://msdn.microsoft.com/en-us/library/dd390090(VS.85).aspx
PlaySound() natively supports MP3 as long as it is embedded in a WAV file. People don't realize that WAV is a container format.
Download the ffmpeg utilities to convert the header and preserve the codec:
ffmpeg -i input.mp3 -c copy -f wav embedded_mp3.wav
Youc could use MCI windows functions, https://msdn.microsoft.com/en-us/library/ms709626
It can play many of audio file formats including MP3, WAV, MIDI etc.
If I recall correctly it does not require DirectX.
The PlaySound function might also work for you.