Без окон, без дверей...

Следующий способ уменьшить размер программы заключается в ответе на вопрос: "Из-за чего программа, созданная в Visual C++, получается боль­шой?" Ответ очень прост, C++ является объектным языком. В нем каждый элемент представляет собой объект, который обладает своими свойствами, методами и событиями. Любой объект вполне автономен и многое умеет делать без ваших указаний. Это значит, что вам нужно только подключить его к своей форме, изменить нужным образом свойства, и приложение гото­во! И оно будет работать без какого-либо прописывания его деятельности.

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

Но как же тогда создать компактный код, чтобы программа занимала минимум места на винчестере и в оперативной памяти? Тут есть несколько вариантов.

  1. Не использовать библиотеку MFC (для любителей Borland Delphi это библиотека VCL ), которая упрощает программирование. В этом случае придется весь код набирать вручную и работать только с WinAPI ( Win ­ dows Application Programming Interface , прикладной программный интер­фейс). Программа получается очень маленькой и быстрой. Результирую­щий код будет меньше, чем при использовании MFC в сочетании с самым большим сжатием. Но таким образом вы лишаетесь простоты визуального программирования и можете ощутить все неудобства про­граммирования с помощью чистого WinAPI.
    Для большей оптимизации размера файла можно использовать Assembler , но он слишком сложен, да и писать программу на нем намного дольше, чем даже на чистом С. Именно поэтому данная тема не рассматривается в этой книге.
  2. Сжимать готовые программы с помощью компрессоров. Объектный код сжимается в несколько раз, и программа, созданная с использованием MFC , может превратиться из монстра в 300 Кбайт в скромного по разме­рам "зверя", занимающего на диске всего 30—50 Кбайт. Главное преиму­щество состоит в том, что вы не лишаетесь возможностей объектного программирования и можете спокойно забыть про неудобства WinAPI.

Второй метод мы уже обсудили (см. разд. 1.1), поэтому остается только опи­сать первый вариант.

Если вы хотите создать действительно компактную программу, то необхо­димо забыть про все удобства. Вы не сможете подключать визуальные фор­мы или другие удобные модули, написанные фирмой Microsoft для упроще­ния жизни программиста. Нельзя использовать классы или компоненты ActiveX. Только функции API самой Windows и ничего больше.

Теперь переходим к практическим занятиям. Запустите Visual C++ и создайте новый проект. Для этого нужно выбрать команду меню File / New / Project (Файл/Новый/Проект). Перед вами откроется окно создания нового проекта (рис. 1.5). Слева расположено дерево типов проектов. Нас интересует C++, поэтому выберите пункт Visual C++ Projects . Этот пункт мы будем выбирать при написании абсолютно всех примеров из данной книги. С правой стороны в списке Templates (Шаблоны) появятся иконки для создания различных проек­тов на основе мастеров. Выберете пункт MFC Application (Приложение MFC).

Внизу окна расположены две строки ввода. В первой вы должны указать имя создаваемого проекта. Оно будет использоваться в качестве имени за­пускаемого файла и имени файла, который вы будете в дальнейшем откры­вать для редактирования. Давайте здесь укажем TestMFC.




Рис. Окно Мастера создания нового проекта

В строке Location (Расположение) нужно указать путь к папке, в которой среда разработки создаст необходимые проекту файлы. Я рекомендую завес­ти свою папку с именем, например, My C++ Projects , в которой будут раз­мещаться все проекты. Выберете эту папку и нажмите ОК. По окончании работы мастера у вас в папке My C++ Projects появится еще одна папка с именем TestMFC , в которой и будут находиться все файлы данного проекта.

Как только вы нажали O К в окне создания нового проекта (см. рис. 1.5), перед вами откроется окно Мастера создания нового MFC -приложения (рис. 1.6).

Вы можете сразу нажать кнопку Finish, чтобы завершить его работу с пара­метрами по умолчанию, или предварительно указать свои настройки. Наша задача — создать маленькое приложение, поэтому на данном этапе постара­емся оптимизировать то, что может создать для нас мастер.

С левой стороны окна расположены разделы. Выделяя их, вы можете настраивать соответствующие параметры. Давайте просмотрим все разделы и установим необходимые значения, а заодно познакомимся с теми пара­метрами, которые будут использоваться для создания приложений при рас­смотрении последующих примеров:

Во всех остальных разделах оставляем значения по умолчанию, потому что мы не будем использовать базы данных или документы. В большинстве слу­чаев нам будет достаточно окна и меню. А первое время постараемся обхо­диться вообще без MFC .

Нажмите кнопку Finish , чтобы завершить работу мастера. По завершении его работы вы увидите главное окно среды разработки Microsoft Visual C++, представленное на рис. 1.7. Это окно мы будем использовать достаточно часто, поэтому в процессе работы уточним все детали.

Рис. 1.7. Главное окно среды разработки Microsoft Visual C++

Сейчас нас интересуют параметры проекта. Мы должны отключить все, что нам будет мешать. При сборке проекта в Visual C++ по умолчанию могут использоваться два вида настроек: debug и release . Первый необходим на этапе разработки, и в этом режиме Visual C++ создает запускаемый файл, который содержит слишком много дополнительной информации. Она будет необходима вам в среде разработки в дальнейшем при отладке программы и поиске ошибок. Во втором режиме эта информация отключается, и запус­каемый файл будет меньшего размера.

В верхней части окна на панели с кнопками найдите выпадающий список, в котором написано Debug . Измените это значение на Release .

Среда разработки Visual C++ может создавать запускаемые файлы, ис­пользующие MFC -библиотеки, двух типов: статические и динамические. По умолчанию используется динамическая сборка. В таком режиме запус­каемый файл получается меньшего размера, но он не будет работать без ди­намических библиотек, таких как mfcXXX.dll, где XXX — это номер версии среды разработки.

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

Чтобы изменить тип использования MFC , в окне Solution Explorer сначала выберите имя вашего проекта, а затем меню команду Project/Properties. На рис. 1.8 представлено окно свойств проекта.


Рис. Окно свойств проекта

Слева в окне расположены разделы свойств. Нас будет интересовать раздел General (Основные). Выделите его, и в основном окне появится список со­ответствующих свойств. Найдите свойство Use of MFC и измените его зна­чение на Use of MFC in a Static Library. Нажмите кнопку OK , чтобы закрыть окно и сохранить изменения.

Теперь соберем наш проект в готовый исполняемый файл. Для этого нужно выбрать команду меню Build/Build solution (Построить/Построить проект). Внизу главного окна (см. рис. 1.7), в панели Output (Вывод) будет появляться информация о ходе сборки. Дождитесь, пока не появится сообщение типа:

---------------------- Done ----------------------
Build : 1 succeeded , 0 failed , 0 skipped

Теперь перейдите в папку, которую вы выделили под хранение проектов, и найдите там папку TestMFC . В ней расположены файлы с исходным ко­дом нашего проекта, сгенерированные мастером. Тут же должна быть папка Release , в которой среда разработки создала во время компиляции промежуточные и исполняемый файлы. Выделите файл TestMFC . exe и по­смотрите его свойства (надо щелкнуть правой кнопкой мыши и выбрать в появившемся меню пункт Свойства). Размер нашего пустого проекта со­ставляет 386 Кбайт. Это очень много.

Попробуйте открыть его в программе ASPack и сжать. У меня сжатый ис­полняемый файл составил 187 Кбайт. Сжатие составило практически 50%, и это уже более или менее приемлемый размер для шуточной программы.

free-templates.ru
Сайт управляется системой uCoz