C++ Builder - вопросы программирования



       lurium mp3, каталог mp3 песен       отели анталии

C++ Builder - вопросы программирования

Интерес к программированию постоянно растет. Это связано с развитием и внедрением в повседневную жизнь информационных технологий. Если человек имеет дело с компьютером, то рано или поздно у него возникает желание, а иногда и необходимость, научиться программировать. Среди пользователей персональных компьютеров в настоящее время наиболее популярна операционная система Windows, и естественно, что тот, кто хочет программировать, хочет и писать программы, которые будут работать в Windows.
Несколько лет назад рядовому программисту оставалось только мечтать о создании своих собственных программ, работающих в Windows. Единственным средством разработки был Borland C++ for Windows, явно ориентированный на профессионалов, обладающих серьезными знаниями и опытом. Бурное развитие вычислительной техники, потребность в эффективных средствах разработки программного обеспечения привели к появлению на рынке целого ряда систем программирования, ориентированных на так называемую "быструю разработку", среди которых особо следует отметить Microsoft Visual Basic и Borland Delphi. В основе систем быстрой разработки (RAD-систем, Rapid Application Development — среда быстрой разработки приложений) лежит технология визуального проектирования и событийного программирования, суть которой заключается в том, что среда разработки берет на себя большую часть работы по генерации кода программы, оставляя программисту работу по конструированию диалоговых окон и написанию функций обработки событий. Производительность программиста при использовании RAD систем фантастическая!
Успех и популярность Delphi вызвал желание фирмы Borland распространить методы быстрой разработки на область профессионального программирования, что и привело к появлению Borland C++ Builder.

Введение
C++ Builder — это среда быстрой разработки, в которой в качестве языка программирования используется язык C++ Builder (C++ Builder Language). Не вдаваясь в подробности, можно сказать, что язык C++ Builder — это расширенный C++. Например, в C++ Builder есть строковый (AnsiString) и логический (bool) типы, которых нет в классическом C++.
В настоящее время программистам стала доступна очередная, шестая версия пакета — Borland C++ Builder 6. Как и предыдущие версии, Borland C++ Builder 6 позволяет создавать различные программы: от простейших однооконных приложений до программ управления распределенными базами.
Borland C++ Builder может работать в среде операционных систем от Windows 98 до Windows XP. Особых требований, по современным меркам, к ресурсам компьютера пакет не предъявляет: процессор должен быть типа Pentium или Celeron (рекомендуется Pentium II 400 МГц); объем оперативной памяти должен составлять не менее 128 Мбайт (рекомендуется 256 Мбайт) и свободное дисковое пространство должно быть достаточным (для полной установки версии Enterprise необходимо приблизительно 750 Мбайт).

Начало работы
Запускается C++ Builder обычным образом, т. е. выбором из меню Borland C++Builder 6 команды C++Builder 6

Запуск C++Builder
Вид экрана после запуска C++ Builder
Главное окно
На вкладке Properties перечислены

Демонстрация возможностей C++ Builder
Для демонстрации возможностей C++ Builder и технологии визуального проектирования и событийного программирования займемся разработкой программы, используя которую можно вычислить силу тока в электрической цепи. Сила тока вычисляется по известной формуле: I = U/R, где U — напряжение источника (вольт); R — величина сопротивления (Ом). Вид диалогового окна программы во время ее работы (после щелчка на кнопке Вычислить)

Окно программы вычисления силы тока
Форма
Свойства формы (объекта Form)
Изменение значения свойства Caption
Установка значения путем выбора из списка
Изменение значения уточняющего свойства
Чтобы задать свойства шрифта щелкните
Значения свойств стартовой формы
Компоненты
Компонент Edit — поле редактирования

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

Холст
Методы вычерчивания графических примитивов
Координаты точек поверхности формы (холста)
Карандаш и кисть
Свойства объекта Реn (карандаш)
Свойства объекта Brush (кисть)
Графические примитивы
Линия
Метод RoundRec вычерчивает прямоугольник
Многоугольник

Компонент Animate
Большинство современных программ, работающих в среде Windows, являются мультимедийными. Такие программы обеспечивают просмотр видеороликов и мультипликации, воспроизведение музыки, речи, звуковых эффектов. Типичные примеры мультимедийных программ — игры и обучающие программы

Значок компонента Animate
Свойства компонента Animate
Значение свойства conwonAVI
Форма программы "Просмотр анимации"
Листинг
Компонент MediaPlayer
Значок компонента MediaPlayer
Компонент MediaPlayer - 2
Кнопки компонента MediaPlayer
Свойства компонента MediaPlayer

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

Локальные и удаленные базы данных
Структура базы данных
Псевдоним
Компоненты доступа и манипулирования данными
Создание базы данных
Создание псевдонима базы данных
Начало работы над новой таблицей
В списке Table type надо выбрать
В диалоговом окне Create Table
Тип поля определяет

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

Создание модуля компонента
Начало работы над новым компонентом
Листинг 6 1
Листинг 6 2
Листинг 6 3
Листинг 6 4 nkedit cpp
Тестирование компонента
Форма приложения "Тест компонента NkEdit"
Листинг 6 5
Тестирование компонента

Ввод/вывод
еред тем как приступить к созданию консольного приложения, рассмотрим функции, обеспечивающие вывод на экран и ввод с клавиатуры. Наиболее универсальными функциями, обеспечивающими вывод и ввод информации в консольных приложениях, являются функции printf и scanf. Для того чтобы программа могла их использовать, в начало программы надо включить директиву #include stdio.h.

Функция printf
Спецификаторы формата
Управляющие последовательности
Константы в качестве параметра цвета
Функция scanf
Создание консольного приложения
Приступить к созданию консольного
В окне Console Wizard надо задать
Шаблон консольного приложения
Листинг

Создание справочной системы
Каждая программа должна обеспечивать пользователя справочной информацией. Существует два способа отображения справочной информации: классический и современный, в "интернет-стиле". Классический способ отображения справочной информации применяется большинством приложений, в том числе и C++ Builder.

Два способа представления справки
Подготовка справочной информации
Чтобы задать идентификатор раздела
Вставка в документ сноски
Оформление ссылки на другой раздел
Проект справочной системы
Начало работы над новым проектом
Ввести название проекта
Окно проекта справочной системы
Добавить в проект rtf файл

Программа InstallShield Express
Одним из популярных инструментов создания инсталляционных программ является пакет InstallShield Express. Borland настоятельно рекомендует использовать именно эту программу, поэтому она есть на установочном диске C++ Builder.

Новый проект
Начало работы над новым проектом
В левой части окна проекта
Структура
Команды группы Organize Your Setup
Параметры команды General Information
Некоторые псевдонимы каталогов Windows
Несколько элементов в группе Features
Команда Setup Types
Выбор устанавливаемых компонентов

Система проверки знаний
естирование широко применяется для оценки уровня знаний в учебных заведениях, при приеме на работу, для оценки квалификации персонала учреждений, т. е. практически во всех сферах деятельности человека. Испытуемому предлагается ряд вопросов (тест), на которые он должен ответить

Требования к программе
Диалоговое окно программы тестирования
Файл теста
Форма приложения
Форма программы тестирования
Значения свойств формы
Значения свойств компонента Label1
Отображение иллюстрации
Вычисление размера области вывода
Доступ к файлу теста

Приложение
Приложение представляет собой краткий справочник по компонентам и функциям C++ Builder. В этом разделе приведено краткое описание базовых компонентов C++ Builder. Подробное описание этих и других компонентов можно найти в справочной системе.

Форма
Свойства формы (объекта TForm)
Label
Компонент Label — поле вывода текста
Свойства компонента Label (поле вывода текста)
Edit
Компонент Edit — поле
Свойства компонента Edit (поле редактирования)
Button
Компонент Button — командная кнопка

C++ Программирование в среде С++ Builder 5

Этот диск был задуман как руководство для самостоятельного изучения языка C/C++ в контексте его применения в среде Windows. Известно, какое значение приобретает сегодня объектно-ориентированное программирование, учитывая возрастающие требования к качеству, надежности и пользовательскому интерфейсу приложений. Сложность и объем программ все время растут. В свете этого объектно-ориентированные языки, и прежде всего C++, становятся едва ли не единственным средством решения встающих перед программистом задач, и потому знание таких языков программирования представляется сегодня совершенно необходимым, если вы хотите писать программы, отвечающие современным требованиям.
Последнее не обязательно означает, что вы являетесь профессионалом, пишущим приложения на продажу. Вы можете быть любителем, программирующим пока в свободное время ради собственного удовольствия или для решения каких-либо личных, домашних задач. Или, может быть, вы занимаетесь научно-техническими расчетами, обработкой данных и т. п. Конечно, часто для этого достаточно примитивной DOS и традиционных языков, таких, как Pascal или даже BASIC, однако обидно писать программы с минимальным пользовательским интерфейсом, ориентированным на командную строку, когда у вас есть 32-битная операционная система Windows и превосходные средства разработки приложений для нее, позволяющие создавать программы профессионального качества. А если вы уже программировали для Windows, то и сами прекрасно понимаете, зачем вам нужен объектно-ориентированный C++...

Введение
Интерфейс прикладного программирования этой системы насчитывает сотни функций, и даже самая элементарная программа с графическим интерфейсом пользователя состоит из нескольких сот строк кода на С или C++. Поэтому на практике программисту-одиночке или небольшой рабочей группе придется использовать какие-то более мощные средства, вроде визуальных систем программирования (Visual Basic, C++Builder, Delphi) или же универсальную среду разработки типа Borland C++ в сочетании с библиотекой классов, такой, как OWL или MFC.

Основные принципы и понятия
Знание непосредственного предшественника языка, изучению которого посвящена книга, представляется необходимым. Освоение С, а затем C++ — естественный путь обучения, хотя, конечно, возможны и другие подходы к этому вопросу. Например, можно было бы начать сразу с классов и объектов, но такая методика потребовала бы как от автора, так и от читателя (который, как предполагается, имеет некоторое представление о традиционном программировании) изменения “интуитивного подхода к окружающему миру”, если выражаться несколько высокопарно.

Немного теории и терминологии
Немного теории и терминологии - 2
Процесс построения программы
Проблема раздельной компиляции
Проблема раздельной компиляции - 2
О библиотеках

Знакомство с C++Builder
Нужно сказать, что почти все инструментальные окна C++Builder являются стыкуемыми окнами. Вы, наверное, не раз встречались в различных программах со стыкуемыми инструментальными панелями. Их масса в Microsoft Word, в котором я пишу этот текст. Такая панель может быть плавающей, а может быть состыкована с главным окном программы.

Интегрированная среда разработки C++Builder
Редактор кода
Редактор кода - 2
Hello World
Hello World — консольное приложение
Hello World — консольное приложение - 2
Hello World — консольное приложение - 3
Hello World — приложение GUI
Hello World — приложение GUI - 2
Hello World — приложение GUI - 3

Обзор языка С
Как уже говорилось, хорошее понимание языка С представляется необходимым для успешного программирования на C++. C++Builder в полной мере поддерживает стандарт ANSI С и, кроме того, некоторые другие версии языка (Керниган Ричи, Unix V). Мы в основном будем ориентироваться на стандарт ANSI, который, кстати, является в какой-то мере результатом “обратного воздействия” языка C++.

Элементы простой программы
Комментарии
Директивы # pragma
Директивы #include
Функция main()
Представление данных в С
Литералы
Встроенные типы данных
Переменные
Типизированные константы

Директивы препроцессора
Препроцессорная обработка представляет собой первую фазу того процесса, что именуется компиляцией программы на C/C++. Компилятор C++Builder не генерирует промежуточного файла после препроцессорной обработки. Однако, если хотите, можно посмотреть на результат работы препроцессора, запустив отдельную программу срр32.ехе из командной строки

Макроопределения
Макроопределения - 2
Макроопределения - 3
Директива # include
Условная компиляция
Директива #error
Директива # linе
Директива # pragma
Типичное применение препроцессорных директив
Особенности C++Builder

Отладка программ
Программисты часто пренебрегают имеющимися в их распоряжении отладчиками и не используют их в полной мере, полагаясь на собственную сообразительность и пользуясь кустарными приемами отладки. Не берите с них пример, тем более что работать со встроенным отладчиком C++Builder очень просто, как вы сами скоро убедитесь.

Предварительные шаги
Предварительные шаги - 2
Отладочные пункты меню
Отладочные пункты меню - 2
Элементы отладки
Контрольные точки
Контрольные точки - 2
Контрольные точки - 3
Контрольные точки - 4
Наблюдение за переменными

Объектно-ориентированное программирование и язык C++
В некоторых своих аспектах язык C++ является, так сказать, улучшенным С. В этой главе мы не будем касаться совершенно новых возможностей C++, таких, как объектно-ориентированное программирование и шаблоны, а остановимся на тех моментах, которые можно рассматривать в качестве модификаций старого языка С.

Отличия C++ от ANSI С
Указатели типа void*
Символьные типы
Символьные константы
Глобальные константы
“Улучшенный С”
Дополнительные обозначения операций
Тип bool
Тип wchar_t
Модификатор const

Объектно-ориентированное программирование
Прежде чем заняться конкретным изучением классов C++, нам хотелось бы немного поговорить об объектно-ориентированном программировании вообще. Конечно, для читателей, которые уже знакомы с его концепциями, следующий раздел будет неинтересен, за что мы заранее извиняемся.

Об объектном подходе к программированию
Объект
Объект - 2
Класс
Класс - 2
Введение в классы С++
Определение класса
Определение класса - 2

Классы С++
В прошлой главе мы показали, как определяются простейшие классы C++. То, что содержится в приведенном коде — это интерфейс класса. В самом определении класса объявляются обычно лишь прототипы функций-элементов. Чтобы класс стал работоспособным, необходима еще его реализация. Реализация класса, располагаемая часто в отдельном файле, содержит код его функций-элементов, а также некоторые элементы данных, называемые статическими.

Элементы класса
Элементы данных
Элементы-функции
Класс как область действия
Доступ к элементам данных
Вызов функций-элементов класса
Указатель this
Статические элементы класса
Статические элементы данных
Статические элементы-функции

Потоки ввода-вывода
В отличие от функций буферизованного ввода-вывода С (таких, как print f и scanf, не выполняющих никаких проверок на соответствие аргументов форматной строке) классы потоков C++ безопасны в отношении типа. Ввод-вывод использует механизм перегрузки операций, гарантирующий вызов нужной функции-операции для указанного типа данных. Это главное преимущество потоков языка C++.

Классы потоков
Предопределенные потоки
Операции извлечения и передачи в поток
Перегруженные операции для встроенных типов
Форматирование
Форматирующие функции-элементы
Форматирующие функции-элементы - 2
Манипуляторы
Манипуляторы - 2
Форматирующие флаги

Шаблоны
Подобно тому, как класс является схемой для создания своих представителей-объектов, шаблон класса в C++ является схемой для образования конкретных представителей-классов шаблона, или шаблонных классов. Шаблоны классов называют иногда параметризованными типами, поскольку действительный тип (класс) создается посредством спецификации конкретных параметров шаблона.

Шаблоны функций
Перегрузка шаблонов функций
Специализация шаблона функции
Специализация шаблона функции - 2
Шаблоны классов
Определение шаблона класса
Создание представителей шаблона
Создание представителей шаблона - 2
Разное
Разное - 2

Библиотека стандартных шаблонов
До сравнительно недавнего времени в языке C++ не было других стандартных средств программирования, кроме старой библиотеки стандартных функций С, которая совершенно не использовала мощных нововведений, таких, как классы, шаблоны, inline-функции и исключения. Библиотека стандартных шаблонов (Standard Template Library), разработанная в HP Laboratories, явилась в свое время весьма удачным шагом в решении проблемы стандартной библиотеки ANSI C++, в которую она теперь и входит.

Состав библиотеки
Заголовочные файлы
Итераторы
Итераторы - 2
Итераторы - 3
Итераторы - 4
Итераторы - 5
Итераторы - 6
Функции и функциональные объекты
Функции и функциональные объекты - 2

Управление исключениями
Грамотно организованная, устойчивая программа должна справляться с нестандартными ситуациями, встречающимися в реальной работе с реальными данными. Такой нестандартной ситуацией может быть, например, ошибка пользователя при вводе данных или нарушение структуры некоторого файла. В языках, предшествующих C++, подобные проблемы решались с помощью глобальных “флагов ошибки” или приписыванием определенному значению, возвращаемому функцией, специального смысла “индикатора ошибки”.

Основные синтаксические конструкции
Блок try
Блок catch
Оператор throw
Оператор throw - 2
Оператор throw - 3
Спецификации исключений.
Механика исключений
Исключения и стек
Исключения и стек - 2

RTTI и приведение типов
Аббревиатура RTTI означает RunTime Type Identification, т. е. “Идентификация типа времени выполнения”. Это механизм, позволяющий определить тип объекта во время выполнения программы, что очень полезно в иерархии типов, где указатель или ссылка базового класса может ссылаться на представитель любого производного класса. Полиморфные механизмы, конечно, хороши, но выглядят снаружи подобно “черному ящику”.

RTTI
Операция typeid
Type info
Type info - 2
Bad_typeid
Специальные операции приведения типа
Reinterpret_cast
Const_cast
Static_cast
Dynamic_cast

Визуальное программирование в C++Builder
Вы, конечно, уже знакомы с визуальным программированием в С+ + Builder, когда на экране перед вами находится фирма, на нее накладываются различные компоненты, реализующие элементы управления графического интерфейса, а затем пишется код для событий этих компонентов, использующий свойства последних. Возможно, вы работали раньше с Visual Basic или даже с Delphi. Все эти системы внешне очень похожи друг на друга, a Delphi — вообще двойник C++Builder'a и опирается на ту же самую библиотеку компонентов.

Простой пример
Установка свойств компонентов
Ввод кода событий
Ввод кода событий - 2
Ввод кода событий - 3
Класс формы
Компоненты, свойства и события
Компоненты
Поля и методы
Свойства

Создание визуальных компонентов
Одним из показателей квалификации программиста является то, может ли он разрабатывать свои собственные компоненты для визуальной среды программирования вроде C++Builder. Пользовательский компонент должен ничем не отличаться от “настоящего” в том смысле, что его можно будет найти в палитре компонентов, можно будет устанавливать его свойства и события в инспекторе объектов и т. п.

Расширение набора ключевых слов
_Classid
_Closure
_Property
_Property - 2
_Published
_Declspec
_Declspec - 2
_Declspec - 3
_Thread

Классы AnsiString и Set
В VCL для представления текстовых строк используются не символьные массивы и не шаблон стандартной библиотеки, а строки Object Pascal. Кроме того, многие свойства компонентов представлены множествами этого языка. Для моделирования таких объектов C++Builder реализует классы AnsiString и Set.

Классы AnsiString и Set
Класс AnsiString
Методы
Методы - 2
Методы - 3
Класс Set

Общие характеристики и особенности применения
овейшая система объектно-ориентированного программирования C++ Builder производства корпорации Borland предназначена для операционных систем Windows 95 и NT. Интегрированная среда C++ Builder обеспечивает скорость визуальной разработки, продуктивность повторно используемых компонент в сочетании с мощью языковых средств C++, усовершенствованными инструментами и разномасштабными средствами доступа к базам данных.

C++Builder: первые опыты
C++Builder: первые опыты - 2
C++Builder: первые опыты - 3
C++Builder: первые опыты - 4
C++Builder: первые опыты - 5
C++Builder: первые опыты - 6
C++Builder: первые опыты - 7
C++Builder: первые опыты - 8
C++Builder: первые опыты - 9
C++Builder: первые опыты - 10

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

Графические компоненты
Графические компоненты - 2
Графические компоненты - 3
Графические компоненты - 4
Графические компоненты - 5
Графические компоненты - 6
Графические компоненты - 7
Графические компоненты - 8
Графические компоненты - 9
Графические компоненты - 10

Учебник по Visual C++ .Net

Разработчик приложений, решивший воспользоваться услугами Visual Studio.Net 7.0, получает в свое распоряжение достаточно много новых технологий и инструментов, которые позволяют ему быстро и эффективно создавать обычные Windows-приложения, которые теперь принято называть настольными — desktop applications, а также web-приложения и web-услуги (Web Services). Компания Microsoft добавила в арсенал программиста новый язык С# (произносится «Си шарп»), который, как обещают специалисты, способен в несколько раз ускорить цикл разработки сложных проектов.
Главной новостью, которая должна привлечь ваше внимание, является то, что Visual C++, Visual Basic и С# используют одну и ту же среду разработки IDE (Integrated Development Environment), что дает возможность создавать комплексные проекты с использованием разных языков (mixed-language solutions). Многоязыковая среда разработки .Net (.Net Framework) представляет собой сумму трех составляющих:
* общая для рассмотренного набора языков библиотека времени исполнения (Common Language Runtime);
* унифицированная библиотека классов разработчика (Unified Programming Classes);
* модель разработки web-приложений (Active Server Pages.Net).

Введение
Первая составляющая — библиотека времени исполнения (Common Language Runtime, сокращенно CLR), функционирует как на этапе выполнения, так и на этапе разработки. Во время выполнения кода она следит за динамикой многопотоковых приложений, обеспечивает взаимосвязь процессов, поддерживает их безопасность, автоматизирует процедуры выделения и освобождения памяти.

Управляемые расширения для C++
Управляемые расширения для C++ - 2

Начало работы с Visual Studio.Net
Итак, вы успешно преодолели все трудности установки Microsoft Visual Studio. Net 7.0 (если они были, а они в изобилии присутствовали в бета-версии продукта, с которой я имел дело в момент написания книги) и готовы покорить определенные высоты с помощью вашей неудержимой фантазии программиста и возможностей студии. Инструменты Studio.Net, несомненно, помогут воплотить ваши идеи в реальные проекты, которые теперь принято называть решениями (solutions) — термин, обозначающий новую концепцию логического хранилища проектов

Начало работы с Visual Studio.Net
Начало работы с Visual Studio.Net - 2
Концепция решений и проектов
Концепция решений и проектов - 2
Создание нового проекта
Классы приложения
Классы приложения - 2
Контейнер точек
Рисование в контексте устройства
Реакция на ошибки

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

Режимы отображения координат
Режимы отображения координат - 2
Режимы отображения координат - 3
Режимы отображения координат - 4
Масштабирование изображения
Масштабирование изображения - 2
Масштабирование изображения - 3
Масштабирование изображения - 4
Масштабирование изображения - 5
Масштабирование изображения - 6

Традиционное Windows-приложение
В этом уроке мы с помощью Studio.Net научимся разрабатывать традиционные приложения Win32, основанные на использовании функций API (Application Programming Interface). Вы, конечно, знаете, что приложения для Windows можно разрабатывать как с использованием библиотеки классов MFC, так и на основе набора инструментов, объединенных в разделе SDK (Software Development Kit) студии разработчика. Обширную документацию по SDK вы можете найти в MSDN (Microsoft Developer's Network), которая поставляется вместе со студией. Отдельные выпуски MSDN, зачастую содержат еще более свежую информацию по SDK.

Программы, управляемые событиями
Программы, управляемые событиями - 2
Прохождение сообщений в системе
Прохождение сообщений в системе - 2
Структура Windows-приложения
Структура Windows-приложения - 2
Анализ стартовой заготовки
Анализ стартовой заготовки - 2
Анализ стартовой заготовки - 3
Анализ стартовой заготовки - 4

Анализатор кодов ошибок
Последние имеют вид шестнадцатеричных чисел, которые хранятся в переменных типа HRESULT. Этот тип не является еще одним описателем (Handle), как может показаться, судя по его имени. Он определен в файле WTypes.h оператором эквивалентности typedef LONG HRESULT и используется как набор битовых полей, имеющих определенный смысл. Самым необычным в этой ситуации является то, что суть ошибки (ее текстовое описание), то есть то, что более всего интересует программиста, присутствуете файле WinError.h в виде комментария.

Приложение на основе диалога Уверен
Приложение на основе диалога Уверен - 2
Приложение на основе диалога Уверен - 3
Приложение на основе диалога Уверен - 4
Приложение на основе диалога Уверен - 5
Дизайн диалога Развитие диалогового
Создаем диалог Важным моментом
Реакция окна на уведомляющие сообщения
Реакция окна на уведомляющие сообщения - 2
Реакция окна на уведомляющие сообщения - 3

Управление файловым деревом
Особенностью разрабатываемого приложения является то, что в одном из представлений, управляемых классом cscrollview, пользователь сможет просматривать в качестве «картинок» — чертежей или схем, выбирать и открывать документы своего приложения, которые расположены в файлах с различными адресами. Навигацию по файловому дереву будем осуществлять с помощью второго представления, которым управляет класс CTreeView. Классы CScrollView и CTreeView являются специализированными потомками класса cview.

Настройка стартового кода
Настройка стартового кода - 2
Настройка стартового кода - 3
Настройка стартового кода - 4
Список изображений
Список изображений - 2
Список изображений - 3
Обращаемся к операционной системе
Обращаемся к операционной системе - 2
Обращаемся к операционной системе - 3

Графика OpenGL
В этом разделе мы научимся создавать трехмерные изображения с помощью функций библиотеки OpenGL, для того чтобы в следующей главе разработать Windows-приложение, которое можно рассматривать как инструмент просмотра результатов научных расчетов. Материал этого раздела позволит вам постепенно войти в курс дела и овладеть очень привлекательной технологией создания и управления трехмерными изображениями. Сначала мы рассмотрим основные возможности библиотеки OpenGL, затем научимся управлять функциями OpenGL на примере простых приложений консольного типа и лишь после этого приступим к разработке Windows-приложения.

Обзор возможностей библиотеки OpenGL
Подключаемые библиотеки - реализация
Ограничения Microsoft
Ограничения Microsoft - 2
Ограничения Microsoft - 3
Основные этапы
Основные этапы - 2
Подготовка окна
Создание консольного проекта
Создание консольного проекта - 2

Трехмерные графики функций
В этой главе мы разработаем Windows-приложение, которое в контексте OpenGL изображает трехмерный график функции, заданной произвольным массивом чисел. Данные для графика могут быть прочтены из файла, на который указывает пользователь. Кроме этого, пользователь будет иметь возможность перемещать график вдоль трех пространственных осей, вращать его вокруг вертикальной и горизонтальной осей и просматривать как в обычном, так и скелетном режим.

Настройка проекта
Вспомогательный класс Нам вновь
Реакции на сообщения Windows
Подготовка окна
Подготовка окна - 2
Подготовка окна - 3
Реакция на сообщение о перерисовке
Установка цвета фона
Подготовка изображения
Подготовка изображения - 2

От сырых COM API к проекту ATL
В этом уроке мы научимся разрабатывать приложения, которые реализуют функции СОМ-сервера и СОМ-контейнера. Известная вам технология OLE (Object Linking and Embedding) базируется на модели COM (Component Object Model), которая определяет и реализует механизм, позволяющий отдельным компонентам (приложениям, объектам данных, элементам управления, сервисам) взаимодействовать между собой по строго определенному стандарту.

Модель программирования COM
Модель программирования COM - 2
Интерфейсы — основа СОМ-технологии
Интерфейсы — основа СОМ-технологии - 2
Интерфейсы — основа СОМ-технологии - 3
Уникальная идентификация объектов
Уникальная идентификация объектов - 2
Как работают СОМ-серверы
Как работают СОМ-серверы- 2
Создание класса СОМ-объекта

Трехмерная графика в проекте ATL
В этом уроке мы продолжим разработку DLL-модуля, который после регистрации в системе в качестве СОМ-объекта позволит любому другому клиентскому приложению, обладающему свойствами контейнера объектов СОМ использовать его для отображения в контексте OpenGL трехмерного графика функции, заданной произвольным массивом чисел. Данные для графика СОМ-объект берет из файла, на который указывает пользователь клиентского приложения.

Требования OpenGL
Требования OpenGL - 2
Введение методов в интерфейс IOpenGL
Ручная коррекция класса
Ручная коррекция класса - 2
Ручная коррекция класса - 3
Ручная коррекция класса - 4
Ручная коррекция класса - 5
Ручная коррекция класса - 6
Ручная коррекция класса - 7

Из жизни студентов
Как показывает практика, студенты по-разному относятся к тому факту, что доля курсовых проектов, которые необходимо выполнять в виде компьютерных приложений, непрерывно растет. Некоторые их очень любят, так как подобные проекты позволяют продемонстрировать неординарность мышления, изобретательность и свой собственный «неподражаемый» стиль программирования, другие ненавидят, так как работающее приложение невозможно создать без тщательной проработки почти всех деталей, в том числе и тех, которые кажутся мелкими и незначительными.

Использование STL
Использование STL - 2
Шаблоны STL — это библиотека шаблонов
Шаблоны STL — это библиотека шаблонов - 2
Шаблон функции быстрой сортировки
Шаблон функции быстрой сортировки - 2
Шаблоны классов
Шаблоны классов - 2
Шаблоны классов - 3
Шаблоны классов - 4

Решаем краевую задачу
В этом разделе мы разработаем MFC приложение с SDI-интерфейсом, которое использует контейнеры STL для хранения последовательностей величин, участвующих в формулировке простейшей одномерной краевой задачи матфизики. Сама задача формулируется в виде дифференциального уравнения, связывающего искомую функцию, пространственную координату и параметры, зависящие от свойств среды.

Пример с матрицей МКР
Пример с матрицей МКР - 2
Пример с матрицей МКР - 3
Пример с матрицей МКР - 4
Формирование матрицы
Метод прогонки
Метод прогонки - 2
Класс окна для отображения графика
Класс окна для отображения графика - 2
Класс графика

Некоторые сведения об архитектуре Windows
Разработчики Windows-приложений живут в особом мире событий и сообщений, в котором последовательность выполнения операций не всегда строго предсказуема. Они выработали свое особое представление о том, как правильно ставить и решать задачи в виртуальном мире операционной системы, управляемой событиями. Если вы, читатель, выполнили все шаги по разработке традиционного Windows-приложения, описанные в третьем уроке этой книги, то, вероятно, уже имеете понятие о структуре и принципе функционирования любой Windows-программы

Уровни и платформы
Многозадачные операционные системы
Процессы и потоки
Переключение потоков
Переключение потоков - 2
Архитектура памяти Win32
Архитектура памяти Win32 - 2
Разделы адресного пространства
Разделы адресного пространства - 2
Подсистемы ОС

Visual C++ для начинающих
MFC – это базовый набор (библиотека) классов, написанных на языке С++ и предназначенных для упрощения и ускорения процесса программирования под Windows. Перед изучением библиотеки MFC и ее использованием для создания Windows-приложений, следует вспомнить, как работает сама Windows и каковы принципы взаимодействия программ с ней, какова структура типичной Windows-программы.

Программная среда Windows
Программная среда Windows - 2
Программная среда Windows - 3
Основы программирования под Windows
Основы программирования под Windows - 2
Основы программирования под Windows - 3
Преимущества использования MFC
Обзор среды Microsoft Developer Studio
Библиотека MFC
Архитектура приложения

Введение в язык Си++

C++ - универсальный язык программирования, задуманный так, чтобы сделать программирование более приятным для серьезного программиста. За исключением второстепенных деталей C++ является надмножеством языка программирования C. Помимо возможностей, которые дает C, C++ предоставляет гибкие и эффективные средства определения новых типов. Используя определения новых типов, точно отвечающих концепциям приложения, программист может разделять разрабатываемую программу на легко поддающиеся контролю части. Такой метод построения программ часто называют абстракцией данных. Информация о типах содержится в некоторых объектах типов, определенных пользователем. Такие объекты просты и надежны в использовании в тех ситуациях, когда их тип нельзя установить на стадии компиляции. Программирование с применением таких объектов часто называют объектно-ориентированным. При правильном использовании этот метод дает более короткие, проще понимаемые и легче контролируемые программы.
Ключевым понятием C++ является класс. Класс - это тип, определяемый пользователем. Классы обеспечивают скрытие данных, гарантированную инициализацию данных, неявное преобразование типов для типов, определенных пользователем, динамическое задание типа, контролируемое пользователем управление памятью и механизмы перегрузки операций. C++ предоставляет гораздо лучшие, чем в C, средства выражения модульности программы и проверки типов. В языке есть также усовершенствования, не связанные непосредственно с классами, включающие в себя символические константы, inline- подстановку функций, параметры функции по умолчанию, перегруженные имена функций, операции управления свободной памятью и ссылочный тип. В C++ сохранены возможности языка C по работе с основными объектами аппаратного обеспечения (биты, байты, слова, адреса и т.п.). Это позволяет весьма эффективно реализовывать типы, определяемые пользователем. C++ и его стандартные библиотеки спроектированы так, чтобы обеспечивать переносимость. Имеющаяся на текущий момент реализация языка будет идти в большинстве систем, поддерживающих C. Из C++ программ можно использовать C библиотеки, и с C++ можно использовать большую часть инструментальных средств, поддерживающих программирование на C.

Размышления о программировании на C++
C++ проектировался для использования в довольно традиционной среде компиляции и выполнения, среде программирования на C в системе UNIX. Средства обработки особых ситуаций и параллельного программирования, требующие нетривиальной загрузки и поддержки в процессе выполнения, не были включены в C++. Вследствие этого реализация C++ очень легко переносима. Однако есть полные основания использовать C++ в среде, где имеется гораздо более существенная поддержка.

Турне по C++
Введение
Вывод
Компиляция
Ввод
Комментарии
Типы и Описания
Основные Tипы
Производные Типы
Выражения и Операторы

Вложенные Классы
Если только вложенный класс не является очень простым, в таком описании трудно разобраться. Кроме того, вложение классов - это не более чем соглашение о записи, поскольку вложенный класс не является скрытым в области видимости лексически охватывающего класса: class set { struct setmem { int mem; setmem* next; setmem(int m, setmem* n) }; // ... }; setmem::setmem(int m, setmem* n) { mem=m, next=n} setmem m1(1,0);

Статические Члены
Указатели на Члены
Структуры и Объединения
Структуры и Объединения - 2
Конструкторы и Деструкторы
Предостережение
Статическая Память
Свободная Память
Объекты Класса и Члены
Вектора Объектов Класса

Видимость имен членов
Если перед именем базового класса в описании производного класса стоит ключевое слово public, то общие члены базового класса являются общими для производного класса; если нет, то они являются закрытыми. Общий член mem закрытого базового класса base может быть описан как общий для производного класса с помощью описания вида typedef-имя . идентификатор;

Друзья (friends)
Функция операция
Структуры
Объединения
Поля бит
Вложенные классы
Инициализация
Список инициализаторов
Классовые объекты
Ссылки

История и назначение языка Си++
Язык Си++ является универсальным языком программирования, в дополнение к которому разработан набор разнообразных библиотек. Поэтому, строго говоря, он позволяет решить практически любую задачу программирования. Тем не менее, в силу разных причин (не всегда технических) для каких-то типов задач он употребляется чаще, а для каких-то – реже.

Простейшая программа на языке Си++
Простейшая программа на языке Си++ - 2
Компиляция и выполнение программы
Компилирование программ в среде Windows
Компилирование программ в среде Unix
История и назначение языка Си++
Простейшая программа на языке Си++
Компиляция и выполнение программы
Выполнение программ в среде Windows
Выполнение программ в среде Unix

Имена
Идентификаторы в языке Си++ – это последовательность знаков, начинающаяся с буквы или знака подчеркивания. В идентификаторах можно использовать заглавные и строчные латинские буквы, цифры и знак подчеркивания. Длина идентификаторов произвольная.

Переменные
Константы

Выражения
Выражения – это переменные, функции и константы, называемые операндами, объединенные знаками операций. Операции могут быть унарными – с одним операндом, например, минус; могут быть бинарные – с двумя операндами, например сложение или деление. В Си++ есть даже одна операция с тремя операндами – условное выражение. Чуть позже мы приведем список всех операций языка Си++ для встроенных типов данных.

Операция присваивания
Операция присваивания - 2
Все операции языка Си++
Арифметические операции
Операции сравнения
Логические операции
Битовые операции
Условная операция
Последовательность
Операции присваивания

Что такое оператор
Запись действий, которые должен выполнить компьютер, состоит из операторов. При выполнении программы операторы выполняются один за другим, если только оператор не является оператором управления, который может изменить последовательное выполнение программы.

Что такое оператор
Операторы-выражения
Объявления имен
Операторы управления
Условные операторы
Условные операторы - 2
Операторы цикла
Операторы цикла - 2
Оператор возврата
Оператор перехода

Вызов функций
Программа на языке Си++ состоит, по крайней мере, из одной функции – функции main. С нее всегда начинается выполнение программы. Встретив имя функции в выражении, программа вызовет эту функцию, т.е. передаст управление на ее начало и начнет выполнять операторы. Достигнув конца функции или оператора return – выхода из функции, управление вернется в ту точку, откуда функция была вызвана, подставив вместо нее вычисленный результат.

Вызов функций
Вызов функций - 2
Имена функций
Необязательные аргументы функций
Рекурсия
Рекурсия - 2

Целые числа
Для представления целых чисел в языке Си++ существует несколько типов – char, short, int и long (полное название типов: short int, long int, unsigned long int и т.д.. Поскольку описатель int можно опустить, мы используем сокращенные названия). Они отличаются друг от друга диапазоном возможных значений. Каждый из этих типов может быть знаковым или беззнаковым. По умолчанию, тип целых величин – знаковый.

Целые числа
Целые числа - 2
Целые числа - 3
Вещественные числа
Логические величины
Символы и байты
Символы и байты - 2
Кодировка, многобайтовые символы
Наборы перечисляемых значений
Наборы перечисляемых значений - 2

Понятие класса
До сих пор мы говорили о встроенных типах, т.е. типах, определенных в самом языке. Классы - это типы, определенные в конкретной программе. Определение класса включает в себя описание, из каких составных частей или атрибутов он состоит и какие операции определены для класса.

Понятие класса
Определение методов класса
Переопределение операций
Подписи методов и необязательные аргументы

Массивы
Следует отметить, что при выполнении программы границы массива не контролируются. Если мы ошиблись и вместо 12 в приведенном выше цикле написали 13, то компилятор не выдаст ошибку. При выполнении программа попытается напечатать 13-е число. Что при этом случится, вообще говоря, не определено. Быть может, произойдет сбой программы. Более вероятно, что будет напечатано какое-то случайное 13-е число.

Массивы
Массивы - 2
Структуры
Битовые поля
Объединения
Объединения - 2
Указатели
Указатели - 2
Адресная арифметика
Связь между массивами и указателями

Автоматические переменные
Самый простой метод – это объявление переменных внутри функций. Если переменная объявлена внутри функции, каждый раз, когда функция вызывается, под переменную автоматически отводится память. Когда функция завершается, память, занимаемая переменными, освобождается. Такие переменные называют автоматическими.

Автоматические переменные
Статические переменные
Динамическое выделение памяти
Выделение памяти под строки
Рекомендации по использованию указателей
Ссылки
Ссылки - 2
Распределение памяти при передаче
Распределение памяти при передаче - 2
Распределение памяти при передаче - 3

Виртуальные методы
В обоих классах, выведенных из класса Item, имеется метод Title, выдающий в качестве результата заглавие книги или название журнала. Кроме этого метода, полезно было бы иметь метод, выдающий полное название любой единицы хранения. Реализация этого метода различна, поскольку название книги и журнала состоит из разных частей. Однако вид метода – возвращаемое значение и аргументы – и его общий смысл один и тот же.

Виртуальные методы
Виртуальные методы - 2
Виртуальные методы и переопределение методов
Преобразование базового и производного классов
Внутреннее и защищенное наследование
Абстрактные классы
Множественное наследование
Множественное наследование - 2

Интерфейс и состояние объекта
Основной характеристикой класса с точки зрения его использования является интерфейс, т.е. перечень методов, с помощью которых можно обратиться к объекту данного класса. Кроме интерфейса, объект обладает текущим значением или состоянием, которое он хранит в атрибутах класса. В Си++ имеются богатые возможности, позволяющие следить за тем, к каким частям класса можно обращаться извне, т.е. при использовании объектов, и какие части являются "внутренними", необходимыми лишь для реализации интерфейса.

Интерфейс и состояние объекта
Интерфейс и состояние объекта - 2
Объявление friend
Использование описателя const
Доступ к объекту по чтению и записи
Доступ к объекту по чтению и записи - 2

Копирующий конструктор
Остановимся чуть подробнее на одном из видов конструктора с аргументом, в котором в качестве аргумента выступает объект того же самого класса. Такой конструктор часто называют копирующим, поскольку предполагается, что при его выполнении создается объект-копия другого объекта.

Копирующий конструктор
Копирующий конструктор - 2
Копирующий конструктор - 3
Деструкторы
Инициализация объектов
Инициализация объектов - 2
Инициализация объектов - 3
Инициализация объектов - 4
Операции new и delete
Операции new и delete - 2

Переопределение операций
Язык Си++ позволяет определять в классах особого вида методы – операции. Они называются операциями потому, что их запись имеет тот же вид, что и запись операции сложения, умножения и т.п. со встроенными типами языка Си++.

Переопределение операций
Как определять операции
Как определять операции - 2
Преобразования типов
Явные преобразования типов
Стандартные преобразования типов
Преобразования указателей и ссылок
Преобразования типов в программе
Переопределение операций
Как определять операции

Компоновка нескольких файлов в одну программу
Программа – это, прежде всего, текст на языке Си++. С помощью компилятора текст преобразуется в исполняемый файл – форму, позволяющую компьютеру выполнять программу. Если мы рассмотрим этот процесс чуть более подробно, то выяснится, что обработка исходных файлов происходит в три этапа. Сначала файл обрабатывается препроцессором, который выполняет операторы #include, #define и еще несколько других. После этого программа все еще представлена в виде текстового файла, хотя и измененного по сравнению с первоначальным.

Компоновка нескольких файлов в одну программу
Проблема использования общих функций
Проблема использования общих функций - 2
Использование включаемых файлов
Использование включаемых файлов - 2
Использование включаемых файлов - 3
Препроцессор
Определение макросов
Условная компиляция
Дополнительные директивы препроцессора

Файлы и переменные
Автоматические переменные определены внутри какой-либо функции или метода класса. Назначение автоматических переменных – хранение каких-либо данных во время выполнения функции или метода. По завершении выполнения этой функции автоматические переменные уничтожаются и данные теряются. С этой точки зрения автоматические переменные представляют собой временные переменные.

Файлы и переменные
Общие данные
Глобальные переменные
Повышение надежности обращения к данным
Повышение надежности обращения к данным - 2
Повышение надежности обращения к данным - 3
Область видимости имен
Оператор определения контекста namespace

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

Виды ошибок
Возвращаемое значение как признак ошибки
Возвращаемое значение как признак ошибки - 2
Исключительные ситуации
Обработка исключительных ситуаций
Обработка исключительных ситуаций - 2
Примеры обработки исключительных ситуаций
Примеры обработки исключительных ситуаций - 2

Потоки
Класс istream реализует поток ввода, класс ostream – поток вывода. Эти классы определены в файле заголовков iostream.h. Библиотека потоков ввода-вывода определяет три глобальных объекта: cout,cin и cerr. cout называется стандартным выводом, cin – стандартным вводом, cerr – стандартным потоком сообщений об ошибках. cout и cerr выводят на терминал и принадлежат к классу ostream, cin имеет тип istream и вводит с терминала.

Потоки
Операции и для потоков
Операции и для потоков - 2
Манипуляторы и форматирование ввода-вывода
Строковые потоки
Строковые потоки - 2
Ввод-вывод файлов
Ввод-вывод файлов - 2

Назначение шаблонов
Независимо от того, к какому именно типу принадлежат переменные a, b и x, если это один и тот же тип, для которого определена операция "меньше", запись будет одна и та же. Было бы естественно определить функцию min, возвращающую минимум из двух своих аргументов. Возникает вопрос, как описать аргументы этой функции?

Назначение шаблонов
Функции-шаблоны
Шаблоны классов
Шаблоны классов - 2
"Интеллигентный указатель"
"Интеллигентный указатель" - 2
Задание свойств класса
Задание свойств класса - 2

Создание вашей первой программы
Все вы использовали компьютерные программы, такие как текстовый процессор, электронные таблицы и даже Microsoft Windows 95. Компьютерные программы, или программное обеспечение, представляют собой файлы, содержащие инструкции, которые указывают компьютеру, что следует делать. Если вы работаете в среде MS-DOS или Windows, то, например, файлы с расширениями ЕХЕ и СОМ содержат команды, которые компьютер может выполнять. Другими словами, файлы содержат специальные инструкции, выполняемые компьютером, обычно одну за другой, для решения определенной задачи.

Создание простой программы
Создание простой программы - 2
Компиляция вашей программы
Компиляция вашей программы - 2
Создание второй программы
Изучение синтаксических ошибок
Работа в среде типа Windows
Что вам необходимо знать
Более внимательный взгляд на C++
Взгляд на операторы программы

Уменьшение количества операторов
Оператор cout *string++, заставляет C++ вывести символ, указываемый указателем string, а затем увеличить текущее значение string, чтобы он указывал на следующий символ. С помощью этих методов следующая программа SMARTPTR.CPP иллюстрирует новую реализацию функций show_string и string_length

О математике указателя
Что вам необходимо знать
Знакомство с классами C++
Представление об объектах и ООП
Представление об объектах и ООП - 2
Определение методов класса вне класса
Определение методов класса вне класса - 2
Второй пример
Что вам необходимо знать
Частные и общие данные

Программирование на C++ глазами хакера
В этой книге мы будем рассматривать программирование для хакера. Что подразумевается под словом "хакер"? Лично я вкладываю в это понятие несколько иной смысл, чем обычно. Я считаю, что хакер - это профессионал в компьютерной сфере, а не взломщик или разрушитель информации. Хакер - это компьютерный специалист, необязательно доставляющий много неприятностей другим людям своими знаниями.

C++ глазами хакера
C++ глазами хакера - 2
Введение
О книге
О книге - 2
Кто такой хакер? Как им стать?
Кто такой хакер? Как им стать? - 2
Кто такой хакер? Как им стать? - 3
Кто такой хакер? Как им стать? - 4
Кто такой хакер? Как им стать? - 5

Минимизация и невидимость
Что самое главное при написании программ-приколов? Ну, конечно же, невидимость. Программы, созданные в этой и следующих главах, будут незаметно сидеть в системе и выполнять нужные действия при наступлении определенного события. Это значит, что программа не должна отображаться на Панели задач или в списке запущенных программ, в окне, появляющемся при нажатии Ctrl+Alt+Del.

Сжатие запускаемых файлов
Сжатие запускаемых файлов - 2
Сжатие запускаемых файлов - 3
Без окон, без дверей...
Без окон, без дверей... - 2
Без окон, без дверей... - 3
Без окон, без дверей... - 4
Без окон, без дверей... - 5
Без окон, без дверей... - 6
Простейшая программа

Простые шутки
Теперь можно приступать к написанию простых программ-приколов в Windows. Так как эта ОС самая распространенная, то и шутки в ней самые интересные. Думаю, что любой компьютерщик с удовольствием подкинет своему другу какую-нибудь веселую программку, которая введет жертву в легкий шок. В каждом из нас заложено еще при рождении стремление к превосходству. Все мы хотим быть лучшими, и программисты часто доказывают свое первенство с помощью написания чего-то уникального, интересного и вызывающего.

Летающий Пуск
Летающий Пуск - 2
Летающий Пуск - 3
Летающий Пуск - 4
Летающий Пуск - 5
Летающий Пуск - 6
Летающий Пуск - 7
Летающий Пуск - 8
Начните работу с кнопки Пуск
Начните работу с кнопки Пуск - 2

Система
В этой главе будут рассматриваться разные системные утилиты. Сюда войдут примеры программ, способных следить за происходящим в системе. Это уже не просто программы-приколы, а работа с системой, хотя шуток в рассматриваемых задачах будет достаточно. Как я уже говорил, любой хакер — это профессионал, а значит, должен знать и уметь работать с внутренностями той ОС, в которой он находится.

Работа с чужыми окнами
Работа с чужыми окнами - 2
Работа с чужыми окнами - 3
Работа с чужыми окнами - 4
Дрожь в ногах
Дрожь в ногах - 2
Переключение экранов
Переключение экранов - 2
Переключение экранов - 3
Переключение экранов - 4

Работа с сетью
Я напомню, что первоначальный смысл слова "хакер" был больше связан с человеком, который хорошо знает программирование, внутренности ОС и сеть. Вопросам программирования посвящена вся книга. В предыдущих главах мы учились понимать внутренности ОС на интересных, шуточных примерах. Теперь перейдем к рассмотрению сети.

Теория сетей и сетевых протоколов
Теория сетей и сетевых протоколов - 2
Сетевые протоколы
Протокол IP
Сопоставление адреса ARP и RARP
Транспортные протоколы
Быстрый UDP
Медленный , но надежный TCP
Медленный , но надежный TCP - 2
Прикладные протоколы — загадочный NetBIOS

Работа с железом
Так как в данной книге упор сделан на работу с сетью, то и здесь я коснусь этой темы. При написании сетевых программ очень часто надо знать параметры локального компьютера, а иногда даже уметь изменять их. Я покажу, как определить параметры сетевой карты и сетевые настройки. Прочитав эту главу, вы найдете ответ на очень часто возникающий у начинающих программистов вопрос: "Как узнать IP-адрес локального компьютера?"

Параметры сети
Параметры сети - 2
Параметры сети - 3
Параметры сети - 4
Изменение IP-адреса
Изменение IP-адреса - 2
Изменение IP-адреса - 3
Работа с СОМ-портом
Работа с СОМ-портом - 2
Работа с СОМ-портом - 3

Полезные алгоритмы
При разборе сетевых функций в главах 4 и 5 были рассмотрены интересные примеры, но в них было несколько недостатков. Например, сканер портов был медленным, и на проверку 1000 портов уходило слишком много времени. Я уже упоминал о том, что необходимо для ускорения этого процесса. В этой главе я покажу самый быстрый сканер, который можно сделать очень гибким и универсальным.

Алгоритм приема/передачи данных
Алгоритм приема/передачи данных - 2
Алгоритм приема/передачи данных - 3
Самый быстрый сканер портов
Самый быстрый сканер портов - 2
Самый быстрый сканер портов - 3
Самый быстрый сканер портов - 4
Самый быстрый сканер портов - 5
Состояние локального компьютера
Состояние локального компьютера - 2

Список литературы и ресурсы Интернета
Меня часто спрашивают, что можно еще почитать, чтобы стать настоящим хакером или повысить уровень знаний? На этот вопрос я отвечаю: "Абсолютно все!!!" Я читаю любые документы, файлы помощи, статьи, которые попадаются мне на глаза. Специализированной литературы практически нет, но заранее никогда неизвестно, в какой книге встретишь что-то новое и интересное, что позволит сделать нечто совершенное и непохожее на другие проекты.

Заключение
Список литературы и ресурсы Интернета


Компьютерные игры. Как это делается.
Игры для взрослых вечеринок
Секреты программирования игр
Введение в программирование трехмерных игр с DX9
Ганичев Валерий - Росс Непобедимый
Тестирование софта - статьи
Гарднер Лиза - Куинси И Рейни
Гаррет Рэндал - Ипсвичский Фиал
Гарфилд Брайан - Жажда Смерти
Герман Юрий - Один Год
Гершкович Това - Новый Дом
Гидравлика. Конспект лекций
Самоучитель по Photoshop 7
Мир Internet - журнал для пользователей Сети
Говард Роберт & Де Камп Спрэг & Картер Лин - Дьявол Из Железа
Головачев Василий - Излом Зла
Горбачева Наталья - Лобовы
Горяинов Евгений - О Боге. Непротиворечивая Теория Бога
Межсетевое экранирование
Продвинутая 3D графика в пакете Maya