папки Source Files в окне Solution Explorer. В появившемся контекстном меню надо выбрать команду Add Add New Item. В результате будет отображено окно Add New Item (рис. П2.8).
Ðèñ. Ï2.8. Îêíî Add New Item
В окне Templates нужно выделить шаблон C++ File или Header File в зависимости от того, какого типа файл нужно присоединить к проекту. Введите имя файла в текстовое поле Name, например, HelloFromMsgBox, и нажмите кнопку Open. После этого в списке файлов Source Files окна Solution Explorer появится обозначение но вого файла, например, HelloFromMsgBox.cpp, а также откроется окно текстового ре дактора.
Рис. П2.9. Окно Visual Studio.NET после ввода текста в файл HelloFromMsgBox.cpp
После ввода текста основное окно Visual Studio.NET примет вид, показанный на рис. П2.9.
Сохраните набранный текст с помощью команды меню File Save.
Компиляция, сборка и выполнение
Выберите в меню главного окна команду Build Build Solution (Ctrl+Shift+B). Сообщения о ходе компиляции и сборки будут поступать в окно Output. У нас
ошибок нет, поэтому окно выглядит, как показано на рис. П2.10.
Рис. П2.10. Окно Visual Studio.NET после компиляции и сборки проекта HelloFromMsgBox
Откомпилированное приложение можно запустить на выполнение двумя спо собами.
Выполнение в обычном режиме производится с помощью команды меню
Debug Start Without Debugging (Ctrl+F5).
Запуск в отладочном режиме производится с помощью команды меню Debug Start (F5).
Компиляция, сборка и выполнение
583
Работа с редакторами ресурсов
Для добавления ресурсов в приложение вместо команды меню Insert Resource, которая применялась в Visual Studio 6.0, здесь используется команда Project Add Resource. После этой команды появляется диалоговое окно Add Resource. Выбор типа добавляемого ресурса делается так же, как в Visual Studio 6.0.
В Visual Studio.NET вместо панели инструментов Controls используется окно Toolbox, вызываемое с помощью команды меню View Toolbox. Это окно располо жено в левой части главного окна Studio.NET.
Необходимый элемент управления в окне Toolbox выбирается щелчком мыши. Затем для размещения элемента управления на форме диалога делается повтор ный щелчок мыши в том месте, где следует расположить элемент.
Окно свойств для элементов управления здесь вызывать не нужно, так как свой ства выбранного элемента управления отображаются в окне Properties, которое находится либо ниже окна Solution Explorer, либо рядом с ним.
Другие действия с проектами осуществляются примерно так же, как и при ра боте в среде Visual Studio 6.0.
584
Приложение 3. Работа с утилитой Spy++
Приложение 3
Работа с утилитой Spy++
В Microsoft Visual Studio 6.0 (а также в Visual Studio.NET) есть инструменталь ное средство под названием Spy++. Эта программа «шпионит» за окном другого приложения, чтобы разработчик мог иметь представление о том, какие сообще ния проходят через это окно.
Вэтом приложении описывается работа с утилитой Spy++ в составе Visual Studio
6.0.Запустить утилиту можно при помощи команды меню Visual Studio Tools Spy++. Окно утилиты Spy++ имеет вид, показанный на рис. П3.1.
Рис. П3.1. Окно утилиты Spy++
Технология шпионского наблюдения за интересующим вас приложением XXX довольно проста. Сначала запустите на выполнение приложение XXX. Затем раз местите на экране окно утилиты Spy и окно приложения XXX так, чтобы они были видны одновременно и не перекрывали друг друга. Выполните команду меню Spy Messages. В результате будет отображено диалоговое окно Message Options (рис. П3.2).
На вкладке Windows схватите левой кнопкой мыши пиктограмму Finder Tool и, удерживая кнопку, перетащите ее в то окно приложения XXX, за которым вы хоти те наблюдать. После этого отпустите левую кнопку мыши.
Приложение 3. Работа с утилитой Spy++
585
Ðèñ. Ï3.2. Îêíî Message Options
В группе Selected Object будет отображена следующая информация:
дескриптор окна (Window);
заголовок окна (Text);
имя класса;
стиль;
координаты окна;
дескриптор потока (Thread ID);
дескриптор процесса (Process ID).
Теперь надо нажать кнопку OK, и будет отображено окно Messages (Window…)
(рис. П3.3).
Ðèñ. Ï3.3. Îêíî Messages (Window…)
После этого утилита Spy++ готова фиксировать все сообщения, поступающие в «помеченное» окно. Сообщения фиксируются в окне Messages (Window… ) в сле дующем формате:
Текущий номер
Дескриптор
Код сообщения
Идентификатор
Значения
сообщения
îêíà
сообщения
параметров
586
Приложение 3. Работа с утилитой Spy++
Код сообщения может иметь одно из значений, приведенных в табл. П3.1.
Таблица П3.1. Возможные коды сообщений
Код Описание
PСообщение было отправлено в очередь сообщений с помощью функции PostMessage
SСообщение было отправлено в очередь сообщений с помощью функции SendMessage
sСообщение было отправлено с помощью SendMessage, но служба безопасности (security) не позволяет получить возвращаемое значение
RКаждой строке с кодом S должна соответствовать строка с кодом R (return), которая содержит значение ответного сообщения. Иногда вызовы сообщений вложены друг в друга, когда обработчик одного сообщения посылает другое сообщение
При первом сеансе использования Spy++ вас, по видимому, поразит количество сообщений, протекающих через окно. Например, при нажатии кнопки закрытия окна в основном окне наблюдается более сорока сообщений.
Можно, однако, фильтровать поток сообщений, фиксируемых в окне Messages (Window … ), чтобы упростить анализ работы приложения. Для фильтрации сооб щений вернитесь в диалоговое окно Message Options и откройте вкладку Messages (рис. П3.4).
Рис. П3.4. Вкладка Messages
Здесь есть два механизма включения/исключения фиксируемых сообщений:
1.В группе Message Groups можно включить или исключить группу сообщений, относящихся либо к некоторому типу элемента управления, либо к некото рому внешнему источнику сообщений. Например, сообщения, поступающие от мыши.
2.В списке Messages to View содержится полный перечень сообщений, и каждое из них можно включить или исключить. По умолчанию все сообщения вклю чены.
Использование утилиты Spy++ помогает иногда понять, почему ваше прило жение работает не так, как вы ожидали.
Приложение 3. Работа с утилитой Spy++
587
Список литературы
1.Петзолд Ч. Программирование для Windows 95. Т. 1. — СПб: BHV — Санкт Петербург, 1997. — 739 с.
2.Мюррей У., Паппас К. Создание переносимых приложений для Windows. — СПб: BHV — Санкт Петербург, 1997. — 816 с.
3.Саймон Р. Microsoft Windows 2000 API. Энциклопедия программиста. — Киев: ДиаСофт, 2001. — 1008 с.
4.Вильямс М. Программирование в Windows 2000. Энциклопедия пользователя. — Киев: ДиаСофт, 2000. — 640 с.
5.Рихтер Дж. Windows для профессионалов: создание эффективных Win32 приложений с учетом специфики 64 разрядной версии Windows. — СПб: Питер, 2001. — 752 с.
6.Юань Фень. Программирование графики для Windows. — СПб: Питер, 2002. — 1072 с.
7.Румянцев П. В. Азбука программирования в Win32 API. — М.: Горячая линия – Телеком, 2001. — 312 с.
8.Касперски К. Техника оптимизации программ. Эффективное использование памяти. — СПб: BHV — Санкт Петербург, 2003. — 464 с.
9.Павловская Т., Щупак Ю. С++. Объектно ориентированное программирование: Практикум. — СПб: Питер, 2004. — 265 с.
588
Приложение 3. Работа с утилитой Spy++
Алфавитный указатель
À
atomic access 459
B
bitmap 59
bitmap stretching mode 182 brush 59
Button 323
D
DDB 175
DDK 19 device space 67 dialog box 304
dialog procedure 304 dialog template units 308 DIB 175
Примитив синхронизации 459 Пропускная способность 491 Процесс 443 процесс 17
Ð
Рабочая область 563 разрешение системного таймера 487 растеризация шрифта 120 растровая графика 174 Растровая кисть 99 растровая операция 79 растровое изображение 59 Регион 59, 109 Регион отсечения 60 Регулятор 428 редактор. См. См. AppBrowser
режим масштабирования растра 182 режим отображения 71
режим отображения MM_TEXT 72
режим пользователя 441 режим рисования 80 режим смешивания фона
OPAQUE 81 TRANSPARENT 81
режим ядра 441 Ресурсы 242 родительское окно 18
Ñ
семафор 466 Сервер 473
Система координат устрой ства 67 системная очередь сообще ний 22
Системное время 487
590
Алфавитный указатель
Скан код 214 скан код 41 Событие 464
совместимый контекст 65 Сокеты 470 сообщение 21 «сообщения