Examine individual changes

Abuse Filter navigation (Home | Recent filter changes | Examine past edits | Abuse log)

This page allows you to examine the variables generated by the Abuse Filter for an individual change.

Variables generated for this change

VariableValue
Name of the user account (user_name)
'WeBelieveInMagic'
Groups (including implicit) the user is in (user_groups)
[ 0 => '*', 1 => 'user', 2 => 'autoconfirmed' ]
Whether or not a user is editing through the mobile interface (user_mobile)
false
Page ID (page_id)
70255
Page namespace (page_namespace)
0
Page title (without namespace) (page_title)
'Windows GUI'
Full page title (page_prefixedtitle)
'Windows GUI'
Action (action)
'edit'
Edit summary/reason (summary)
'/* History */ '
Old content model (old_content_model)
'wikitext'
New content model (new_content_model)
'wikitext'
Old page wikitext, before the edit (old_wikitext)
'{{Infobox Windows component |name = Windows GUI |screenshot = Windows1-1.04-DesktopIM1024.png |caption = The [[Windows 1.0]] desktop |introduced in = [[Windows 1.0]] }} The Windows GUI is the graphical user interface of [[Microsoft Windows]], first introduced in [[Windows 1.0]] and evolving since then. After Windows 1.0, the Windows GUI served as the inspiration for the [[OS/2]] Presentation Manager, both in the API design and look-and-feel, and they continued to cross-pollinate as they developed in parallel until Microsoft stopped developing OS/2. == History == === Windows 1.0 === The initial version of the Windows GUI debuted in version 1.0. Based on early GUI research by Xerox, which resulted in the PARC computer (which also served as the inspiration for Apple's [[Lisa Office System]] and [[Mac OS]]), the Windows GUI was operated by a mixture of keyboard and mouse, featuring elements that the user could click on, the main elements being: * File: Double-clicking on a filename in the [[MS-DOS Executive]] opens that file * Button: Clicking once on a button performs whatever action the button is designed to do * Scrollbar: By moving the mouse to hover over the scrollbar, holding down the mouse button and moving the mouse will move the scrollbar * Text entry field: By clicking inside of a text entry field, the text entry field then has focus and will receive keyboard input * Menu bar: Click on a menu item and hold down the mouse button to open a menu, then move the mouse over the item you wish to select and then release the mouse button Windows 1.0 featured a tiling window manager, with users unable to position and resize windows any way they wanted, with the windows simply having two buttons; one on the left of the caption bar at the top, which displayed options such as minimizing the window (making it "iconic"; reducing it to an icon on the desktop which one would double click on to restore) or closing it (which could also be accomplished by double clicking the button), while the button on the right could be used to maximize the window (hiding the icons of minimized programs) or restore it back to its previous size. The window manager itself and all of the objects drawn in it are part of <code>USER.EXE</code>, with <code>USER.EXE</code> calling into <code>GDI.EXE</code> to draw, which in turn calls into the display driver. The main shell of the OS is the [[MS-DOS Executive]], which is a simple file manager, displaying a textual list of files in the current directory that can be clicked on and used to launch programs. === Programming Model === ==== Windows and Window Classes ==== To create a window, one must first have a "window class", which is registered with the system and includes information about the type of window that the class refers to, including a handle to its icon, background color, foreground color, and a pointer to its window procedure, as many programs could create multiple instances of the same type of window (for example, multiple buttons that all behave the same). After registering a window class, its name is stored in the string table, and the class can be referred to either by name or by an <code>ATOM</code> returned by <code>RegisterClass</code>, which is an index into the string table. After that, call <code>CreateWindow</code>, specifying the window class, window title, position, size, and style, which, if successful, will return a window handle that can be used for any operation that requires a window. ==== Event Model ==== The Windows GUI is event-driven, meaning that applications typically block until the user interacts with them in some way and the system sends a message to a window. The typical message loop looks like this, where <code>Msg</code> is a <code>MSG</code> structure and <code>hWnd</code> is a window handle: <syntaxhighlight lang="c"> while(GetMessage(&Msg, hWnd, 0, 0) > 0) { TranslateMessage(&Msg); DispatchMessage(&Msg); } </syntaxhighlight> <code>GetMessage</code> blocks until a window message is available from the given window, calling into the kernel to reschedule/yield to the next task if there's no events available, though there is a non-blocking variant known as <code>PeekMessage</code>. <code>TranslateMessage</code> then translates any keystrokes into virtual keycodes, and converts accelerators into the appropriate window messages, and <code>DispatchMessage</code> calls the window procedure to deal with the message. A typical Win32 window procedure looks like this (a Win16 window procedure has the same basic structure, but the type names are slightly different):<syntaxhighlight lang="c"> LRESULT CALLBACK MainWndProc( HWND hwnd, // handle to window UINT uMsg, // message identifier WPARAM wParam, // first message parameter LPARAM lParam) // second message parameter { switch (uMsg) { default: return DefWindowProc(hwnd, uMsg, wParam, lParam); } return 0; } </syntaxhighlight> In other words, the window procedure is passed which message to process, as well as message-specific parameters, and can call <code>DefWindowProc</code> to have the system handle any messages that the application doesn't. Typical window messages include: * <code>WM_PAINT</code>: Part of the client area of the window needs to be redrawn (a call to <code>BeginPaint</code> will provide a device context to use for drawing and a rectangle indicating which portions of the window need to be redrawn) * <code>WM_LMOUSEDOWN</code>: The left mouse button has been pressed down while the cursor is inside of the window (<code>lParam</code> contains the X and Y coordinates of the mouse) * <code>WM_KEYDOWN</code>: A nonsystem key has been pressed down while the window has focus (<code>wParam</code> contains the virtual key code) It's also possible to "subclass" a window, using <code>SetWindowLong</code> (<code>SetWindowLongPtr</code> on 64-bit Windows) to replace its window procedure with a new one, allowing the window's behavior to be changed. In most cases, a subclass window procedure only handles a few messages, and lets the rest be handled by the original window procedure, calling <code>CallWindowProc</code> to let the original handle it. Applications can place messages on the queue of other windows with <code>PostMessage</code>, or even forcibly call their window procedures to handle a message with <code>SendMessage</code>. ==== Common Controls ==== To aid development of software for Windows, <code>USER.EXE</code> includes pre-registered window classes for several commonly-used UI elements such as buttons, text labels, scrollbars, textboxes, checkboxes, and so on. To use one of them, simply pass the class name to a call to <code>CreateWindow</code>, passing the handle of the window it's part of as the parent. Every object in the Windows GUI is itself a window, with a button control for example being a "child window" of the top-level window. When the user clicks on a button, the click message is received by the top-level window's window procedure, which in turn sends the click message to the button, whose window procedure then processes it. Similarly, if the top-level window has to be redrawn, it will then send a <code>WM_PAINT</code> message to its children, which will in turn draw themselves into the client area of the top-level window. ==== Dialog Boxes ==== Dialog boxes are a special type of window that is specified by a template, which can be stored as a resource in the executable file. Two types of dialog boxes are supported; modal dialog boxes, which block program execution until the dialog is finished, and modeless dialog boxes, which use a standard message loop. The event model for dialog boxes is almost identical to regular windows, with the call to create a dialog box first creating all of the sub-windows for the controls, but all dialog boxes share the same window procedure, which in turn calls the provided dialog procedure, which returns FALSE if the dialog is done and should be destroyed. === Windows 2.0 and 3.0 === OS/2's user interface was initially developed from Windows' interface, and in order to maintain a common appearance with OS/2, they were developed in tandem, with both [[OS/2 1.1]] and [[Windows 2.0]] implementing both overlapping, resizable windows. One could click and hold the caption bar of a window to move it around, or click and drag on any edge of the window to change its size in that direction. Each window now has three buttons instead of two; the button on the left is the same as in Windows 1.0, but there are now two buttons on the right; one to minimize a program and the other to maximize/restore. To allow an easy migration path to OS/2, Windows 2.0 also implemented IBM's Common User Access specification for user interfaces. CUA specified many aspects of how the GUI must be navigable with a keyboard, including now-ubiquitous keyboard shortcuts such as ALT-F4 to close a window and ALT-TAB to switch between top-level windows. Menus also now stay open after being clicked on until the user clicks on something else, and the user can cycle between menus with the arrow keys. Windows 2.0 also introduced the Multiple Document Interface, or MDI, which allows multiple windows to live within the client area of one parent window, with similar keyboard shortcuts to those used for top-level windows, except using CTRL instead of ALT. [[Windows 3.0]] further iterated, implementing a more 3D look borrowed from [[OS/2 1.2]], with greater use of color bitmaps, and iconic programs also displaying the window title. Windows 3.0 also adopted a new shell, known as the [[Program Manager]], which featured a structure of "program groups", denoted by both a name and an icon, which in turn had a list of programs contained within, also denoted by a name and icon. Windows 3.0 also introduced a new tree-based graphical [[File Manager]], with both new apps making use of MDI. Windows 3.0 also changed the behavior of ALT-TAB; instead of changing the Z-order with every push of the tab key by bringing the back window front, Windows would simply display the name and icon of the current program in the list which would be brought to front once the user released the tab key. === Windows NT === The user interface for [[Windows NT 3.1]] was largely the same as [[Windows 3.1]], and the window management APIs in Win32 were broadly the same as in Win16, but the architecture was changed. Calls to <code>USER32.DLL</code> (the Win32 successor to <code>USER.EXE</code>) instead go through a Local Procedure Call to <code>WINSRV.DLL</code>, which is the window server in the Windows subsystem server process. In [[Windows NT 4.0]], window management was moved into the kernel-mode module <code>WIN32K.SYS</code>. === Windows 95 and later === [[Windows 95]] once again altered the window management scheme. While the button on the left side of the caption bar still existed, it now displays the program's icon, and the buttons on the right were redesigned to include a close button on the far right, pushing the minimize and maximize/restore to the left. Windows 95 also introduced the [[Windows Explorer]] interface as a replacement for Program Manager and File Manager. Beyond being a superior file manager, it also displays directly onto your desktop, underneath everything, displaying a set of icons corresponding to files in your Desktop folder, as well as useful shell folders such as My Computer and Recycle Bin. Additionally, Windows Explorer introduced the taskbar, which both includes a list of open programs (including minimized ones) the user can click on to bring that window to the front, and the "start menu", which includes a list of useful options for the user, including to shut down their computer, access the control panel, and browse through their program groups. ALT-TAB was further refined to show a list of window icons, which the currently-selected one being visible with its name below. The fundamental core of the Windows shell and window management hasn't significantly changed since then, but there have been incremental changes since then. ==== Windows Desktop Update ==== The Windows Desktop Update was first released with [[Internet Explorer 4.0]] in 1997, and first came with Windows 95 OSR2.5, [[Windows 98]], and [[Windows 2000]], though it can be installed on Windows 95 and [[Windows NT 4.0]] as well. The Windows Desktop Update merged Windows Explorer and [[Internet Explorer]] together, allowing IE to browse shell folders and Windows Explorer to browse the internet, since they both shared a common "Shell Document Viewer" DLL and several COM interfaces. The Windows Desktop Update brought several advancements to the Windows GUI, including browser-style forwards and backwards buttons in the file manager as well as an address bar, and even allowed users to use the Active Desktop feature to display an HTML document as their desktop wallpaper. The Windows Desktop Update also added the Quick Launch feature to the taskbar, which allowed users to pin icons of commonly-used programs between the start button and the list of open programs, clicking on the icons as a shortcut to open the programs. This combination of Windows Explorer and Internet Explorer would continue through [[Windows XP]], with the codebases splitting afterwards for [[Windows Vista]] and [[Internet Explorer 7]], though Vista retained all of the improvements from the Windows Desktop Update. ==== Windows 2000 ==== To enable menus fading in and out, Microsoft added a window style referred to as "layered windows", which rendered to a back buffer and could be composited onto the desktop, though the framebuffer contents below the layered window would be retained to allow for continuous alpha blending without having to redraw the display contents below the layered window. ==== Windows XP ==== Windows XP introduced visual styles, which changed how the nonclient areas of windows are rendered, as well as a new start menu. ==== Windows Vista ==== Windows Vista moved much of the window management on compatible display adapters into the [[Desktop Window Manager]]. Windows Vista made several cosmetic changes to window management, mainly relating to desktop composition: * The non-client areas of windows are rendered with translucency, which can also be extended into the client area of windows that request it * Windows Flip 3D was introduced, which was functionally similar to ALT-TAB, but was triggered via a combination of the Windows and Tab keys, displaying the contents of the windows in a 3D arrangement * When the mouse hovers over a window on the taskbar, it shows a preview of the window contents, and if the mouse remains there long enough, the screen will shift to exclusively show the selected window, with the outlines of other windows visible atop it * ALT-TAB now shows a preview of the window contents ==== Windows 7 ==== [[Windows 7]] introduced the "Superbar"; a redesigned taskbar combining the program list and Quick Launch elements of the old taskbar to feature large icons of programs that could be clicked to open them, and then hovered over to show a list of open windows in that program. The classic Windows 95-style start menu was also removed. ==== Windows 8 ==== [[Windows 8]] removed Windows Flip 3D and window translucency. It also revamped the Windows GUI to make it more tablet-centric, removing the traditional start button and start menu in favor of the Start Screen. [[Windows 8.1]] restored the start button. ==== Windows 10 ==== [[Windows 10]] restored the start menu. == Common Controls and Common Dialogs == The initial version of the Windows common controls were in <code>USER.EXE</code>, containing basic reusable UI elements. Its 32-bit counterpart on [[Windows NT]] is <code>USER32.DLL</code>. By [[Windows 3.1]], it had become apparent that applications were suffering from having to create their own dialogs for operations like selecting a file, which prevented Windows applications from having a uniform appearance. As a result, Windows 3.1 introduced the common dialogs DLL <code>COMMDLG.DLL</code>, which was redistributable to Windows 3.0. Its 32-bit counterpart is known as <code>COMDLG32.DLL</code>. A new set of common controls was released with [[Windows for Workgroups 3.11]] in 1993 as <code>COMMCTRL.DLL</code>, with the DLL being redistributable to Windows 3.1. [[Windows NT 3.5]] brought these controls to the Windows NT family with <code>COMCTL32.DLL</code>. Windows 95 updated these controls, with the changes being brought to [[Windows NT 3.51]], and even backported to Windows 3.1 for Windows 95's setup program. The 16-bit port of the new common controls would then be released as <code>COMCTL16.DLL</code> as part of the 16-bit versions of Internet Explorer. To gain a 3D appearance on Windows 3.1, Microsoft also provided the <code>CTL3D.DLL</code> file (<code>CTL3D32.DLL</code> for Windows NT), which subclassed window controls to draw them with a more 3D, beveled appearance. For Windows XP and later, <code>COMCTL32.DLL</code> provides both Windows 95-style "classic" common controls, and visual-styled controls, depending on whether the application is manifested for Windows XP and later or not.'
New page wikitext, after the edit (new_wikitext)
'{{Infobox Windows component |name = Windows GUI |screenshot = Windows1-1.04-DesktopIM1024.png |caption = The [[Windows 1.0]] desktop |introduced in = [[Windows 1.0]] }} The Windows GUI is the graphical user interface of [[Microsoft Windows]], first introduced in [[Windows 1.0]] and evolving since then. After Windows 1.0, the Windows GUI served as the inspiration for the [[OS/2]] Presentation Manager, both in the API design and look-and-feel, and they continued to cross-pollinate as they developed in parallel until Microsoft stopped developing OS/2. == History == === Windows 1.0 === The initial version of the Windows GUI debuted in version 1.0. Based on early GUI research by Xerox, which resulted in the PARC computer (which also served as the inspiration for Apple's [[Lisa Office System]] and [[Mac OS]]), the Windows GUI was operated by a mixture of keyboard and mouse, featuring elements that the user could click on, the main elements being: * File: Double-clicking on a filename in the [[MS-DOS Executive]] opens that file * Button: Clicking once on a button performs whatever action the button is designed to do * Scrollbar: By moving the mouse to hover over the scrollbar, holding down the mouse button and moving the mouse will move the scrollbar * Text entry field: By clicking inside of a text entry field, the text entry field then has focus and will receive keyboard input * Menu bar: Click on a menu item and hold down the mouse button to open a menu, then move the mouse over the item you wish to select and then release the mouse button Windows 1.0 featured a tiling window manager, with users unable to position and resize windows any way they wanted, with the windows simply having two buttons; one on the left of the caption bar at the top, which displayed options such as minimizing the window (making it "iconic"; reducing it to an icon on the desktop which one would double click on to restore) or closing it (which could also be accomplished by double clicking the button), while the button on the right could be used to maximize the window (hiding the icons of minimized programs) or restore it back to its previous size. The window manager itself and all of the objects drawn in it are part of <code>USER.EXE</code>, with <code>USER.EXE</code> calling into <code>GDI.EXE</code> to draw, which in turn calls into the display driver. The main shell of the OS is the [[MS-DOS Executive]], which is a simple file manager, displaying a textual list of files in the current directory that can be clicked on and used to launch programs. ==== Programming Model ==== ===== Windows and Window Classes ===== To create a window, one must first have a "window class", which is registered with the system and includes information about the type of window that the class refers to, including a handle to its icon, background color, foreground color, and a pointer to its window procedure, as many programs could create multiple instances of the same type of window (for example, multiple buttons that all behave the same). After registering a window class, its name is stored in the string table, and the class can be referred to either by name or by an <code>ATOM</code> returned by <code>RegisterClass</code>, which is an index into the string table. After that, call <code>CreateWindow</code>, specifying the window class, window title, position, size, and style, which, if successful, will return a window handle that can be used for any operation that requires a window. ===== Event Model ===== The Windows GUI is event-driven, meaning that applications typically block until the user interacts with them in some way and the system sends a message to a window. The typical message loop looks like this, where <code>Msg</code> is a <code>MSG</code> structure and <code>hWnd</code> is a window handle: <syntaxhighlight lang="c"> while(GetMessage(&Msg, hWnd, 0, 0) > 0) { TranslateMessage(&Msg); DispatchMessage(&Msg); } </syntaxhighlight> <code>GetMessage</code> blocks until a window message is available from the given window, calling into the kernel to reschedule/yield to the next task if there's no events available, though there is a non-blocking variant known as <code>PeekMessage</code>. <code>TranslateMessage</code> then translates any keystrokes into virtual keycodes, and converts accelerators into the appropriate window messages, and <code>DispatchMessage</code> calls the window procedure to deal with the message. A typical Win32 window procedure looks like this (a Win16 window procedure has the same basic structure, but the type names are slightly different):<syntaxhighlight lang="c"> LRESULT CALLBACK MainWndProc( HWND hwnd, // handle to window UINT uMsg, // message identifier WPARAM wParam, // first message parameter LPARAM lParam) // second message parameter { switch (uMsg) { default: return DefWindowProc(hwnd, uMsg, wParam, lParam); } return 0; } </syntaxhighlight> In other words, the window procedure is passed which message to process, as well as message-specific parameters, and can call <code>DefWindowProc</code> to have the system handle any messages that the application doesn't. Typical window messages include: * <code>WM_PAINT</code>: Part of the client area of the window needs to be redrawn (a call to <code>BeginPaint</code> will provide a device context to use for drawing and a rectangle indicating which portions of the window need to be redrawn) * <code>WM_LMOUSEDOWN</code>: The left mouse button has been pressed down while the cursor is inside of the window (<code>lParam</code> contains the X and Y coordinates of the mouse) * <code>WM_KEYDOWN</code>: A nonsystem key has been pressed down while the window has focus (<code>wParam</code> contains the virtual key code) It's also possible to "subclass" a window, using <code>SetWindowLong</code> (<code>SetWindowLongPtr</code> on 64-bit Windows) to replace its window procedure with a new one, allowing the window's behavior to be changed. In most cases, a subclass window procedure only handles a few messages, and lets the rest be handled by the original window procedure, calling <code>CallWindowProc</code> to let the original handle it. Applications can place messages on the queue of other windows with <code>PostMessage</code>, or even forcibly call their window procedures to handle a message with <code>SendMessage</code>. ===== Common Controls ===== To aid development of software for Windows, <code>USER.EXE</code> includes pre-registered window classes for several commonly-used UI elements such as buttons, text labels, scrollbars, textboxes, checkboxes, and so on. To use one of them, simply pass the class name to a call to <code>CreateWindow</code>, passing the handle of the window it's part of as the parent. Every object in the Windows GUI is itself a window, with a button control for example being a "child window" of the top-level window. When the user clicks on a button, the click message is received by the top-level window's window procedure, which in turn sends the click message to the button, whose window procedure then processes it. Similarly, if the top-level window has to be redrawn, it will then send a <code>WM_PAINT</code> message to its children, which will in turn draw themselves into the client area of the top-level window. ===== Dialog Boxes ===== Dialog boxes are a special type of window that is specified by a template, which can be stored as a resource in the executable file. Two types of dialog boxes are supported; modal dialog boxes, which block program execution until the dialog is finished, and modeless dialog boxes, which use a standard message loop. The event model for dialog boxes is almost identical to regular windows, with the call to create a dialog box first creating all of the sub-windows for the controls, but all dialog boxes share the same window procedure, which in turn calls the provided dialog procedure, which returns FALSE if the dialog is done and should be destroyed. === Windows 2.0 and 3.0 === OS/2's user interface was initially developed from Windows' interface, and in order to maintain a common appearance with OS/2, they were developed in tandem, with both [[OS/2 1.1]] and [[Windows 2.0]] implementing both overlapping, resizable windows. One could click and hold the caption bar of a window to move it around, or click and drag on any edge of the window to change its size in that direction. Each window now has three buttons instead of two; the button on the left is the same as in Windows 1.0, but there are now two buttons on the right; one to minimize a program and the other to maximize/restore. To allow an easy migration path to OS/2, Windows 2.0 also implemented IBM's Common User Access specification for user interfaces. CUA specified many aspects of how the GUI must be navigable with a keyboard, including now-ubiquitous keyboard shortcuts such as ALT-F4 to close a window and ALT-TAB to switch between top-level windows. Menus also now stay open after being clicked on until the user clicks on something else, and the user can cycle between menus with the arrow keys. Windows 2.0 also introduced the Multiple Document Interface, or MDI, which allows multiple windows to live within the client area of one parent window, with similar keyboard shortcuts to those used for top-level windows, except using CTRL instead of ALT. [[Windows 3.0]] further iterated, implementing a more 3D look borrowed from [[OS/2 1.2]], with greater use of color bitmaps, and iconic programs also displaying the window title. Windows 3.0 also adopted a new shell, known as the [[Program Manager]], which featured a structure of "program groups", denoted by both a name and an icon, which in turn had a list of programs contained within, also denoted by a name and icon. Windows 3.0 also introduced a new tree-based graphical [[File Manager]], with both new apps making use of MDI. Windows 3.0 also changed the behavior of ALT-TAB; instead of changing the Z-order with every push of the tab key by bringing the back window front, Windows would simply display the name and icon of the current program in the list which would be brought to front once the user released the tab key. === Windows NT === The user interface for [[Windows NT 3.1]] was largely the same as [[Windows 3.1]], and the window management APIs in Win32 were broadly the same as in Win16, but the architecture was changed. Calls to <code>USER32.DLL</code> (the Win32 successor to <code>USER.EXE</code>) instead go through a Local Procedure Call to <code>WINSRV.DLL</code>, which is the window server in the Windows subsystem server process. In [[Windows NT 4.0]], window management was moved into the kernel-mode module <code>WIN32K.SYS</code>. === Windows 95 and later === [[Windows 95]] once again altered the window management scheme. While the button on the left side of the caption bar still existed, it now displays the program's icon, and the buttons on the right were redesigned to include a close button on the far right, pushing the minimize and maximize/restore to the left. Windows 95 also introduced the [[Windows Explorer]] interface as a replacement for Program Manager and File Manager. Beyond being a superior file manager, it also displays directly onto your desktop, underneath everything, displaying a set of icons corresponding to files in your Desktop folder, as well as useful shell folders such as My Computer and Recycle Bin. Additionally, Windows Explorer introduced the taskbar, which both includes a list of open programs (including minimized ones) the user can click on to bring that window to the front, and the "start menu", which includes a list of useful options for the user, including to shut down their computer, access the control panel, and browse through their program groups. ALT-TAB was further refined to show a list of window icons, which the currently-selected one being visible with its name below. The fundamental core of the Windows shell and window management hasn't significantly changed since then, but there have been incremental changes since then. ==== Windows Desktop Update ==== The Windows Desktop Update was first released with [[Internet Explorer 4.0]] in 1997, and first came with Windows 95 OSR2.5, [[Windows 98]], and [[Windows 2000]], though it can be installed on Windows 95 and [[Windows NT 4.0]] as well. The Windows Desktop Update merged Windows Explorer and [[Internet Explorer]] together, allowing IE to browse shell folders and Windows Explorer to browse the internet, since they both shared a common "Shell Document Viewer" DLL and several COM interfaces. The Windows Desktop Update brought several advancements to the Windows GUI, including browser-style forwards and backwards buttons in the file manager as well as an address bar, and even allowed users to use the Active Desktop feature to display an HTML document as their desktop wallpaper. The Windows Desktop Update also added the Quick Launch feature to the taskbar, which allowed users to pin icons of commonly-used programs between the start button and the list of open programs, clicking on the icons as a shortcut to open the programs. This combination of Windows Explorer and Internet Explorer would continue through [[Windows XP]], with the codebases splitting afterwards for [[Windows Vista]] and [[Internet Explorer 7]], though Vista retained all of the improvements from the Windows Desktop Update. ==== Windows 2000 ==== To enable menus fading in and out, Microsoft added a window style referred to as "layered windows", which rendered to a back buffer and could be composited onto the desktop, though the framebuffer contents below the layered window would be retained to allow for continuous alpha blending without having to redraw the display contents below the layered window. ==== Windows XP ==== Windows XP introduced visual styles, which changed how the nonclient areas of windows are rendered, as well as a new start menu. ==== Windows Vista ==== Windows Vista moved much of the window management on compatible display adapters into the [[Desktop Window Manager]]. Windows Vista made several cosmetic changes to window management, mainly relating to desktop composition: * The non-client areas of windows are rendered with translucency, which can also be extended into the client area of windows that request it * Windows Flip 3D was introduced, which was functionally similar to ALT-TAB, but was triggered via a combination of the Windows and Tab keys, displaying the contents of the windows in a 3D arrangement * When the mouse hovers over a window on the taskbar, it shows a preview of the window contents, and if the mouse remains there long enough, the screen will shift to exclusively show the selected window, with the outlines of other windows visible atop it * ALT-TAB now shows a preview of the window contents ==== Windows 7 ==== [[Windows 7]] introduced the "Superbar"; a redesigned taskbar combining the program list and Quick Launch elements of the old taskbar to feature large icons of programs that could be clicked to open them, and then hovered over to show a list of open windows in that program. The classic Windows 95-style start menu was also removed. ==== Windows 8 ==== [[Windows 8]] removed Windows Flip 3D and window translucency. It also revamped the Windows GUI to make it more tablet-centric, removing the traditional start button and start menu in favor of the Start Screen. [[Windows 8.1]] restored the start button. ==== Windows 10 ==== [[Windows 10]] restored the start menu. == Common Controls and Common Dialogs == The initial version of the Windows common controls were in <code>USER.EXE</code>, containing basic reusable UI elements. Its 32-bit counterpart on [[Windows NT]] is <code>USER32.DLL</code>. By [[Windows 3.1]], it had become apparent that applications were suffering from having to create their own dialogs for operations like selecting a file, which prevented Windows applications from having a uniform appearance. As a result, Windows 3.1 introduced the common dialogs DLL <code>COMMDLG.DLL</code>, which was redistributable to Windows 3.0. Its 32-bit counterpart is known as <code>COMDLG32.DLL</code>. A new set of common controls was released with [[Windows for Workgroups 3.11]] in 1993 as <code>COMMCTRL.DLL</code>, with the DLL being redistributable to Windows 3.1. [[Windows NT 3.5]] brought these controls to the Windows NT family with <code>COMCTL32.DLL</code>. Windows 95 updated these controls, with the changes being brought to [[Windows NT 3.51]], and even backported to Windows 3.1 for Windows 95's setup program. The 16-bit port of the new common controls would then be released as <code>COMCTL16.DLL</code> as part of the 16-bit versions of Internet Explorer. To gain a 3D appearance on Windows 3.1, Microsoft also provided the <code>CTL3D.DLL</code> file (<code>CTL3D32.DLL</code> for Windows NT), which subclassed window controls to draw them with a more 3D, beveled appearance. For Windows XP and later, <code>COMCTL32.DLL</code> provides both Windows 95-style "classic" common controls, and visual-styled controls, depending on whether the application is manifested for Windows XP and later or not.'
Unified diff of changes made by edit (edit_diff)
'@@ -21,11 +21,11 @@ The main shell of the OS is the [[MS-DOS Executive]], which is a simple file manager, displaying a textual list of files in the current directory that can be clicked on and used to launch programs. -=== Programming Model === -==== Windows and Window Classes ==== +==== Programming Model ==== +===== Windows and Window Classes ===== To create a window, one must first have a "window class", which is registered with the system and includes information about the type of window that the class refers to, including a handle to its icon, background color, foreground color, and a pointer to its window procedure, as many programs could create multiple instances of the same type of window (for example, multiple buttons that all behave the same). After registering a window class, its name is stored in the string table, and the class can be referred to either by name or by an <code>ATOM</code> returned by <code>RegisterClass</code>, which is an index into the string table. After that, call <code>CreateWindow</code>, specifying the window class, window title, position, size, and style, which, if successful, will return a window handle that can be used for any operation that requires a window. -==== Event Model ==== +===== Event Model ===== The Windows GUI is event-driven, meaning that applications typically block until the user interacts with them in some way and the system sends a message to a window. The typical message loop looks like this, where <code>Msg</code> is a <code>MSG</code> structure and <code>hWnd</code> is a window handle: <syntaxhighlight lang="c"> while(GetMessage(&Msg, hWnd, 0, 0) > 0) @@ -64,10 +64,10 @@ Applications can place messages on the queue of other windows with <code>PostMessage</code>, or even forcibly call their window procedures to handle a message with <code>SendMessage</code>. -==== Common Controls ==== +===== Common Controls ===== To aid development of software for Windows, <code>USER.EXE</code> includes pre-registered window classes for several commonly-used UI elements such as buttons, text labels, scrollbars, textboxes, checkboxes, and so on. To use one of them, simply pass the class name to a call to <code>CreateWindow</code>, passing the handle of the window it's part of as the parent. Every object in the Windows GUI is itself a window, with a button control for example being a "child window" of the top-level window. When the user clicks on a button, the click message is received by the top-level window's window procedure, which in turn sends the click message to the button, whose window procedure then processes it. Similarly, if the top-level window has to be redrawn, it will then send a <code>WM_PAINT</code> message to its children, which will in turn draw themselves into the client area of the top-level window. -==== Dialog Boxes ==== +===== Dialog Boxes ===== Dialog boxes are a special type of window that is specified by a template, which can be stored as a resource in the executable file. Two types of dialog boxes are supported; modal dialog boxes, which block program execution until the dialog is finished, and modeless dialog boxes, which use a standard message loop. '
Lines added in edit (added_lines)
[ 0 => '==== Programming Model ====', 1 => '===== Windows and Window Classes =====', 2 => '===== Event Model =====', 3 => '===== Common Controls =====', 4 => '===== Dialog Boxes =====' ]
Unix timestamp of change (timestamp)
'1742585880'