Now it is the time to move from Windows to cross-platform, as a developer.
I was using Visual Studio Express Edition (freeware) for Windows development. Now I am using MinGW with MSYS. Cause GCC is a cross-platform compiler. Familiar with GCC allows me to develop cross-platform application. There are a lot of software libraries can be compiled with MinGW.
Using Visual Studio Express Edition, we do not have MFC for GUI development. However we can use Win32 API to create the GUI widget. But this indicates that our source code is highly depending on Windows platform. There are a lot of alternatives for GUI development, such as GTK+, Qt, wxWidget, FLTK, etc. Why using these libraries? If you are depending on these libraries, if these libraries are cross-platform, then your source code will be cross-platform also.
To replace DirectShow, we can use GStreamer. To perform 3D Computer Graphics, we can use OpenSceneGraph, OGRE, Irrlicht, OpenSG, PLIB, instead of using Direct3D. We can use Audiere and OpenAL to play the audio instead of using DirectSound. To enumerate joystick, we can use OIS, SDL, FreeGLUT, etc. To perform networking, we can use Boost Asio library.
With these libraries, I do not need Visual Studio as before. I even can write cross-platform application using C and C++ just like Java (but C and C++ source code needs to be compiled on different platforms). C and C++ even allows me to add in other scripting language like Python, Lua, Ruby, and Tcl. Even C and C++ can also interoperate with Java.