Использование ClassExpert
ClassExpert позволяет вам создавать новые классы, редактировать и обновлять реализацию классов, а также перемещаться по
классам в исходном коде приложений AppExpert. Чтобы связать классы с ресурсами, вы можете использовать ClassExpert с Resource
Workshop.
Запуск ClassExpert
Для запуска ClassExpert сделайте следующее:
- Выбрав Project Open project, откройте проект AppExpert.
- Дважды щелкните "мышью" на целевом узле AppExpert или выберите View ClassExpert (можно также щелкнуть "мышью" в
оперативном меню слева). ClassExpert выводится с перечнем
всех классов приложения и их реализации.
ClassExpert имеет три области, размер которых вы можете изменять с помощью буксировки границ.
Область классов
Здесь перечисляются классы, найденные ClassExpert в текущем
приложении. Информация в областях событий и редактирования зависит от выбранных здесь классов. Чтобы перейти к конструктору
класса в исходном коде, вы можете дважды щелкнуть на классе
"мышью". При этом выводится область редактирования. Используя
оперативное меню, вы можете добавить классы, связать классы документов с классами отображаемых элементов, получить информацию о
классе, перейти к исходному коду класса или файла заголовка и запустить Resource Workshop.
Область событий
В области событий (Events) перечисляются события и виртуальные функции базового класса в классе, выбранном в области классов
(Classes). Информация в области событий зависит от типа базового
класса. Используя оперативное меню этой области, вы можете добавить или удалить обработчики сообщений и экземпляры переменных.
Область редактирования
Это редактор, в котором выводится исходный код элементов,
выбранных в области классов и области событий. Это окно имеет те
же функциональные возможности, что и окно редактирования IDE.
Добавление класса
ClassExpert позволяет вам добавить основанные на ObjectWindows классы и поддерживает один уровень наследования (вручную
можно увеличить число уровней. Чтобы добавить класс, сделайте следующее:
- Щелкните в области классов правой кнопкой "мыши". Выводится меню Speedbar.
- Выберите Create new class или щелкните "мышью" на соответствующей кнопке оперативного меню SpeedBar. Выведется
диалоговое окно Add New Class.
- Выберите базовый класс ObjectWindows, из которого вы хотите создать производный класс. Нажмите Tab.
- Наберите имя, которое вы хотите дать новому классу. Нажмите Tab.
- Наберите имя исходного файла, исходный код которого вы хотите вывести. Файл будет сохранен под именем, заданным в
Source. Нажмите Tab.
- Наберите имя определяющего класс файла заголовка. По умолчанию его имя совпадает с именем исходного файла, а расширение - это .H. Нажмите Tab.
- Если базовым классом является TDialog, нужно задать или
выбрать идентификатор шаблона диалога. Блок списка Dialog
ID содержит идентификаторы всех диалоговых ресурсов в вашем приложении AppExpert. Если вы зададите несуществующий
идентификатор, AppExpert создает пустое диалоговое окно с
данными идентификатором, затем загружается Resource Workshop, так что вы можете определить диалоговое окно.
- Если базовым классом является TFrameWindow или производный
от него класс, в блоке списка Client class вы можете выбрать существующий класс, представляющий клиентную область
нового окна-рамки.
- Если базовым классом является TWindow или производный от
него класс, вы можете щелкнуть "мышью" на командной кнопке
Set Window Properties. Выводится диалоговое окно, в котором вы можете задать характеристики окна.
- Чтобы добавить новый класс, щелкните "мышью" на OK.
Создание типов документа
При создании приложения AppExpert, поддерживающего модуль
Doc/View, вы можете использовать ClassExpert создания классов
отображаемых документов и типов документов. Чтобы создать тип документа, сделайте следующее:
- Создайте класс отображаемого элемента или используйте один
из трех предопределенных классов (TEditView, TListView или
TWindowView).
- Запустите из своего проекта ClassExpert. Щелкните правой
кнопкой "мыши" в области классов, затем выберите в оперативном меню Create doc types.
- Выберите View class. По умолчанию это класс TEditView,
TListView, TWindowView или ваш собственный класс.
- Наберите описание типов файлов вашего документа. Этот
текст выводится в диалоговом окне File Open.
- Наберите необходимые фильтры, разделив их запятыми. Эти
фильтры выводятся в диалоговом окне File Open и используются для фильтрации файлов, которые может открывать пользователь в приложении.
- Наберите используемое по умолчанию расширение файла. Оно
будет использоваться при сохранении.
- Чтобы задать стили документа/отображаемого элемента, щелкните "мышью" на командной кнопке Styles. Вы можете выбирать следующие стили:
Стиль | Описание
|
---|
dtAutoDelete | Удалять объект документа при закрытии последнего отображаемого элемента.
|
dtNoAutoView | Не создавать автоматически заданный по умолчанию тип отображаемого элемента.
|
dtSingleView | Обеспечивать только один отображаемый элемент на каждый документ.
|
dtAutoOpen | Открывает документ при его создании.
|
dtUpdateDir | Обновляет каталог диалога.
|
dtHidden | Скрывает шаблон в списке выбираемых пользователем шаблонов.
|
dtSelected | Указывает последний выбранный шаблон.
|
dtReadOnly | Выбирает при создании диалогового окна доступную только по чтению кнопку с независимой фиксацией.
|
dtOverWritePrompt | Запрашивает пользователя, можно ли перезаписать существующий файл (в диалоге Save As).
|
dtHideReadOnly | Скрывает кнопки с независимой фиксацией, доступные только по чтению.
|
dtPathMustExist | Позволяет пользователю набирать только существующие маршруты.
|
dtFileMusttExist | Позволяет пользователю набирать имена только существующих файлов.
|
dtCreatePrompt | Перед созданием нового документа выводит пользователю подсказку.
|
dtNoReadOnly | Возвращает заданный файл как доступный для записи.
|
- Чтобы добавить тип документа в приложение, щелкните
"мышью" на Add. При этом будет обновлена структура основного исходного файла, в котором описываются типы документов. Документ/отображаемый элемент выводится в списке доступных типов.
- Чтобы вернуться в ClassExpert, щелкните "мышью" на Close.
Добавление и удаление обработчиков событий
Чтобы добавить для события обработчик событий, сделайте следующее:
- Выберите класс для обработчика событий. В области событий
выводятся события.
- Выберите обрабатываемое событие (вы можете расширить список событий, а затем для просмотра SpeedMenu щелкнуть правой кнопкой "мыши").
- Выберите в SpeedMenu Add handler. Если вы выберите добавление обработчика для окна Message, ClassExpert добавляет
запись в таблицу реакции, имя которой определяется по
умолчанию, после чего связанная с обработчиком функция выводится в окне редактирования. Некоторые обработчики запрашивают у вас имя функции перед добавлением в таблицу.
- Чтобы показать, что событие обрабатывается, ClassExpert
отмечает его в области событий.
Удаляется обработчик событий следующим образом:
- Выберите класс для обработчика событий. События выводятся
в области событий.
- Выберите отмеченное событие, связанное с обработчиком, который вы хотите удалить (вам может потребоваться расширить
список событий). Затем для вывода SpeedMenu щелкните на
событии правой кнопкой "мыши".
- Выберите Delete handler. ClassExpert удаляет только запись
в таблице реакции, а не программный код в исходном файле.
Код обработчика выводится в области редактирования, так
что вы можете удалить его. Если вы удалите функцию, удалите его определение из файла заголовка.
Добавление и удаление экземпляров переменной
Экземпляры переменных позволяют легко обрабатывать множество
управляющих элементов. При создании экземпляра переменных ClassExpert добавляет в ваш код буфер передачи. Во время выполнения в
этом буфере собирается информация, и вы можете использовать ее
вместо проверки кода с независимой фиксацией. Чтобы связать экземпляр переменной с управляющим элементом (добавить его), сделайте следующее:
- Выберите управляющий элемент в области событий.
- Щелкните правой кнопкой "мыши" на управляющем элементе и
выберите Add Instance variable.
- В диалоговом окне Add Instance variable наберите имя переменной. Щелкните "мышью" на OK. ClassExpert добавляет в
исходный код приложения файл заголовка (который содержит
описание структуры с записью экземпляра переменной). Переменная выделяется в конструкторе класса в файле .CPP (это
связывает класс ObjectWindows с объектом ресурса).
- Метка управляющего элемента в области событий показывает
класс и имя экземпляра созданной переменной.
Чтобы удалить экземпляр переменной:
- Выберите управляющий элемент с экземпляром переменной, который вы хотите удалить.
- Щелкните на элементе правой кнопкой "мыши" и выберите Delete Instance variable.
- ClassExpert удаляет из вашего кода запись в структуре,
указатель переменной в описание класса и распределение переменной класса, связанное с ресурсом управляющего элемента.
Оставшаяся пустая структура и вызов буфера передачи на программный код не влияют, и удалять их не нужно.
Просмотр исходного кода класса
Чтобы просмотреть исходный код класса, выберите класс в области классов. Исходный код выводится в области редактирования.
Чтобы переместить курсор на конструктор, дважды щелкните "мышью"
на имени в области классов. Для перехода на обрабатываемое события дважды щелкните "мышью" на событии в области событий.
Использование с ClassExpert Resource Workshop
Resource Workshop используется как заданное по умолчанию
средство просмотра сценария ресурсов (.RC). При запуске Resource
Workshop из ClassExpert (щелчком правой кнопкой "мыши" или выбором Edit dialog или Edit menu) Resource Workshop автоматически
загружает для данного приложения файл .RC.
При использовании Resource Workshop с исходным кодом, сгенерированным AppsExpert, запускайте Resource Workshop из ClassExpert, так как Resource Workshop и ClassExpert при внесении изменений в проект обновляют другу друга. При запуске Resource Workshop он проверяет исходный код ресурса на наличие изменений и посылает обновления в ClassExpert.
Запуск из IDE
При запуске Resource Workshop как средства просмотра приложения AppsExpert (с помощью администратора проекта в IDE или
ClassExpert) его поведение отличается от автономного запуска следующим:
- При внесении в Resource Workshop изменений, влияющих на
структуру или функциональные возможности класса их обновление происходит непрерывно в окне ClassExpert.
- Открыть другой сценарий вы не можете.
- При закрытии IDE Resource Workshop также закрывается, и
все внесенные изменения автоматически сохраняются.
- Если вы строите проект, когда Resource Workshop открыт, то
на основе загруженных ресурсов он создает файл .RES.
- Обращаться к Resource Workshop из IDE можно с помощью оперативного меню SpeedBar (щелчком правой кнопкой "мыши")
или выбором ClassExpert.
Использование Rescan
Rescan - это специальное инструментальное средство работы с
проектом, которое проверяет весь перечисленный в проекте исходный
код и обновляет или перестраивает базу данных проекта (файл
.APX). Rescan просматривает в исходном коде специальные маркеры и
перестраивает информацию о ресурсах проекта. Если сканирование
было успешным, то файл базы данных проекта переименовывается в
*.~AP, и создается новый файл базы данных. В противном случае
сохраняется файл *.APX.
Rescan можно использовать для удаления класса, перемещения
класса из одного исходного класса в другой, удаления класса, обработчика, экземпляра переменной или идентификатора диалога, импорта класса из другого объекта AppsExpert или переформирования
запорченного файла базы данных проекта (*.APX).
Удаление класса
- Удалите исходный класс файла из проекта IDE (выбрав исходный узел, щелкнув правой кнопкой "мыши" и выбрав Delete
node). Если исходный файл используется в других классах,
удалите ссылки на класс в других исходных файлах.
- Выберите в проекте AppsExpert, щелкните на нем правой
кнопкой "мыши" и выберите Special Rescan. Rescan сканирует
исходные файлы, перечисленные как зависимые файлы, и использует для построения целевого файла AppsExpert. После завершения Rescan вы возвращаетесь в обновленный исходный
файл проекта и можете построить свое приложение с помощью
ClassExpert.
Перемещение класса
Чтобы переместить класс из одного исходного файла в другой,
сделайте следующее:
- Переместите (вырезанием и вставкой) исходный код класса в
новый файл. Если файл не записан в проекте как узел под целью AppsExpert, добавьте его. Если перемещенный класс был собственным исходным файлом, вы можете удалить из проекта пустой исходный файл.
- Выберите в проекте целевой файл AppsExpert, щелкните правой кнопкой "мыши" для просмотра SpeedMenu, затем выберите
Special Rescan. После завершения Rescan возвращает вас в
окно проекта IDE.
Переименование элемента AppExpert
Чтобы переименовать класс, функцию обработки события, экземпляр переменной или идентификатор диалога, сделайте следующее:
- Используйте редактор IDE для поиска и замены всех вхождений исходного имени новым именем. Проверьте все связанные
с проектом исходные файлы.
- В окне проекта выберите цель AppsExpert, щелкните на ней
правой кнопкой "мыши", затем выберите Special Rescan. После завершения Rescan возвращает вас в окно проекта IDE.
Импорт класса
Чтобы импортировать класс из одного проекта AppsExpert в
другой, сделайте следующее:
- Переместите или скопируйте исходный файл и файл заголовка,
который определяет класс, в исходный каталог и каталог заголовка проекта. Все исходные файлы проекта должны находиться в каталоге исходных файлов проекта (.CPP) или заголовков (.H). Эти каталоги создаются при генерации объекта
AppsExpert.
- Добавьте в проекте IDE в качестве зависимого узла под
целью AppsExpert исходный файла класса (используйте команду Add node оперативного меню).
- В окне проекта выберите цель AppsExpert, щелкните правой
кнопкой "мыши", затем выберите Special Rescan.
Перестроение файла базы данных .APX
Чтобы перестроить потерянный или запорченный файл .APX, сделайте следующее:
- Откройте файл проекта, содержащий цель AppsExpert и зависимые узлы (.IDE).
- Выберите цель AppsExpert, щелкните на ней правой кнопкой
"мыши" и выберите в оперативном меню Special Rescan. После
завершения Rescan возвращает вас в окно проекта IDE.
Утилита WinSight
Утилита WinSight - это средство отладки, которое дает информацию об окнах, классах окон и сообщениях. Вы можете использовать
ее для изучения прикладной программы Windows (вашей или написанной кем-то еще), и увидеть, сколько и каких создается и используется окон, и какие сообщения получает Windows.
Вы можете настроить WinSight, чтобы отслеживать сообщения:
- по окну;
- по классу окна;
- по типу сообщения;
- по комбинации всего, указанного выше.
Нужно помнить, что Winsight - это "пассивный наблюдатель".
Она перехватывает и выводит информацию о сообщениях, но не сохраняет сообщения, получаемые от других прикладных программ.
Начало работы
При двойном нажатии кнопки "мыши" на пиктограмме WinSight
выводится основное окно с используемой по умолчанию конфигурацией, что представляет собой список всех окон, активных в данный
момент в оперативной области. В окне WinSignt выводится дерево
окон, в котором перечислены все активные в оперативной области
окна.
WinSignt позволяет просматривать список классов, дерево окон
и трассировку сообщений.
Когда в основном окне у вас выводится два или более окон, вы
можете расположить их в виде стека (одно за другим) или в виде
массива (одно рядом с другим). Данные конфигурации переключаются
с помощью команды меню View Split Vertical (Вертикальное разбиение) и Split Horizontal (Горизонтальное разбиение).
Запуск и приостановка обновления экрана
Трассировка сообщений отключается при выборе команды
Messages Trace Off (Сообщения Выключение трассировки). Область
трассировки сообщений остается видимой на экране, а трассировка
возобновляется, когда вы выбираете одну из команд меню трассировки сообщений: Selected Classes (Выделенные классы), Selected
Windows (Выбранные окна) или All Windows (Все окна).
Команда Stop! строки основного меню отключает все обновления в реальном времени, выполняемые WinSight. Обычно для областей
поддерживается текущее состояние при регистрации классов, создании и уничтожении окон и поступлении сообщений. Выбор команды
Stop! приостанавливает все эти изменения и изменяет команду меню
на Start!. Выбор команды Start! возобновляет нормальную работу.
Использование команды Stop! имеет две основных цели:
- Дает вам возможность изучить конкретную ситуацию.
- Устраняет непроизводительные затраты на постоянное самообновление изображения в WinSight.
Для отключения трассировки типов сообщений выберите команду
Messages Trace Off. Область трассировки сообщений остается видимой, и трассировка возобновляется при выборе Messages Selected
Classes, Selected Windows или All Windows.
Выбор области просмотра
WinSignt имеет три области (окна) просмотра, которые выводятся в ее основном окне: область списка классов, область дерева
окон и область трассировки сообщений. Вы можете просматривать любую из них. WinSignt автоматически располагает эти области в основном окне с перекрытием.
- Область списка классов показывает все зарегистрированные в
данный момент классы окон.
- Область дерева окон выводит иерархию всех окон оперативной
области (выводится по умолчанию при запуске WinSignt).
- Область трассировки сообщений выводит информацию о принятых выбранными окнами или оконными классами сообщениях.
Чтобы получить более подробную информацию об элементе в области дерева окон или списка классов, выберите окно или класс, а
затем дайте команду Spy Open Detail, или дважды щелкните "мышью"
на окне или классе. В окне Details выводится имя класса, выполняемого модуля и другая информация о классе или окне.
Область списка классов
Иногда вместо выбора для трассировки конкретных окон может
потребоваться просматривать сообщения для всего класса окон. Это
можно сделать с помощью области списка классов.
Использование области списка классов
В этой области выводятся все зарегистрированные классы окон.
Чтобы просмотреть детальную информацию о классе, выделите его и
нажмите Enter или дважды щелкните на нем кнопкой "мыши".
Формат вывода:
Класс (Модуль) Функции Стили
Ромбы после классов при получении окном любого сообщения
становятся черными. Это позволяет видеть, какие окна получают в
данный момент сообщения. Если дочерние окна данного окна в дереве
убраны, то будет инвертироваться ромб данного окна, что указывает
на активность дочерних окон.
"Класс" - это имя класса. Некоторые предопределенные классы
Windows имеют числовые номера. Например, в качестве имени класса
всплывающего меню используется число 32768. Для таких классов показывается как номер, так и имя, например, #32768:PopupMenu. Однако фактическое имя класса состоит только из числа. В формате MAKEINTRESOURCE используется также идентификатор ресурса.
"Модуль" - это имя выполняемого модуля (.EXE или .DLL), который зарегистрировал класс.
"Функция" - это адрес функции класса окна.
"Стили" представляют собой стили cs_ класса. Их имена совпадают с определениями cs_ в файле windows.h, но cs_ удаляется, и
имя указывается с различным регистром символов.
Наблюдение за классами
Чтобы трассировать сообщения для одного или более классов,
выберите эти классы в области списка классов (используя Shift или
Ctrl и щелчок кнопкой "мыши"), затем выберите Messages Selected
Classes. Трассировка сообщений позволяет видеть все сообщения для
окон данного класса, включая сообщения создания.
Область дерева окон
В этой области выводятся все существующие окна (в виде иерархической схемы) с указанием их родства. Эта область позволяет
вам:
- Определить, какие окна активны в оперативной области.
- Просмотреть статус окон, включая скрытые окна.
- Увидеть, какие окна получают сообщения.
- Выбрать окна для трассировки сообщений.
Формат вывода:
Описатель {Класс} Модуль Позиция "Заголовок"
Линии слева показывают структуру дерева. С помощью этих линий каждое окно соединяется с его предком, "братскими" окнами и
потомками. Линии рисуются таким же образом, как в администраторе
файлов. Ромб после каждого окна показывает, имеет ли окно дочерние окна. Если он пустой, то дочерних окон нет. Если он содержит
символ +, то дочерние окна имеются, но они не показаны. Если он
содержит символ -, то имеются дочерние окна, и они выведены в
древовидной схеме (видим по крайней мере один уровень дочерних
окон, другие уровни могут быть скрыты).
"Описатель" - это описатель окна, возвращаемый CreateWindow.
"Класс" - это имя класса окна, описанного в области списка
классов.
"Модуль" - это имя выполняемого модуля (.EXE или .DLL), который создал окно. Строго говоря, это имя модуля, являющегося
владельцем сегмента данных, переданного как параметр hInstance
функции CreateWindow.
"Позиция" может либо не указываться, если окно скрыто, либо
это (x_Begin,y_Begin)-(x_End,y_End), если окно является видимым.
Для окон верхнего уровня это координаты экрана. Для порожденных
окон это координаты в области пользователя родительского окна,
которое используется в CreateWindow для создания порожденного окна.
"Заголовок" - это заголовок окна или текст, возвращаемый
функцией GetWindowText или сообщением WM_GETTEXT. Если заголовок
- это нулевая строка, то кавычки опускаются.
Поиск окна
Утилита WinSight имеет специальный режим для поиска окон.
Она может работать двумя способами: идентифицируя строку в области дерева, соответствующую окну, на которое вы указываете, или
подсвечивая окно, выбираемое вами в дереве окон.
В любом случае режим поиска окна Find Window задается путем
выбора команды Spy Find Window. В данном режиме, когда "мышь" попадает на границы окна, вокруг окна появляется жирная рамка, и
окно в области дерева окон становится выделенным. Когда вы находитесь в режиме Find Window, все другие прикладных программы приостанавливаются.
Либо, находясь в режиме поиска окна, вы можете с помощью
"мыши" или клавиш управления курсором выбрать окно в области дерева окон, и утилита WinSight изобразит жирную рамку вокруг выбранного окна (или окон).
Выход из режима поиска окна
После того, как вы нашли нужное окно, можно выйти из режима
поиска окна, нажав кнопку "мыши" или клавиши Esc или Enter. При
этом рамка будет удалена с экрана, а окно останется выделенным в
дереве окон.
Наблюдение за окнами
После выбора окна из дерева окон с помощью команды Messages
Selected Windows вы можете выполнить трассировку сообщений, приходящих в это окно. Изменение выбора в дереве окна немедленно
сменит окно, для которого должны трассироваться сообщения.
С помощью команды Messages All Windows вы можете также выбрать наблюдение за всеми окнами, независимо от того, что выбрано
в области списка классов или в области дерева окон.
Выбор команды Messages Selected Windows или Windows All Windows, когда область трассировки сообщений является скрытой, приводит в выводу области трассировки сообщений.
Выбор команды Messages Trace запрещает трассировку сообщений, не убирая с экрана область трассировки сообщений.
Подробная информация об окне
Двойное нажатие кнопки "мыши" или нажатие клавиши Enter на
элементе дерева окон приводит к выводу окна Window Detail (Подробная информация об окне), в котором кроме информации о классе окна показана полная информация об окне.
Выбор трассируемых сообщений
Утилита WinSight предоставляет вам несколько способов ограничения трассировки сообщений. Независимо от того, за какими окнами вы наблюдаете, можно задавать конкретный тип сообщений, которые вы хотите трассировать. Сообщения, посылаемые через SendMessage показываются дважды, а диспетчеризуемые сообщения - один
раз.
Использование области трассировки сообщений
По умолчанию WinSignt трассирует все сообщения и выводит их
в области трассировки сообщений. Ограничить число трассируемых
сообщений можно несколькими способами:
- Выберите Message Selected Classes или Messages Selected
Windows, затем выберите классы (в области списка классов)
или окна (в области дерева окон).
- Выберите Message All Windows.
- Выберите Message Options, затем любую из 4 групп сообщений
(см. таблицы). Выбор параметра All Messages запрещает от-
дельные подгруппы и будет трассировать все сообщения.
Другие параметры трассировки сообщений
Две других полезных возможности предоставляет диалоговое окно параметров трассировки сообщений Message Trace Options, одна
из которых позволяет задать формат области трассировки сообщений,
а другая - зарегистрировать трассируемые сообщения в файле.
- Обычно область Message Trace интерпретирует параметры каждого сообщения и выводит их в удобном для чтения формате
(выбирается Interpret Values). Для просмотра параметров
сообщений в шестнадцатиричном виде выберите Hex Values.
- Информация о трассируемых сообщениях выводится обычно в
области трассировки сообщений Message Trace. Однако вы можете передать сообщения в файл, на принтер или дополнительный монитор. Для этого в диалоговом окне Message Trace
Options нужно выбрать Log File и выполнить одно из следующих действий:
- Наберите имя файла трассировки. Если файл уже существует, информация будет добавляться к файлу.
- Наберите имя устройства для вывода информации о регистрации (например, PRN).
- Для вывода на дополнительный монитор наберите AUX (в
CONFIG.SYS нужно задать WINOS.SYS или OX.SYS).
Чтобы остановить регистрацию сообщений, отмените Log File.
Формат вывода:
Описатель ["Заголовок" {Класс}] Сообщение Статус
"Описатель" - это описатель окна, получающего сообщение.
"Заголовок" - это заголовок окна. Если заголовок - это нулевая строка, то вместо него выводится имя класса (в фигурных скобках).
"Сообщение" - это имя сообщения, определенное в файле WINDOWS.H. Существуют также неописанные сообщения Windows, показанные символами в нижнем регистре. Номера неизвестных сообщений
(определенных пользователем) показываются как WM_USER+OxXXXX, если они больше или равны WM_USER, или WM_OxXXXX, если они меньше
WM_USER. Номера зарегистрированных сообщений (из RegisterWindowsMessage) показываются вместе с их зарегистрированными именами в
одиночных кавычках.
"Статус" представляет собой следующее:
- Значение Dispatched показывает, что сообщение получено через DispatchMessage.
- Значение Sent [from XXXX] показывает, что сообщение применяется через SendMessage. Если оно посылалось через другое
окно, то from XXXX показывает описатель окна. Если оно посылалось из того же окна, что и принимает сообщение, то
указывается fromself. Если сообщение поступает от Windows,
то часть from... опускается.
- Return показывает, что сообщение было принято через
SendMessage и теперь возвращается.
- Дополнительная информация, относящаяся к каждому сообщению. В случае возвращаемого сообщения здесь показывается
это значение (в числовой форме или с более конкретной информацией по сообщению, например, wm_GETTEXT. Для посылаемых и диспетчеризуемых сообщений здесь показывается параметры сообщения. WinSight интерпретирует параметры таким
образом, чтобы получилась читаемая форма. Для сообщений,
имеющих связанные с ними структуры данных (например,
WM_CREATE) она перехватывает эти структуры и включает их в
вывод.
Сообщения от "мыши"
WM_HSCROLL | WM_MOUSEACTIVATE
|
WM_LBUTTONDCLICK | WM_MOUSEMOVE
|
WM_LBUTTONDOWN | WM_RBUTTONDBLCLK
|
WM_LBUTTONUP | WM_RBUTTONDOWN
|
WM_MBUTTONDCLICK | WM_RBUTTONUP
|
WM_MBUTTONDOWN | WM_SETCURSOR
|
WM_MBUTTONUP | WM_VSCROLL
|
WM_BUTTONUP | WM_MOUSEFIRST
|
WM_MOUSELAST
|
Сообщения Windows
WM_ACTIVATE | WM_KILLFOCUS
|
WM_ACTIVATEAPP | WM_MOVE
|
WM_CANCELMODE | WM_PAINT
|
WM_CLOSE | WM_PAINTICON
|
WM_CREATE | WM_Q
|
Сообщения ввода
WM_CHAR | WM_MENUSELECT
|
WM_CHARTOITEM | WM_PARENTNOTIFY
|
WM_COMMAND | WM_SYSCHAR
|
WM_DEADCHAR | WM_SYSDEADCHAR
|
WM_KEYDOWN | WM_SYSKEYDOWN
|
WM_KEYLAST | WM_SYSKEYUP
|
WM_KEYUP | WM_TIMER
|
WM_MENUCHAR | WM_VKEYTOITM
|
Системные сообщения
WM_COMPACTING | WM_QUEUESYNC
|
WM_DEVMODECHANGE | WM_SPOOLERSTATUS
|
WM_ENTERIDLE | WM_SYSCOLORCHANGE
|
WM_FONTCHANGE | WM_SYSCOMMAND
|
WM_NULL | WM_TIMECHANGE
|
WM_PALETTECHANGED | WM_WININICHANGE
|
WM_PALETTEISCHANGING | WM_POWER
|
Сообщения инициализации
WM_INITDIALOG | WM_INITMENUPOPUP
|
WM_INITMENU
|
Сообщения буфера вырезанного изображения
WM_ASKCBFORMATNAME | WM_PASTE
|
WM_CHANGECBCHAIN | WM_PAINTCLIPBOARD
|
WM_CLEAR | WM_RENDERALLFORMATS
|
WM_CUT | WM_RENDERFORMAT
|
WM_COPY | WM_SIZECLIPBOARD
|
WM_DESTROYCLIPBOARD | WM_UNDO
|
WM_DRAWCLIPBOARD | WM_VSCROLLCLIPBOARD
|
WM_HSCROLLCLIPBOARD
|
Сообщения DDE
WM_DDE_ACK | WM_DDE_POKE
|
WM_DDE_ADVICE | WM_DDE_REQUEST
|
WM_DDE_DATA | WM_DDE_TERMINATE
|
WM_DDE_EXECUTE | WM_DDE_UNADVISE
|
WM_DDE_INITIATE
|
Неклиентные сообщения
WM_NCACTIVATE | WM_NCMBUTTONDOWN
|
WM_NCCREATE | WM_NCMBUTTONUP
|
WM_NCCALCSIZE | WM_NCMOUSEMOVE
|
WM_NCDESTROY | WM_NCMMOUSEMOVE
|
WM_NCHITTEST | WM_NCPAINT
|
WM_NCLBUTTONDBLCLK | WM_NCRBUTTONDBLCLK
|
WM_NCLBUTTONDOWN | WM_NCRBUTTONDOWN
|
WM_NCMBUTTONDBLCLK | WM_NCRBUTTONUP
|
Сообщения печати
DM_COLOR | DM_PAPERLENGTH
|
DM_COPIES | DM_PAPERSIZE
|
DM_COPY | DM_PAPERWIDTH
|
DM_DEFAULTSOURCE | DM_PRINTQUALITY
|
DM_DUPLEX | DM_PROMPT
|
DM_IN_BUFFER | DM_SCALE
|
DM_INPROMPT | DM_SPECVERSION
|
DM_MODIFY | DM_TTOPION
|
DM_ORIENTATION | DM_UPDATE
|
DM_OUT_BUFFER | DM_YRESOLUTION
|
DM_OUTDEFAULT
|
Управляющие сообщения
BM_GETCHECK | EM_LINEINDEX
|
BM_SETCHECK | EM_SETHANDLE
|
BM_GETSTATE | EM_GETHANDLE
|
BM_SETSTYLE | EM_GETTHUMB
|
BM_SETSTATE | EM_LINELENGTH
|
| EM_REPLACESEL
|
BN_CLICKED | EM_SETFONT
|
BN_PAINT | EM_GETLINE
|
BN_HILITE | EM_LIMITTEXT
|
BN_UNHILITE | EM_CANUNDO
|
BN_DISABLE | EM_UNDO
|
BN_DOUBLECLICKED | EM_FMTLINES
|
| EM_LINEFROMCHAR
|
CB_GETEDITSEL | EM_SETWORDBREAK
|
CB_LIMITTEXT | EM_SETTABSTOPS
|
CB_SETEDITSEL | EM_SETPASSWORDCHAR
|
CB_ADDSTRING | EM_EMPTYUNDOBUFFER
|
CB_DELETESTRING | EM_MSGMAX
|
CB_DIR |
|
CB_GETCOUNT | EN_SETFOCUS
|
CB_GETCURSEL | EN_KILLFOCUS
|
CB_GETLBTEXT | EN_CHANGE
|
CB_GETLBTEXTLEN | EN_UPDATE
|
CB_INSERTSTRING | EN_ERRSPACE
|
CB_RESETCONTENT | EN_MAXTEXT
|
CB_FINDSTRING | EN_HSCROLL
|
CB_SELECTSTRING | EN_VSCROLL
|
CB_SETCURSEL
|
|
CB_SHOWDROPDOWN | LB_ADDSTRING
|
CB_GETITEMDATA | LB_INSERTSTRING
|
CB_SETITEMDATA | LB_DELETESTRING
|
CB_GETDROPPEDCONTROLRECT | LB_RESETCONTENT
|
CB_GETDROPPEDSTATE | LB_SETSEL
|
CB_MSGMAX | LB_SETCURSEL
|
CB_SHOWDROPDOWN | LB_GETSEL
|
CB_SETITEMHEIGHT | LB_GETCURSEL
|
LB_GETTEXT
|
|
CBN_SETFOCUS | LB_GETTEXTLEN
|
CBN_KILLFOCUS | LB_GETCOUNT
|
CBN_EDITCHANGE | LB_SELECTSTRING
|
CBN_EDITUPDATE | LB_DIR
|
CBN_DROPDOWN | LB_GETTOPINDEX
|
CBN_SELCHANGE | LB_FINDSTRING
|
CBN_DBLCLK | LB_GETSELCOUNT
|
CBN_CLOSEUP | LB_GETSELITEMS
|
CBN_ERRSPACE | LB_SETTABSTOPS
|
CBN_SELENDCANCEL | LB_GETHORIZONTALEXTENT
|
| LB_SETHORIZONTALEXTENT
|
DM_GETDEFID | LB_SETTOPINDEX
|
DM_SETDEFID | LB_GETITEMRECT
|
| LB_SETITEMDATA
|
EM_GETSEL | LB_SELITEMRANGE
|
EM_SETSEL | LB_MSGMAX
|
EM_GETRECT |
|
EM_SETRECT | LBN_SELCHANGE
|
EM_SETRECTNP | LBN_DBLCLK
|
EM_SCROLL | LBN_SELCANCEL
|
EM_LINESCROLL | LBN_SETFOCUS
|
EM_GETMODIFY | LBN_KILLFOCUS
|
EM_SETMODIFY
|
|
EM_GETLINECOUNT | STM_GETICON
|
| STM_SETICON
|
Сообщения пера
WIN_USER | WM_RCRESULT
|
WM_GLOBALRCCHANGE | WM_SKB
|
WM_HEDITCTL | WM_PENWINFIRST
|
WM_HOOKRCRESULT
|
Сообщения мультимедиа
MM_ADLIB | MM_MOM_CLOSE
|
MM_JOY1BUTTONDOWN | MM_MOM_DONE
|
MM_JOY1BUTTONUP | MM_MOM_OPEN
|
MM_JOY1MOVE | MM_MPU401_MIDIN
|
MM_JOY1ZMOVE | MM_MPU401_MIDIOUT
|
MM_JOY2BUTTONDOWN | MM_PC_JOYSTICK
|
MM_JOY2BUTTONUP | MM_SNDBLST_MIDIN
|
MM_JOY2MOVE | MM_SNDBLST_MIDIOUT
|
MM_JOY2ZMOVE | MM_SNDBLST_SYNTH
|
MM_MCINOTIFY | MM_SNDBLST_WAVEN
|
MM_MICROSOFT | MM_SNDBLST_WAVEOUT
|
MM_MIDI_MAPPER | MM_WAVE_MAPPER
|
MM_MIM_CLOSE | MM_WIM_CLOSE
|
MM_MIM_DATA | MM_WIM_DATE
|
MM_MIM_ERROR | MM_WIM_OPEN
|
MM_MIM_LONGDATA | MM_WOM_CLOSE
|
MM_MIM_LONGERROR | MM_WOM_DONE
|
MM_MIM_OPEN | MM_WOM_OPEN
|
Другие сообщения
WM_COALESCE_FIRST | WM_MDIGETACTIVE
|
WM_COALESCE_LAST | WM_MDIICONARRRANGE
|
WM_COMMNOTIFY | WM_MDIMAXIMIZE
|
WM_COMPAREITEM | WM_MDINEXT
|
WM_DRAWITEM | WM_MDIRESTORE
|
WM_DROPFILEW | WM_MDISETMENU
|
WM_KEYFIRST | WM_MDITILE
|
WM_MDIACTIVATE | WM_MEASUREITEM
|
WM_MDICASCADE | WM_NEXTDLGCTL
|
WM_MDICREATE | WM_SYSTEMERROR
|
WM_MDIDESTROY
|
Сообщения, не документированные Microsoft
WM_ALTTABACTIVE | WM_ISACTIVEICON
|
WM_BEGINDRAG | WM_LBTRACKPOINT
|
WM_CONVERTREQUEST | WM_NEXTMENU
|
WM_CONVERTRESULT | WM_QUERYDROPOBJECT
|
WM_DRAGLOOP | WM_QUERYPARKICON
|
WM_DRAGMOVE | WM_SETHOTKEY
|
WM_DRAGSELECT | WM_SETVISIBLE
|
WM_DROPOBJECT | WM_SIZEWAIT
|
WM_ENTERMENULOOP | WM_SYNCPAINT
|
WM_ENTERSIZEMOVE | WM_SYNCSTACK
|
WM_EXITMENULOOP | WM_SYSTIMER
|
WM_EXITSIZEMOVE | WM_TESTING
|
WM_FILESYSCHANGE | WM_YOMICHAR
|
WM_GETHOTKEY
|
Назад |Содержание | Вперед