Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

Использование 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

Назад |Содержание | Вперед

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...