This is optional section for those who develops Windows application

If you are running Linux, you only have one executable type, but in Windows apparently you can have two types of executables: Win32 Console and Win32 Application. The Win32 console will always spawn the Windows console before running the game, and you will end up with the shell / command prompt Window underneath your game. Therefore we use the Win32 Application for our game to get rid of the console window.

However, using Win32 Application type, we are no longer be able to use the standard main function
int main(int argc,char *argv[]) {
  // Empty 
  return 0;
}

We need to use the Win32 WinMain(), like this:
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR, int) {
  return 0;
}


Hence, to maintain compatibility between Ubuntu/Linux and Windows version, the main.cpp was coded as below:
/* 
 * The main file for Boring Sudoku
 *
 * Note that under VC2012, the program is set as Win32 application so it won't
 * spawn console every time it started. Under GCC (Linux / MingGW), keep it 
 * using standard main as usual
 */
#ifdef _WIN32            /* WIN32 platform specific (WinXP, Win7) */
#ifdef _MSC_VER          /* MS Visual Studio specific (including express 
                          * edition) 
                          */
#include <Windows.h>
#endif
#endif 

#ifdef _WIN32            /* WIN32 platform specific (WinXP, Win7) */
#ifdef _MSC_VER          /* MS Visual Studio specific (including express 
                          * edition) 
                          */
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR, int) {
#endif
#else /* Win32-MinGW / Linux / etc */
int main(int argc,char *argv[]) {
#endif
    return 0
}