USER

USER

Подсистема управления окнами и пользовательским интерфейсом операционной системы Windows, одна из трех исторически первых компонент этой ОС.

Содержание

Краткое описание

Реализует объект «окно» (HWND), списки окон, в том числе по Z-orderу, и управление регионами отсечения окон, имеет богатый набор вызовов по созданию и управлению окнами. Также реализует отрисовку стандартной рамки окна (DefWindowProc) и несколько стандартных элементов пользовательского интерфейса (кнопки, чекбоксы, радио-кнопки, полосы прокрутки, списки, комбобоксы и диалоговые окна с потомками внутри).

При создании окна (два этапа: RegisterClass+CreateWindow, при использовании стандартных элементов UI не нужен первый этап) указывается: координаты, строка (заголовок, или строка рядом с кнопкой), флаги стиля и окно-родитель. В вызове RegisterClass также указывается «оконная процедура» (WNDPROC).

Управление размерами и Z-orderом уже созданного окна производится специальными вызовами. Что же касается управления, зависимого от разновидности окна (например, взвод/сброс чекбокса, или добавление строк в список) — оно осуществляется вызовом SendMessage, где указываются 2 кода сообщения (например, WM_COMMAND+LB_ADDSTRING) и параметр.

WNDPROC представляет собой функцию, реализованную в приложении, которую USER вызывает при наступлении различных событий в жизни окна (для стандартных элементов UI функция реализована в самом USER или же в DLL, где реализован объект, такой, как COMCTL32.DLL). В WNDPROC передается HWND, код сообщения (WM_xxx) и 2 параметра.

Разработчик WNDPROC обязан пропустить все неизвестные ему коды сообщений в DefWindowProc.

Главнейшие сообщения:

  • WM_PAINT. «Перерисуй себя». WNDPROC обязана позвать BeginPaint, получить HDC, и перерисовать окно (или его «грязную» часть) вызовами GDI.
  • WM_CREATE. Одно из первых сообщений, посылаемых окну (аналог конструктора).
  • WM_DESTROY. Одно из последних сообщений, посылаемых окну (аналог деструктора).
  • WM_MOUSEMOVE, WM_LBUTTONDOWN и иные — над окном провели мышью или же ткнули в него мышью.
  • WM_KEYDOWN и WM_CHAR — окно имеет «фокус ввода» и была нажата клавиша клавиатуры. Все клавиши приходят в WM_KEYDOWN в виде «кодов виртуальных клавиш», которые есть скан-коды (они же — порядковые номера — Esc 1, F1 2 и так далее) клавиш некоей стандартной клавиатуры. В WM_CHAR приходят только те нажатия клавиш, которые означают символ (F1, стрелки, PgUp/Dn — не приходят).
  • WM_SETFOCUS — изменение окна, имеющего «фокус ввода» (одно на экране). Используется для рисования пунктирной рамочки вокруг чекбоксов и так далее.

Ресурсы

USER активно использует т. н. ресурсы — данные только для чтения, вшитые в EXE/DLL файл специальным образом на этапе построения.

Сами по себе ресурсы не есть часть USER и могут использоваться и без него (например, stringtable — таблицы строк для локализации приложения на разные языки), однако некоторые типы ресурсов используются USER автоматически (например, описания меню и диалоговых окон, в которых перечислены, например, все внутренние органы управления на данном диалоге и их координаты и строки).

При разработке программы ресурсы помещаются в текстовый файл с суффиксом .rc, написанный на некоем несложном языке. При этом давным-давно есть средства визуального редактирования описаний диалогов и меню.

При построении программы компилятор RC.EXE компилирует .rc в бинарный файл .res, который потом вшивается в EXE/DLL файл программой LINK.

При создании окна можно указать handle ресурса, где расположено описание верхнего меню окна — и USER создаст и отрисует меню автоматически, и пошлет WM_COMMAND с кодом пункта меню окну, когда пункт выбран.

Обертки

Наиболее популярной Си+±оберткой вокруг USER долгое время являлась MFC — используется по сей день. Также популярна обертка WTL.

Замена

Вся технология USER, которой около 25 лет, постепенно заменяется на Windows Presentation Foundation (WPF), в которой, например, язык ресурсов заменен на куда более богатый XAML, а объектом, которому могут приходить события, может являться любой элемент векторной графики или даже окно с фильмом, показываемым через DirectShow.

Реализация

win32k.sys (нижние уровни, в том числе списки окон и их регионы отсечения) и user32.dll (доступные приложениям вызовы, DefWindowProc и стандартные элементы).

Критика

По некоторым утверждениям (от тех, кто видел нелегальный исходный код), исходный код USER написан в чудовищном стиле, и содержит в себе мелкие правки для поддержки конкретных приложений, таких, как PowerPoint.

По тем же утверждениям, этот код никогда не переписывался заново за 25 лет и, возможно, это нереальная задача с точки зрения сохранения совместимости для приложений.

Помимо этого, есть и соображения, не требующие информации из нелегального кода.

Использование WNDPROC с оператором switch на все коды сообщений выглядит крайне некрасиво (эта проблема решена во всех Си++ обертках).

Существует концепция client и non-client area в окне — внутренность окна и рамка (обычно стандартная). Это приводит к наличию двух наборов кодов сообщений для внутренности и рамки — отрисовка, клавиатура, мышь и т. д. Кроме того, нет архитектурного разделения рамки и внутренности, что приводит к сложности в реализации архитектурных принципов MVC.

Однако уже в MFC проблема решена: создается отдельное окно-внутренность, которое автоматически перемещается при перемещении рамки и в котором и рисуется все то, что хочет нарисовать приложение. Окно-внутренность называется view, и в этой архитектуре MVC уже легко реализуема. Такое view можно, например, повторно использовать по технологии OLE во вложенном документе.

Интересные факты

Венгерская нотация впервые применена в USER — изобретатель нотации Чарлз Симони был главным разработчиком этой компоненты.

Примерные аналоги

Верхние уровни технологии X11, используемой в UNIX-подобных ОС, таких, как Linux, а также нижние уровни технологий KDE и Gnome (в этих же ОС).



Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать курсовую

Полезное


Смотреть что такое "USER" в других словарях:

  • user — [ yze ] v. tr. <conjug. : 1> • user son temps, sa vie « consommer, achever » 1080; lat. pop. °usare, de usus, p. p. de uti « se servir de » I ♦ V. tr. ind. (1267) USER DE. 1 ♦ Vx ou didact. Faire en sorte qu une chose produise un effet… …   Encyclopédie Universelle

  • user — User, Atterere, Deterere, Absumere, Consumere. User sa vie en procez, Vitam simul et litem ducere, Liti non superþesse, Vitam ducere lites ducendo. B. User la plante de ses pieds, Obterere vestigia, Calces deterere. User à force de frotter,… …   Thresor de la langue françoyse

  • USER — is an international recording artist who earned his chops in the techno industrial period of the 1990s playing guitar with such notable bands as Atlantic recording artists MOEV (Crucify me, Yeah whatever) and the singer Dean Russell created music …   Wikipedia

  • user — us‧er [ˈjuːzə ǁ ər] noun [countable] someone or something that uses a product or service: • Computer users can download the program and use it free of charge for 90 days. ˌend ˈuser also end user MARKETING the person who actually uses a… …   Financial and business terms

  • user — index customer Burton s Legal Thesaurus. William C. Burton. 2006 user …   Law dictionary

  • user — [yo͞o′zər] n. [ USER sense 1 < US(E) + ER; in USER sense 2 a substantive use of OFr user, to use] 1. a person or thing that uses something (stated or implied); specif., ☆ a) a person who uses drugs; addict b) a pe …   English World dictionary

  • User — [ ju:zɐ] der; s, <aus gleichbed. engl. user, eigtl. »Benutzer«, zu to use »gebrauchen«, dies aus (alt)fr. user, vgl. ↑Usance>: 1. (Jargon) Drogenabhängiger. 2. jmd., der mit einem Computer arbeitet, Computerprogramme anwendet (EDV) …   Das große Fremdwörterbuch

  • uşer — UŞÉR, uşeri, s.m. (În evul mediu) Dregător de curte în Moldova, care avea sarcina de a primi solii şi de a i introduce la domn; funcţie ocupată de acest dregător. [var.: uşár s.m.] – Uşă + suf. er. Trimis de valeriu, 13.09.2007. Sursa: DEX 98 … …   Dicționar Român

  • user — c.1400, agent noun from USE (Cf. use) (v.). Of narcotics, from 1935; of computers, from 1967. User friendly (1977) is said in some sources to have been coined by software designer Harlan Crowder as early as 1972 …   Etymology dictionary

  • User — Us er, n. 1. One who uses. Shak. [1913 Webster] 2. (Law) Enjoyment of property; use. Mozley & W. [1913 Webster] …   The Collaborative International Dictionary of English

  • User — User,der:⇨Rauschgiftsüchtige …   Das Wörterbuch der Synonyme


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»