Как узнать класс окна windows

serdtse palochki lyubov priznanie 95313 1280x720 Windows

Как узнать класс окна windows

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

В разделах ниже описываются эти атрибуты.

Программа использует функцию SetWindowText, чтобы изменить имя окна после того, как окно создано. Она использует функции GetWindowTextLength и GetWindowText, чтобы сделать выборку текущего текста имени окна.

Родительское или самостоятельное окно

Окно может иметь родительское окно. Окно, которое имеет родительское окно, называется дочерним окном (child window). Родительское окно (parent window) предоставляет систему координат, которая используется для позиционирования дочернего окна. Наличие родительского окна воздействует на аспекты внешнего вида окна; например, дочернее окно обрезается так, что-бы ни одна часть дочернего окна не могла появиться вне рамок своего родительского окна. Окно, у которого нет родительского окна или родитель которого самое главное окно, называется окном верхнего уровня (top-level window). Прикладная программа использует функцию EnumWindows, чтобы получить дескриптор каждого из своих окон верхнего уровня. Функция EnumWindows, в свою очередь, передает дескриптор каждого окна верхнего уровня в определенную программой функцию повторного вызова EnumWindowsProc.

Окно может иметь или принадлежать другому окну. Находящееся в собственности окно всегда появляется перед окном его владельца, скрывается, когда окно его владельца сворачивается и разрушается, когда окно его владельца разрушается.

Расположение, размер и позиция в Z-последовательности

Идентификатор Дочернего окна или дескриптор Меню

Дочернее окно может иметь идентификатор дочернего окна (child-window identifier), уникальное значение определенное программой, связанное с дочерним окном. Идентификаторы дочернего окна особенно полезны в прикладных программах, которые создают многочисленные дочерние окна. При создании дочернего окна, прикладная программа определяет идентификатор дочернего окна. После создания окна, прикладная программа может изменять идентификатор окна, используя функцию SetWindowLong, или может отыскать идентификатор, используя функцию GetWindowLong.

Каждое окно, за исключением дочернего окна, может иметь меню. Прикладная программа может включать в себя меню, путем предоставления дескриптора меню, или при регистрации класса окна, или при создании окна.

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

Каждое окно может иметь определяемые программой данные создания, связанные с ней. Когда создано первое окно, Windows передает указатель на данные в оконную процедуру создаваемого окна. Оконная процедура использует эти данные, чтобы инициализировать определяемые программой переменные.

Источник

Как узнать класс окна windows

AutoIt Window Info

AutoITv3Info screen

Следующая информация может быть получена:
• Заголовок окна
• Текст в окне (видимый и скрытый)
• Размеры окна и его позиция
• Содержимое строки состояния
• Положение курсора
• Цвет пикселя, находящегося под курсором
• Информация об элементе управления, находящемся под курсором

AutoIt является простым инструментом, который может имитировать нажатия клавиш, движения мыши и команды окна для того, чтобы автоматизировать любые окна на основе задачи. В AutoIt есть BASIC-подобный синтаксис который может быть использован в качестве общего назначения скриптового языка.

Домашняя страница: http://www.autoitscript.com

zero Dump v0.1

zeroDump screen

Набор функций доступных в zero Dump позволяют изменить заголовок, позицию табуляции, возможно включить и отключить различные свойств объекта, имеется несколько вкладок с стилями, различные параметры для включения и отключения элементов, таких как строки заголовка, системного меню или кнопок свернуть и развернуть окно. Во вкладке с расширенными стилями доступны гибкие настройки окна, где можно задать порядок чтения справа налево или определить выравнивание текста справа, установить прозрачность, встроить полосу прокрутки и многое другое.

Приложение с открытым исходным кодом, это означает, что любой человек может взять код и изменить его для того, чтобы улучшить или расширить его функциональность.

Домашняя страница: http://yodap.cjb.net

Скачать: zeroDump v0.1

ShoWin v2.0

ShoWin screen

Домашняя страница: http://www.foundstone.com

Скачать: ShoWin v2.0

Syn Spy v3.1

SynSpy screen

*Примечание: Сканер паролей не работает на Windows 2000 и более поздних версиях операционной системы!*

Домашняя страница: http://synvb.com

Скачать: Syn Spy v3.1

Spy & Capture v2.70

SpyAndCapture screen

Также включены:
— Система активных окон.
— Система активных процессов, с зависимостями модулей.
— Захват окна (включена область захвата).
— Цветовой шпион (поддерживает формат HTML цвета).
— Граббинг полей пароля («***» поля).
— Поддержка веб-обновлений.

Домашняя страница: http://come.to/kobik

Window Hack v3.0

WindowHack screen

Домашняя страница: http://geocities.com/asmfreesoft

InqSoft Window Scanner v1.7

InqSoftWindowScanner screen

Версия 1.7:
— Добавлена возможность сохранения скриншотов в форматах GIF, JPG и PNG с регулировкой качества;
— Возможность извлечения текстовых данных из окон с древовидными списками (таких, как в RegEdit или Справке Windows);
— Реализована возможность в два клика переместить выбранное окно в любой угол экрана;
— В редактор памяти процесса добавлены возможности просмотра численных данных и перехода по указателю;
— Реализован режим просмотра хэндлов в десятичном виде, сообщения можно вызывать в виде.

Домашняя страница: http://kickme.to/inqsoft

WinID v3.1

WinID screen

Домашняя страница: http://www.dennisbabkin.com/winid/

Скачать: WinID v3.1 / II / Portable (pass: Unpack)

WinDowzer v1.2

WinDowzer screen

Версия 1.2:
— Добавлена поддержка юникода.

Версия 1.3:
— Добавлены возможности Microsoft Active Accessibility.
— Улучшен интерфейс и поведение при закрытии/сворачивании.
— Сделаны всякие мелкие улучшения.

Домашняя страница: http://www.manhunter.ru/releases/150_windowzer_1_1.html (v1.2) (v1.3)

Скачать: WinDowzer v1.1-PCL / WinDowzer v1.2-PCL / WinDowzer v1.3-PCL / II

WinCheat v1.7 (build 4680)

WinCheat screen

Особенности программы:
• Выбор видимых окон с помощью мыши для просмотра информации о них.
• Исследование иерархии окон для текущего рабочего стола.
• Позволяет просматривать и изменять стили выбранного окна.
• Отправить/поместить сообщение окну, включить/отключить/показать/скрыть его.
• Захват текста из окон (также работает для полей с паролем на WinNT / Win2000 / WinXP)
• Захват/сохранение содержимого окна в качестве растрового изображения.
• Увеличение прямоугольной области на экране по движению (выделению) мыши.

Читайте также:  Как обнаружить жесткий диск windows 10

Примечание: для запуска WinCheat, может потребоваться загрузить и установить пакет: Visual C++ Redistributable for Visual Studio 2012. На странице загрузки выберите x86 версию распространяемого пакета (WinCheat является 32-bit приложением).

Домашняя страница: http://www.alinconstantin.com/Download/WinCheat

WinSpy++ v1.7

WinSpy screen

WinSpy ++ может получить следующие свойства окна:
• Класс окна и имя.
• Адрес процедуры окна.
• Все стили окна включая расширенные стили.
• Свойства окна (устанавливается с помощью вызова API SetProp).
• Выполнение дочерних и родительских оконных соотношений.
• Полоса прокрутки позиционной информации.
• Полные сведения о классах окна.

Новое в версии 1.7!
— Поддержка операционной системы Windows Vista.
— Дерево иерархического списка группируется по запущенным процессам.

Домашняя страница: http://www.catch22.net/software/winspy

Скачать: WinSpy++ v1.6 / WinSpy++ v1.7 / WinSpy Src

WinSpy v1.0.3

WinSpyAlguimist screen

Программа собрана для x86 и x64, в комплекте имеются исходники (сценарий AHK).

Версия 1.0.3:
— На вкладке Extra отображается больше информации об элементах управления Scintilla.
— Исправлены мелкие ошибки.

Версия 1.0.2:
— Исправлен поиск окна по PID
— Исправлена вкладка сообщений
— Добавлены сообщения Scintilla
— Добавлены RichEdit сообщения и стили
— Небольшие улучшение в меню просмотра
— F1 показывает сочетания клавиш

Домашняя страница: http://sourceforge.net/projects/winspyex/

Скачать: WinSpy v1.0.2 / WinSpy v1.0.3

Microsoft Spy++ v14

MicrosoftSpy screen

Домашняя страница: http://microsoft.com

Скачать: Microsoft Spy++ v14

Control Viewer v1.1

ControlViewer screen

Основные отличия Control Viewer от AutoIt Window Info:

• Отображение полного списка всех существующих элементов GUI для интересующего окна (видимые, скрытые и удаленные элементы отображаются разными цветами, которые можно изменить на любые другие).
• Динамическое изменение информации для окон и их элементов в процессе поиска.
• Возможность быстрого переключения между элементами в списке.
• Возможность скрыть/показать любой элемент из списка (полезно, когда два или более элементов перекрывают друг друга).
• Информация для параметров Style и ExStyle отображается как в виде шестнадцатиричных значений, так и в виде составляющих его констант.
• Добавлены параметры PID и Path во вкладке Window и возможность быстрого перехода в папку, содержащую файл процесса.
• Добавлена система координат относительно выделенного элемента.
• Отображение цвета пикселя в форматах RGB и BGR.
• Пример заливки выбранным цветом.
• Возможность выбора кодировки текста (влияет на параметр Text во вкладке Control).
• Полное изменение внешнего вида всплывающей рамки для выбора элементов.
• Простой и удобный инструмент для получения скриншота интересующей части экрана для последующей публикации на форуме (вкладка Capture).
• Создание отчета в буфере обмена или текстовом файле для последующей публикации на форуме.
• Поиск всех запущенных AutoIt скриптов и созданных ими окон в системе (вкладка AutoIt).
• Приятный интерфейс.

Используемые горячие клавиши:

Цветовая индикация состояния элементов:

Последнее обновление 19.05.2012:

— Добавлена 64-битная версия программы.
— Добавлена цифровая подпись (сертификат) в CV.exe и CV_x64.exe.
— Небольшие изменения в коде.

Поддерживаются бинарные файлы x86 и x64 (Binary file support x86 and x64)
В комплекте есть исходники AutoIt скриптов программы и файлы локализации.

Домашняя страница: http://autoit-script.ru/index.php?topic=4579.0

Скачать: ControlViewer v1.1 / Control Viewer / RU-EN / ATT / WinAPIEx (pass: Unpack)
Скачать: Control Viewer Mod v0.2020.3.13 [?] (pass: Unpack)

Property Edit v2.5.0.0

PropertyEdit screen

Домашняя страница: http://mh-nexus.de/en/programs.php

Window Detective v3.5.1

WindowDetective screen

Особенности программы:
— Просмотр свойств окон, например: текст/название, размеры и стили.
— Просмотр всех окон в дереве иерархии: родительские/дочерние окна.
— Захват активных окон (элементов окон) для просмотра с помощью мыши.
— Расширенный поиск элементов окон, по соответствующим заданным критериям.
— Прием команд для отправленных оконных сообщений в окно.
— Предустановки пользовательских параметров, чтобы запоминать позиции окон.

Домашняя страница: http://sourceforge.net/projects/windowdetective/

WinDowse v5.3

WinDowse screen

Основная информация окна:
— Текст, заголовок и идентификатор ресурса
— Идентификатор процесса
— Экземпляр приложения
— Дескриптор окна
— Дескриптор родительского окна
— Функция адреса окна
— Дескриптор меню окна
— Координаты в родителе
— Координаты на экране
— Размер окна
— Размер клиентской области окна
— Стиль окна и расширенный стиль

Широкий набор функций и полнота предоставляемой информации, позволяет вам быстро узнать все необходимые данные о нужной вам функции или элементе окна. Все параметры могут быть показаны в шестнадцатеричном, десятичном или бинарном формате. После запуска WinDowse, он ведет непрерывный отсчет, пока пользователь перемещает мышь по экрану. Непрерывная индикация может быть остановлена в любой момент по щелчку мышкой «Stop». WinDowse также позволяет копировать результаты в буфер обмена.

Домашняя страница: http://www.greatis.com/delphicb/windowse/

Скачать: WinDowse v5.3 / II / III

XWinspector v1.0

XWinspector screen

Домашняя страница: http://freesoft80.com/products/xwinspector-1-0.html

WinInfo v1.0.3

WinInfo screen

Домашняя страница: http://www.pazera-software.com/products/wininfo/

Скачать: WinInfo v1.0.3 / WinInfo v1.0.3 fix

Aezay Window Hacker 2 v16.06.28 (2016 Jun 28)

AezayWindowHacker screen

— Программа является переписанной версией «Window Hacker», который ранее назывался «hWnd Monitor».

Домашняя страница: http://www.aezay.dk/aezay/wndhack/

Ranorex Spy Pro v1.5

RanorexSpy screen

RanorexSpy показывает такие свойства элементов как: дескриптор, текст заголовка, имя класса, имя элемента управления, идентификатор элемента управления, стиль элемента и его координаты на экране. Кроме этого программа также отображает дополнительное поле свойств выбранного элемента, с такой информацией как: тип элемента, имя элемента, класс элемента, позиция элемента, значение элемента и состояние элемента.

Утилита Ranorex Spy Pro поставляется в комплекте с программным обеспечением Ranorex, также с оф-сайта можно скачать обычную версию Ranorex Spy.

Домашняя страница: http://www.ranorex.com/

Скачать: RanorexSpyPro v1.5 / Ranorex v1.5.0 / Ranorex v1.5.1

Spy++ Lite v2.4

SpyLite screen

Домашняя страница: http://www.asanscape.com

Скачать: SpyLite v2.4

ViewWizard v3.5.2 (句柄查看精灵)

ViewWizard screen

Перетащите значок увеличительного стекла на окно целевой программа, когда объект окна подсветиться черным прямоугольником, в окне ViewWizard будет отображена вся информация об выбранном элементе. Можно воспользоваться методом непосредственного поиска по вводу дескриптора окна. Кроме сканера атрибутов оконных форм, программа позволяет делать снимки рабочего стола и определять цвет пикселей на экране в форматах RGB, HSL, HTML и HEX.

Особенности:
— Редактор стилей окна: позволяет изменять стиль окна и расширенный стиль.
— Окно мониторинга: мониторинг создания и уничтожения окон верхнего уровня.
— Список системных окон: посмотр всех системных окон, включая невидимые и скрытые окна ядра.
— Отображение скрытого управления: отображаются скрытые элементы управления для активного окна.
— Пипетка: инструмент пипетка для выбора цвета на экране по наведению курсора.
— Захват экрана: создание снимков рабочего стола (скриншоты), захват окон программ.

Читайте также:  Как включить камеру на ноуте виндовс 10

Домашняя страница: http://zzmzzff.blog.163.com

Скачать: ViewFont v1.0 / ViewWizard v2.8 / ViewWizard v3.5.2 (pass: Unpack)

Источник

О классах окон

Каждый класс окна имеет связанную процедуру окна, совместно используемую всеми окнами того же класса. Процедура окна обрабатывает сообщения для всех окон этого класса и, следовательно, управляет их поведением и внешним видом. Дополнительные сведения см. в разделе Процедуры окна.

В этом разделе рассматриваются следующие темы.

Типы классов окон

Существует три типа классов окон:

Эти типы различаются в области и в случаях, когда и как они регистрируются и уничтожаются.

Системные классы

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

Система регистрирует системные классы для процесса в первый раз, когда один из его потоков вызывает функцию пользователя или Windows интерфейс графических устройств (GDI).

Каждое приложение получает собственную копию системных классов. Все 16-разрядные приложения на базе Windows в одном и том же классе общей системы VDM, как и в 16-разрядных Windows.

В следующей таблице описаны системные классы, доступные для использования всеми процессами.

Класс Описание
Кнопка Класс для кнопки.
ComboBox Класс для поля со списком.
Изменить Класс для элемента управления «поле ввода».
ListBox Класс для поля со списком.
мдиклиент Класс для клиентского окна MDI.
ScrollBar Класс для полосы прокрутки.
Статические Класс для статического элемента управления.

В следующей таблице описаны системные классы, доступные только для использования системой. Они перечислены здесь для полноты.

Класс Описание
комболбокс Класс для списка, содержащийся в поле со списком.
ддемлевент Класс для платформа динамических данных событий библиотеки управления Exchange (ДДЕМЛ).
Сообщение Класс для окна, в котором только сообщения.
#32768 Класс для меню.
#32769 Класс для окна рабочего стола.
#32770 Класс для диалогового окна.
#32771 Класс для окна переключения задач.
#32772 Класс для заголовков значков.

Глобальные классы приложений

Глобальный класс приложения — это класс окна, зарегистрированный исполняемым ФАЙЛОМ или библиотекой DLL, который доступен всем остальным модулям в процессе. Например, Библиотека DLL может вызвать функцию RegisterClassEx для регистрации класса окна, определяющего пользовательский элемент управления в качестве глобального класса приложения, чтобы процесс, загружающий DLL-файл, мог создавать экземпляры пользовательского элемента управления.

Чтобы создать класс, который можно использовать в каждом процессе, создайте класс Window в DLL и загрузите DLL-файл в каждый процесс. Чтобы загрузить DLL-файл в каждый процесс, добавьте его имя в значение библиотеки _ DLL в следующем разделе реестра:

HKey _ _ \ Программное обеспечение локального компьютера \ Microsoft \ Windows NT \ CurrentVersion \ Windows

Локальные классы приложения

Локальный класс приложения — это любой класс окна, который регистрируется исполняемым файлом или библиотекой DLL для монопольного использования. Хотя можно зарегистрировать любое количество локальных классов, обычно регистрируется только один. Этот класс окон поддерживает процедуру окна главного окна приложения.

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

Как система находит класс окна

Система содержит список структур для каждого из трех типов классов окон. Когда приложение вызывает функцию CreateWindow или CreateWindowEx для создания окна с указанным классом, система использует следующую процедуру для нахождение класса.

Все окна, созданные приложением, используют эту процедуру, включая Windows, созданную системой от имени приложения, например диалоговые окна. Можно переопределить системные классы, не затрагивая другие приложения. Это значит, что приложение может зарегистрировать локальный класс приложения с тем же именем, что и системный класс. Этот класс System заменяется в контексте приложения, но не мешает другим приложениям использовать класс System.

Регистрация класса окна

Если вы регистрируете класс Window, используя версию ANSI RegisterClassEx, регистерклассекса, приложение запрашивает передачу текстовых параметров сообщений в окна созданного класса, используя кодировку ANSI. Если вы регистрируете класс с помощью версии Юникода RegisterClassEx, регистерклассексв, приложение запрашивает передачу текстовых параметров сообщений в окна созданного класса, используя кодировку Юникода. Функция исвиндовуникоде позволяет приложениям запрашивать характер каждого окна. Дополнительные сведения о функциях ANSI и Unicode см. в разделе соглашения для прототипов функций.

Элементы класса Window

Хотя полный класс окна состоит из множества элементов, система требует, чтобы приложение предпредоставил только имя класса, адрес процедуры окна и экземпляр. Используйте другие элементы для определения атрибутов по умолчанию для окон класса, например формы курсора и содержимого меню для окна. Все неиспользуемые члены структуры вндклассекс необходимо инициализировать равными нулю или null. В следующей таблице приведены элементы класса Window.

Элемент Назначение
Имя класса Отличает класс от других зарегистрированных классов.
Адрес процедуры окна Указатель на функцию, которая обрабатывает все сообщения, отправленные в Windows в классе, и определяет поведение окна.
Маркер экземпляра Определяет приложение или библиотеку DLL, которые регистрировали класс.
Курсор класса Определяет курсор мыши, отображаемый системой для окна класса.
Значки классов Определяет крупный значок и маленький значок.
Кисть фона класса Определяет цвет и шаблон, которые заполняют клиентскую область при открытии или закраске окна.
Меню класса Задает меню по умолчанию для окон, в котором не определено явно меню.
Стили класса Определяет способ обновления окна после его перемещения или изменения его размера, обработки двойных щелчков мыши, выделения пространства для контекста устройства и других аспектов окна.
Память дополнительного класса Указывает объем дополнительной памяти в байтах, резервируемый системой для класса. Все окна в классе имеют доступ к дополнительной памяти и могут использовать ее для любых целей, определяемых приложением. Система инициализирует эту память как нулевую.
Размер дополнительной памяти окна Указывает объем дополнительной памяти в байтах, резервируемый системой для каждого окна, принадлежащего классу. Дополнительную память можно использовать для любых целей, определяемых приложением. Система инициализирует эту память как нулевую.

Имя класса

Функция className возвращает имя класса, которому принадлежит заданное окно.

Адрес процедуры окна

Маркер экземпляра

Каждый класс окна требует наличия обработчика экземпляра для указания приложения или библиотеки DLL, которая зарегистрировала класс. Система требует наличия дескрипторов экземпляров для наблюдения за всеми модулями. Система назначает маркер каждой копии выполняемого исполняемого файла или библиотеки DLL.

Курсор класса

Значки классов

Значок класса — это изображение, используемое системой для представления окна определенного класса. Приложение может иметь два значка класса — один крупный и один маленький. Система отображает значок крупного класса окна в окне переключения задач, которое появляется, когда пользователь нажимает ALT + TAB и в представлениях крупных значков панели задач и обозревателя. Значок небольшого класса появляется в строке заголовка окна и в представлениях мелких значков панели задач и обозревателя.

Если приложение устанавливает для элементов Хикон и Хиконсм структуры вндклассекс значение NULL, система использует значок приложения по умолчанию в качестве крупных и мелких значков классов для класса Window. Если указать значок крупного класса, но не маленький, система создает маленький значок класса, основанный на большом размере. Однако если указать маленький значок класса, но не большой, система будет использовать значок приложения по умолчанию в качестве значка крупного класса и указанный значок в качестве значка небольшого класса.

Кисть фона класса

Кисть фона класса подготавливает клиентскую область окна для последующего рисования приложением. Система использует кисть для заполнения клиентской области сплошным цветом или узором, тем самым удаляя все предыдущие изображения из этого расположения независимо от того, принадлежат ли они к окну или нет. Система уведомляет окно о том, что его фон следует отрисовывать, отправив сообщение WM _ ерасебкгнд в окно. Дополнительные сведения см. в разделе кисти.

Вместо создания кисти приложение может задать для элемента хбрбаккграунд одно из стандартных значений системного цвета. Список стандартных значений системного цвета см. в разделе сетсисколорс.

В системе не требуется, чтобы класс окна имел кисть для фона класса. Если этот параметр имеет значение null, то при получении сообщения WM _ ерасебкгнд окно должно рисовать собственный фон.

Меню класса

Меню класса определяет меню по умолчанию, используемое окнами в классе, если при создании окон не задано явное меню. Меню — это список команд, из которых пользователь может выбрать действия для выполнения приложения.

Можно назначить меню классу, задав для элемента лпсзменунаме структуры вндклассекс адрес строки, завершающейся нулем, которая указывает имя ресурса меню. Предполагается, что меню является ресурсом в данном приложении. Система автоматически загружает меню при необходимости. Если ресурс меню идентифицируется целым числом, а не именем, то приложение может задать для элемента лпсзменунаме это целое число, применив макрос макеинтресаурце перед присвоением значения.

В системе не требуется меню класса. Если приложение устанавливает для элемента лпсзменунаме структуры вндклассекс значение NULL, в Windows в классе нет строк меню. Даже если меню класс не задано, приложение по-прежнему может определить строку меню для окна при создании окна.

Если для класса задано меню и создано дочернее окно этого класса, меню игнорируется. Дополнительные сведения см. в разделе меню.

Стили класса

Классы и контексты устройств

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

Если явно не задан стиль контекста устройства, система предполагает, что в каждом окне используется контекст устройства, полученный из пула контекстов, поддерживаемых системой. В таких случаях каждое окно должно извлекать и инициализировать контекст устройства перед рисованием и освобождать его после рисования.

Чтобы избежать извлечения контекста устройства каждый раз, когда ему требуется закрашивать внутри окна, приложение может указать стиль _ овндк CS для класса Window. Этот стиль класса направляет систему для создания частного контекста устройства, то есть для выделения уникального контекста устройства для каждого окна в классе. Приложению требуется только получить контекст, а затем использовать его для всех последующего рисования.

Память дополнительного класса

Система поддерживает внутреннюю структуру вндклассекс для каждого класса окон в системе. Когда приложение регистрирует класс окна, оно может направить систему на выделение и добавление в конец структуры вндклассекс нескольких дополнительных байтов памяти. Эта память называется дополнительной памятью класса и является общей для всех окон, принадлежащих классу. Используйте память дополнительного класса для хранения любой информации, относящейся к классу.

Поскольку дополнительный объем памяти выделяется из локальной кучи системы, приложение должно использовать память дополнительного класса с осторожностью. Функция RegisterClassEx завершается ошибкой, если объем запрашиваемой памяти дополнительного класса превышает 40 байт. Если приложению требуется более 40 байт, он должен выделить собственную память и сохранить указатель на память в дополнительной памяти класса.

Размер дополнительной памяти окна

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

Поскольку дополнительный объем памяти выделяется из локальной кучи системы, приложение должно использовать лишние окна памяти с осторожностью. Функция RegisterClassEx завершается ошибкой, если объем требуемой дополнительной памяти превышает 40 байт. Если приложению требуется более 40 байт, он должен выделить собственную память и сохранить указатель на память в дополнительной памяти окна.

Функция SetWindowLong копирует значение в лишнюю память. Функция жетвиндовлонг извлекает значение из дополнительной памяти. Элемент кбвндекстра структуры вндклассекс указывает объем дополнительной памяти окна, выделяемой для выделения. Приложение, которое не использует память, должно инициализировать кбвндекстра до нуля.

Источник

RUSТехника