Cygwin will provide a posix like enviroment, from where most part of applications targeted to it can be compiled to a win32 executable. Of course, this will require an extra layer of abstraction, responsible to "translate" posix stuff to win32 equivalents, so that win32 executables can be made from posix code. This said, this layer is present in the cygwin1.dll, which is used in every cygwin compiled code. If you distribute a software compiled with cygwin you will have to distribute the dll, and be (I am not sure here) bound to its licensing terms. The software iis expected to be a little slower than a pure win32 one. But please understand that cygwin is only needed to allow software written using posix stuff to be compiled on windows. Mingw is the minimalist gnu for windows. It won't provide posix compatibility, it is a win32 compiler, like any other win32 compiler. While cygwin allows software written to run on *nix to be compiled and executed on windows, using a compatibility layer, mingw will compile code written to be compiled on windows, like vc does. Ence, you aren't dependant on any layer, dll or licensing stuff when you use mingw. This said, there're no big differenses in using mingw or other c++ compilers to develope pure C or c++ win32 stuff. Mingw, like most if not all pother c++ compilers for wiindows, will allow you to use all features of the c++ language plus will provide you with access to the windows platform sdk. Mingw will run on a bigger variety of windows versions, though. Paid versions of vc will include atl and mfc, so if you're dependant on these microsoft collections you will need to use vc. The vc express, however, doesn't support mfc or atl. Marlon -- When you say "I wrote a program that crashed Windows," people just stare at you blankly and say "Hey, I got those with the system, for free." Linus Torvalds __________ View the list's information and change your settings at //www.freelists.org/list/programmingblind