First thing is as you would like to have a window program with GUI you need to have the differently done the Gui for each OS. The business logic can be same for each of them. For Windows you can refer to Seperate resource into a seperate DLL .

When I say "portable code" I am referring to source portability. Ultimately, the code is turned into machine language for a specific microprocessor type. That code will not run on another microprocessor unless that microprocessor is solidly compatible with the original type. That is a very, very rare circumstance.

Source portability means that you can take your source code to another machine and compile it there. The new, correct machine code will then be emitted.

Even when machines have the same microprocessor, the code may not be portable. There are implementation-specific ways to talk to the hardware. One keyboard is not like another. One display is not like another. This is why our machines have very specific drivers. If your compiler does not have access to the means of correctly addressing these drivers, the code will not be portable.

Languages are not built to address specific sets of hardware and OSes. They are built to solve common problems. They address SPECIFIC issues only because the language writers have written NONSTANDARD libraries which deal with all that.

Bottom line: take "explorer.exe" from a Windows machine and try to run it on a Mac. At best, it just won't work. At worst, it may turn the machine into a molten slag heap. Don't bill me for the damage: you have been warned.

I have already written software which has almost no differences in the C source code between the linux and windows versions, I then compile it using GCC on linux, and GCC MinGW for windows. I have yet to write any programs for Mac, I dont even own one (or installed MacOS on a PC).

Back to the original notion, could you elaborate on the OpenGL concept for creating a skinned GUI.

Sorry, I shall explain better, I am definitely not wanting people to do work for me.

I was just wandering if you could give a general idea.

For exaple, as I understand, would I have to create a load of bitmaps, then use openGL's 2D drawing capabilities to draw them to screen, then maybe use some function in the Glut Libary to define an invisible button over the graphic.

Then, how would I hide the standard frame, that is the window thing in windows or linux that encapsulates the contents of the window.