There are at least 2 you can get. One is for the Cygwin Unix/Linux environment and requires the Cygwin runtime support. The other is MinGW. Below are their web sites where you can freely download them and get appropriate documentation.
They both work well. I used to use cygwin for Linux/Unix development on my Windows workstations (I only use Linux and Unix for that now). MinGW is more appropriate for cross-platform development where you want to deliver Linux applications on Windows to people who may not want to install the cygwin runtime.
Definitely, Code::Blocks is recommended. It's the easiest one to download-install-setup-use with gcc (you should be able to pretty much compile and run a hello-world program within the minute following the install).
As for GCC, the stable recent versions are good. I think the current release of CodeBlocks comes with GCC 4.4, but the latest stable release is 4.5.2. I think that 4.4 should do fine if you are not doing heavy work or playing around with C++0x. If you are doing heavy work, it might be worth the trouble installing the latest MinGW (with GCC 4.5.2) separately from CodeBlocks (the version not packaged with MinGW), this is because there are significant compilation speed improvements between 4.4 and 4.5. Finally, if you are playing around with C++0x, then you would have to pretty much get the latest possible compiler there is (i.e. 4.6.0 or 4.7.0 (exp)) and compile from source (but they are not very stable, so you have to keep an earlier, stable version too for production code).
For Each ctrl As Control In Me.Controls("pnlMainPanel").Controls
If ctrl.GetType Is GetType(System.Windows.Forms.Panel) Then
For Each subCtrl As Control In ctrl.Controls
If subCtrl.GetType Is GetType(System.Windows.Forms.TextBox) Then
If subCtrl.GetType Is ...