The Win32 port of GTK+ is a work in progress, and not as stable or correct as the Unix/X11 version. For more information about the Win32 port, and prebuilt runtime and developer packages see http://www.gimp.org/win32/ . There is a gtk-1-3-win32-production branch of GTK+ that was branched off from before the addition of the no-flicker and other recent functionality. That is what should be used by "production" code until this CVS HEAD (2.0) version is useable. (But note, the Win32 backend has never been claimed to be "production quality", although it works surprisingly well for the GIMP.) Building GTK+ on Win32 ====================== There are two ways to build GTK+ for win32. 1) Use the autoconf-generated configure script, and the resulting Makefiles (which use libtool and gcc to do the compilation). I use this myself, but it might be hell to setup correctly. Personally I run configure with: CC='gcc -mpentium -fnative-struct' CPPFLAGS='-I/target/include' CFLAGS=-O2 LDFLAGS='-L/target/lib' ./configure --disable-static --prefix=/target --with-gdktarget=win32 --with-wintab=/src/wtkit126 --with-ie55=/src/workshop/ie55_lib --host=i386-pc-mingw32 Then, in theory, you can just say "make", like on Unix. In reality, there are a few hickups that require manual intervention, and it's best to run make separately in each subdirectory. At least for me, when libtool creates an .exe file, it puts the real .exe in the .libs directory, and leaves a wrapper .exe in the work directory. For some reason that wrapper doesn't work for me, it doesn't do anything. So, I always do a "cp .libs/*.exe ." after running a make that has produced some exes. Another issue is with the gdk-pixbuf.loaders file. It's probably best to do a "make install" in the gdk-pixbuf directory, and let that set up a mostly correct gdk-pixbuf.loaders in the target directory. Then copy that back to the source directory. It's needed in gtk/stock-icons where make runs gdk-pixbuf-csource. Etc, you get the idea. It can be a bit of a pain. 2) Use the Microsoft compiler, cl and Make, nmake. Say nmake -f makefile.msc in gdk and gtk. Be prepared to manually edit various makefile.msc files, and the makefile snippets in build/win32. Alternative 1 also generates Microsoft import libraries (.lib), if you have lib.exe available. It might also work for cross-compilation from Unix. Note that I use method 1 myself. Hans Breuer has been taking care of the MSVC makefiles. At times, we disagree a bit about various issues, and for instance the makefile.msc files will not produce identically named DLLs and import libraries as the "autoconfiscated" makefiles and libtool do. If this bothers you, you will have to fix the makefiles. Using GTK+ on Win32 =================== To use GTK+ on Win32, you also need either one of the above mentioned compilers. Other compilers might work, but don't count on it. Look for prebuilt developer packages (DLLs, import libraries, headers) on the above website. Multi-threaded use of GTK+ on Win32 =================================== Multi-threaded GTK+ programs might work in special simple cases, but not in general. Sorry. If you have all GTK+ and GDK calls in the same thread, it might work. Otherwise, probably not at all. Possible ways to fix this are being investigated. Wintab ====== The tablet support uses the Wintab API. The Wintab development kit can be downloaded from http://www.pointing.com. Pass the --with-wintab flag to configure if you use that. If you use nmake and you don't care for Wintab, undefine HAVE_WINTAB in config.h.win32 and remove references to the wntab32x library from the makefile before building. Libintl ======= Before building GTK+ you must also have GNU gettext. Get prebuilt binaries of gettext-runtime (0.12.1 or newer) from your nearest GNU ftp mirror. If you use gcc, you will also have to edit the libintl.h file from gettext a tiny bit: Change the # if __GNUC__ >= 2 && !defined __APPLE_CC__ && (defined __STDC__ || defined __cplusplus) line to # if __GNUC__ >= 2 && !defined __APPLE_CC__ && !defined __MINGW32__ && (defined __STDC__ || defined __cplusplus) around line 102. If you use libtool, you will also have to copy intl.lib to libintl.a so that libtool will find them. Alternatively, use pexports and dlltool to generate a gcc import library. ActiveIMM ========= If you want to build a GTK+ that supports ActiveIMM (the Input Method Manager for non-EastAsia locales that can be used on Win9x/NT4), you need the dimm.h header file. That is somewhat difficult to find, but http://msdn.microsoft.com/downloads/samples/internet/wizard/ seems to be a good place to look nowadays. If you use "autoconfiscated" build, pass the --with-ie55 flag to configure specifyin the location of the ie55_lib directory created by downloading the IE5.5 headers and libs from the above URL. --Tor Lillqvist