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:

  1. 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.
  2. Active Desktop Enabled: The operating system generated a hidden HTML wrapper file named deskbase.htm inside the Windows directory. This file referenced the chosen media file via standard HTML <img> tags or CSS background properties. The Trident rendering engine then parsed deskbase.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.