КАК подготовить и запустить проект Win32 API?
КАК выглядит простейшая программа для Windows?


КАК подготовить и запустить проект Win API?

Часто у читателей возникает резонный вопрос: "У меня есть текст API - программы. Как мне его запустить?". В книгах по API обычно идут сплошные исходные тексты, и это очень хорошо. Но редко где объясняется, а как же запустить свою первую программу?
Поэтому, перед тем, как попросить вас что-то набрать, я хочу научить своих читателей пользоваться компилятором. Проще всего компилировать API программы в Visual C++ (часть большого пакета программ Visual Studio компании Microsoft), поэтому мы будем пользоваться именно им.
Следующий резонный вопрос - какая версия? В 1998-м году вышла самая популярная версия Visual Studio 6.0, которая, как не странно в некоторых фирмах используется до сих пор. Именно в то время программирование для Windows развивалось особенно бурно, и было подготовленно настоящее море специалистов по 6-й версии. Она проста в использовании и не содержит многих наворотов, которые включали в последующие версии, связанных с Интернет-технологиями и базами данных. Многие классные программисты, в совершенстве владеющие MFC просто не хотят переучиваться от того, к чему привыкли. Некоторые используют сразу несколько версий для совместимости.
Часто мне приходят письма читателей, а какую версию вы нам посоветуете?
Я всегда отвечаю, что версия роли не играет. Только в 6-й студии процесс создания проекта несколько отличен. В Visual Studio .NET (7.0, 7.1), а также в 2003-й и 2005-й процесс создания идентичен.
У вас может стоять любая из этих версий, и вам останется только выбрать рекомендации для вашей версии.

Итак, маленькая предыстория.
Когда мы работали в Borland C++ 3.1 достаточно было создать новый файл, настучать в него текст программы и запустить. Компилятор принимал имя файла и создавал выполнимый EXE-файл. С тех пор концепция программирования несколько изменилась. Программисты для Windows обычно работают с очень большим количеством файлов, которые объединены в проект. Проект включает в себя не только исходные тексты, но и библиотеки и внешние текстовые файлы, используемые для записи промежуточных и конечных результатов, файлы типа Excell, базы данных XML, иконки, курсоры, картинки, аудиои видеофайлы и многое другое. Поэтому ошибкой было бы писать текст в редакторе типа "Блокнот", а потом пытаться открыть его с помощью VC++ да ещё и скомпиллировать. Visual С изначально понимает только проекты, причём созданные в нём самом.
Подчиняясь суровой необходимости, открываем Visual C++. На экране то, что обычно. Ничего. В лучших традициях Microsoft - никакого намёка на то, что делать дальше...

Сейчас вам предстоит определиться с тем, какая версия Visual Studio стоит на вашем компьютере. Если их несколько, имеет смыл использовать самую новую. Программисты - это люди завтрашнего дня.

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

Шаг 1
Запуск программы

Запустите программу Visual C++ через меню пуск. На экране появится пустое окно программы, впрочем, готовое к сотрудничеству. Беглый осмотр говорит нам о том, что в программе есть свойственная всем продуктам Microsoft панель управления для удобного редактирования текстов, а также меню. Назначение многих элементов меню и кнопок из панели управления мы будем разбирать по ходу пьессы.


 

Шаг 2
Создание проекта

В Visual Studio можно создавать удивительно много полезных штук. Создание Win API - программ - не единственное, что в ней можно делать. Чаще всего она используется для создания программ на основе библиотеки классов MFC. Но и это не обязательно. Поэтому, при создании нового проекта, надо его как следует настроить.

Выберите пункты меню File->New->Project. У вас появятся аналогичные окна New или New Project. Для версий 6.0 и 7.0 соответственно.


В списке перечислены основные типы проектов, которые можно создавать в Visual C++. Освоим пока только один из них.

Шаг 3
Определение содержания

В окне New (New Project) выберите тип "Win 32 Application" ("Win32 Project"). Win 32 Application - это и есть программа на API. Сейчас от нас требуется дать имя нашему проекту - заметьте, не файлу, не будущей программе, а проекту. В большинстве случаев это имя может быть любым, но мой вам совет - давайте говорящие имена, чтобы потом не гадать, чем Project4 отличается от Project111. Пусть имя первого проекта будет First. В поле Location будет указан путь, по которому будет создана одноимённая папка для проекта First, в которой будет размещён весь наш проект. Нажмите Ok.

Это ещё не всё. Появится следующее окно, которое будет просить определить содержание проекта. В Visual C++ есть некоторые шаблоны, которые позволяют избавить разработчика от многих рутинных операций - они сами создают исходные файлы и даже прописывают в них какой-то минимальный код. Так, например, чтобы не перетруждаться, мы можем создать готовое окно с меню и строкой состояния. К шаблонам мы ещё вернёмся, а пока изучим всё с азов. В Visual C++ 6.0 надо поставить галочку на An Empty Project ("Пустой проект"), так как мы будем создавать всё вручную, и нажать кнопку Finish. В 7-й версии надо перейти на закладку Application Settings ("Настройки приложения") и поставить галочку Application Type - Windows Application, Application options: Empty рroject. И тоже нажать Finish ("Завершить") .

Шаг 4
Пустой проект

У вас появился готовый проект, правда в нём пока ещё нет ровным счётом ничего. У нас есть проект, но пока нет программы. Остаётся набрать исходный текст и добавить его в проект. Вообще особенность пустых проектов - то, что надо добавлять в него все файлы вручную, несмотря на то, исходники это, библиотеки или ресурсы.
Вот такой вид будут иметь пустые проекты:

Теперь познакомимся поближе с редактором. Как и в любой программе Windows, в верхней части окна расположены меню и панель инструментов. Она стандартная для всех приложений Microsoft, и я думаю, со многими кнопками (такими, как Сохранить, Копировать, Вырезать, Вставить) вы уже знакомы.
В нижней части программы, как и в Borland C++ окно комментариев компилятора. В нём будет вестись журнал компиляции, компоновки и построения, отображаться статус проекта, выдаваться предупреждения (warnings), ошибки (errors) и комменатрии. Чтобы оно не мешало, его можно закрывать, когда вы работаете с кодом.
В левой части окно навигатора, в котором есть три вкладки: Files (Файлы), ClassView (Вид классов) и Resource (Ресурсы).
Вкладка FileView - файлы, которые входят в проект. Они условно разделены на три папочки: Source (исходники), Headers (Библиотеки, заголовочные файлы), Resources (ресурсы - картинки, иконки, курсоры). В больших проектах количество файлов и папок может доходить до тысячи, поэтому очень удобно иметь весь список файлов перед собой, чтобы быстро получить доступ к нужному.
ClassView - диаграмма классов, используемых в программе. Поскольку язык API процедурный, нам она пока не понадобится.
ResourceView - содержит наши ресурсы. Они описаны в файле ресурсов. Этот файл носит вспомогательный характер, но он очень важен. В нём описаны все ресурсы приложения - диалоговые окна, панели инстрментов, меню, картинки, иконки, курсоры и многое другое. В MFC этот файл генерируется автоматически, нам придётся создавать его вручную. Для этого придётся овладеть нехитрым языком описания ресурсов. Обычно файл ресурсов имеет расширение: *.RC

Шаг 5
Включение нового файла

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

6-я версия. Создание нового файла. Visual C++ 6.0

Выберем File->New. Появившееся окно похоже на то, что мы использовали для создания проекта. Но теперь в нём надо указать тип создаваемого файла С++ Source File - исходный текст на языке С++. Введём его имя в поле Name. Оно будет тоже First, как и имя проекта. Расширение срр указывать не обязательно - оно будет добавлено автоматически. Нажмите ОК.
На экране появился открытый файл First.cpp, в который уже можно вводить исходный текст. Но то, что мы его создали вовсе не означает, что компилятор его "увидит". Его, оказывается, надо ещё включить в проект! Ладно, выбираем пункт меню Project->Add to Project. В окне "Открыть" укажем наш файл.
7-я версия. Добавление нового файла. Visual C++ 7.0

Выберем File->New->File. Появится окно, представленное ниже. Вот, как это будет выглядеть:
Выберем тип C++ Source File и нажмём Open. По умолчанию создаётся файл Source1.cpp. Сохраним его в папке проекта как First.cpp. Затем добавим в проект. Project->Add Existing Item. В окне укажем имя нашего файла. First.cpp.

Вот теперь всё готово для ввода программы. Если вы выберите в навигаторе вкладку Files и раскроете папочку Source, то увидите, что в ней появился наш первый исходный файл First.cpp!

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


Шаг 7
Ввод исходного текста программы

Вот теперь в файл можно ввести какой-то текст. Итак, первая программа!
Самая первая программка будет такой:

Листинг №1 "Первая программа"

#include<windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)
{
MessageBox(0, "Привет, Win32 API", "Первое окно...", MB_ICONINFORMATION|MB_OK);

}

Не бойтесь, если вы ещё не знаете языка API. мы здесь и собрались для его изучения. Пока мы просто учимся работать с компилятором. Введите этот текст в файл First.cpp и сохранить его. Запустить программу на выполнение можно кнопкой F5. Компилятор переидёт в режим отладки нашего проекта. Вас спросят, хотите ли вы построить выполнимый файл. Вы ответите Yes, и через какое-то время, если всё правильно набрали, увидите свою программу. Так будут запускаться на исполнение все наши программы. После запуска build в папке проекта появится вложенная папка Debug, в которую будет помещён созданный нами файл First.exe.

Эта программка не содержит главного окна, которое в большинстве своём считается обязательным элементов для всех Windows-программ, если конечно они не консольные, однако это уже полноценная программа для Windows, о чём мы заявили, когда включили библиотеку windows.h. Далее идёт тело функции WinMain().

WinMain() - главная функция любой API программы - точка входа в неё. Нечто подобное представляла собой и функция main(), когда мы работали в DOS.
Как вы уже поняли, программа выводит на экран информационное окно, с которым вы
конечно уже нераз сталкивались, когда работали в Windows в качестве пользователя.

Как видите, всё предельно просто. Обыкновенный процедурный язык СИ. Единственное, что сейчас для нас будет представлять интерес - это функция вывода окна информационного сообщения. Обычно такие сообщения бывают четырех видов: информационые (буковка i на синем фоне), вопросительные (знак вопроса), предупредительные (восклицательный знак), сообщения об ошибке (знак "Стоп"). API функция MessageBox как раз и занимается тем, что формирует такое окно, наполняя его содержимым. Она предназначена для создания информационных сообщений Windows. Функция простая, но чрезывачайно важная, так как эти окна используются почти в каждой программе. Кроме того, их очень удобно выводить для контроля промежуточных результатов работы - значений переменных, состояния флагов.

Итак, рассмотрим функцию по порядку. Первый аргумент - идентификатор родительского окна. У нас нет главного окна программы в принципе, поэтому он равен 0. Второй аргумент - строка текста, которая будет выведена непосредственно в окне. Третий - заголовок этого окна.
Чтобы изменить стиль окошка, измените 4-й аргумент. Он определяет тип окна в зависимости от типа сообщений:

Число кнопок также может варьироваться:

Окно, создаваемое MessageBox - стандартное окно Windows. Также к стандартным окнам относятся такие известные вам диалоги, как: окно выбора папки, окно открытия и сохранения файлов, окно выбора цвета, шрифта и окно настройки принтера. Они нам очень помогают, но к сожалению никогда не заменят главного окна программы, которое мы будем создавать сами.
Это была разминка с целью научить вас создавать проекты для Win32 API. С каждой новой главой, мы будем исследовать всё более сложные и всё более интересные вещи.

Задание:
Измените информационную иконку на вопросительную и придумайте вопрос, который задаёт программа (например "Вы действительно хотите удалить файл?"). В строке заголовка окна введите имя программы (в данном случае "First"). Пусть в новом окне теперь будут две кнопки: "ОК и Отмена". Запустите программу на выполнение.

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

Меню программы Окно файлов, ресурсов и классов проекта Долгожданный Solution - описание проекта, элементов управления, диалоговых окон Рабочее поле Информация о созданных ранее проектах Сообщения об ошибках Панель инструментов Рабочее пространство Здесь отображаются файлы проекта Ничего не было, ничего нет и ничего не будет

Назад Главная Вперёд

Сайт управляется системой uCoz