All GUI libraries have four basic areas of functionality:
Creation of user interface “controls” or components such as scrollbars, buttons, and labels.
Support for giving behavior to the controls by tying GUI events (like clicking on a button) to code that you write.
Support for grouping and arranging the controls on the screen.
Support for accessing window manager facilities like specifying which window has the input focus, reading JPEG and other image files, and printing.