priborchiky.ru -

купить или арендовать online
+7 (495) 545-21-33 support@site.su
  • Домены совпадающие с priborchiky
  • Покупка
  • Аренда
  • priborchiky.ru
  • 50 000
  • 500
  • Домены совпадающие с priborchik
  • Покупка
  • Аренда
  • priborchik.ru
  • 50 000
  • 500
  • Домены начинающиеся с priborchik
  • Покупка
  • Аренда
  • priborchiki.ru
  • 50 000
  • 500
  • Рекомендуемые домены
  • Покупка
  • Аренда
  • deserts.ru
  • 100 000
  • 1 000
  • portals.su
  • 18 334
  • 183
  • recoveries.ru
  • 50 000
  • 500
  • site.su
  • договорная
  • договорная
  • авиационная.рф
  • 100 000
  • 1 000
  • авиационное.рф
  • 70 000
  • 700
  • авиационный.рф
  • 50 000
  • 500
  • автомойка.su
  • 20 000
  • 200
  • авторазборы.рф
  • 50 000
  • 500
  • ады.рф
  • 70 000
  • 700
  • ажурные.рф
  • 50 000
  • 500
  • азоты.рф
  • 50 000
  • 500
  • академик.su
  • 20 000
  • 200
  • аква.рф
  • 200 000
  • 2 000
  • акустические.рф
  • 70 000
  • 700
  • алкоголизмы.рф
  • 50 000
  • 500
  • алмазная.рф
  • 70 000
  • 700
  • алмазное.рф
  • 100 000
  • 1 000
  • американец.рф
  • 100 000
  • 1 000
  • апартаменты.su
  • 20 000
  • 200
  • арбат.su
  • 26 668
  • 267
  • арбуз.su
  • 20 000
  • 200
  • арсенал.su
  • 35 000
  • 350
  • артрит.su
  • 20 000
  • 200
  • архитекторов.рф
  • 50 000
  • 500
  • ары.рф
  • 100 000
  • 1 000
  • асфальты.рф
  • 50 000
  • 500
  • атлетики.рф
  • 70 000
  • 700
  • атомная.рф
  • 150 000
  • 1 500
  • атомный.рф
  • 70 000
  • 700
  • афоризм.su
  • 20 000
  • 200
  • багажи.рф
  • 70 000
  • 700
  • байк.su
  • 35 000
  • 350
  • бактерии.рф
  • 350 000
  • 3 500
  • банды.рф
  • 100 000
  • 1 000
  • безруков.рф
  • 150 000
  • 1 500
  • берлин.su
  • 26 668
  • 267
  • бессмертные.рф
  • 70 000
  • 700
  • бест.su
  • 26 668
  • 267
  • бешеные.рф
  • 50 000
  • 500
  • бешеный.рф
  • 70 000
  • 700
  • билль.рф
  • 50 000
  • 500
  • бисквит.su
  • 26 668
  • 267
  • блеск.su
  • 20 000
  • 200
  • блески.рф
  • 50 000
  • 500
  • блестящее.рф
  • 70 000
  • 700
  • бобра.рф
  • 70 000
  • 700

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 (в этих же ОС). {{rq|sources|wikify}} [[Категория:Microsoft Windows]]

24.07.2014 20:27:24