What Rendered Window Controls in Windows 3.11
In Microsoft Windows 3.11, the graphical user interface relied on
three foundational dynamic-link libraries: KRNL386.EXE, GDI.EXE, and
USER.EXE. Among these, the USER component
(USER.EXE) was the specific system module
responsible for rendering window control buttons, title bars, and
borders. While the Graphics Device Interface (GDI) supplied the
underlying drawing primitives, USER.EXE contained the high-level logic,
state management, and built-in routines required to display standard
window frames across the operating environment.
The Role of USER.EXE and the Non-Client Area
In the Windows architecture, a standard window is divided into a client area (where an application draws its content) and a non-client area. The non-client area includes the outer window borders, the sizing frame, the title bar, the maximize/minimize buttons, and the system menu box.
USER.EXE handled the creation and management of all on-screen
windows. Whenever a standard window needed to be updated, USER.EXE
dispatched non-client window messages, most notably
WM_NCPAINT. If an application did not provide custom code
to override this behavior, the message was directed to
DefWindowProc (the default window procedure), which lived
entirely inside USER.EXE.
Separation of Responsibilities: USER vs. GDI
While USER.EXE dictated what to draw and when, it did not directly talk to the video hardware:
- USER.EXE managed the interface layout, tracked button states (such as active, inactive, and pressed), and determined the coordinates for each decorative element. The tiny vector shapes and bitmaps representing the minimize/maximize arrows and the system menu minus sign were internal assets and procedural routines defined within the USER library.
- GDI.EXE (Graphics Device Interface) provided the actual rendering mechanics. When USER.EXE processed a window frame, it called GDI functions to draw solid lines, fill colored rectangles (such as the active title bar color defined by the user's color scheme), and transfer bitmaps to the screen via the active display driver.
By centralizing non-client frame rendering within USER.EXE, Windows 3.11 ensured that window controls, resize handles, and frame borders behaved consistently across all running 16-bit software.