How Windows 98 Handled Wallpapers and HTML Desktops
This article examines the architectural mechanisms Microsoft Windows 98 used to display desktop backgrounds, detailing the transition from traditional bitmap rendering via the Graphics Device Interface to dynamic HTML backgrounds powered by Active Desktop and Internet Explorer components.
Classic Wallpaper Rendering via GDI
In standard configurations, Windows 98 handled wallpaper rendering
through the core Win32 subsystem and the Graphics Device Interface
(GDI). The desktop itself was represented by a top-level window class
known as Progman (Program Manager), which contained a child
window named SHELLDLL_DefView that hosted the standard list
view control (SysListView32) for desktop icons.
For conventional backgrounds, Windows 98 natively supported only
device-independent bitmaps (.bmp). When a user selected a
bitmap wallpaper, the shell retrieved the image path from the registry
key HKEY_CURRENT_USER\Control Panel\Desktop\Wallpaper. The
system read the file, converted it into a GDI bitmap handle, and drew it
directly onto the desktop window's device context whenever a
WM_ERASEBKGND or WM_PAINT message was
received. Positioning options—center, tile, and stretch—were calculated
mathematically prior to blitting the pixel data to the screen
buffer.
The Introduction of Active Desktop
With Windows 98, Microsoft deeply integrated Internet Explorer 4.01 into the operating system, introducing Active Desktop. This feature fundamentally altered the shell architecture, allowing users to display native web pages, dynamic HTML, JavaScript, Java applets, and web formats like JPEG and GIF directly on the desktop without manual conversion to BMP.
Active Desktop functioned by inserting an embedded instance of the
Trident layout engine (mshtml.dll) into the desktop window
hierarchy. Instead of painting static pixels directly to the background
device context, the shell created an
Internet Explorer_Server window positioned immediately
beneath the icon layer. This hosted web browser control acted as a fully
functional browser canvas that intercepted rendering calls and processed
standard DOM elements.
Image Conversion and Local HTML Generation
When a user selected a modern image format such as JPEG or PNG while Active Desktop was enabled, Windows 98 processed the selection differently depending on system state:
- Active Desktop Disabled: If the user attempted to
apply a non-BMP image without Active Desktop, the system automatically
converted the image into a bitmap format, saved it locally as
Active Desktop Wallpaper.bmp(or inside the user profile directory), and routed it through the standard GDI pipeline. - Active Desktop Enabled: The operating system
generated a hidden HTML wrapper file named
deskbase.htminside the Windows directory. This file referenced the chosen media file via standard HTML<img>tags or CSS background properties. The Trident rendering engine then parseddeskbase.htm, utilizing the system's installed image decoders to render the graphics directly on the screen.
Resource Costs and System Overhead
Because the Windows 9x architecture shared fixed 64 KB memory heaps for User and GDI resources, hosting a live web browser instance on the desktop imposed significant overhead. Rendering complex HTML or animated media required persistent allocations for JavaScript execution contexts, ActiveX controls, and Trident layout calculations.
To mitigate performance degradation, Windows 98 suspended script execution and certain animations when full-screen applications or foreground windows obscured the desktop. However, the system overhead of running the HTML-based rendering layer led many users on memory-constrained hardware to disable Active Desktop entirely in favor of the lightweight, direct GDI bitmap approach.