Borland C++ Builder освой самостоятельно

Post on 09-Jul-2015

1.764 views 53 download

description

http://leontyev.at.ua

Transcript of Borland C++ Builder освой самостоятельно

Кент Рейсдорф и Кен Хендерсон BORLAND C++BUILDER. ОСВОЙ САМОСТОЯТЕЛЬНО

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

Содержание Введение 19 1-я неделя. Краткий обзор 21 День 1. Первое знакомство 23 Что такое C++Builder? 23 Обзор IDE C++Builder 24 Hello World 26 Hello World, часть II — консольное приложение Win32 28 Обзор языка Си++ 33 Истоки Си++ 34 Переменные 34 Типы данных Си++ 35 Операторы Си++ 37 Функции Си++ 39 Функция main() 43 Массивы 45 Символьные массивы 47

Заключение 51 Вопросы и задания 52 Вопросы и ответы 52 Вопросы 52

Упражнения 53 День 2. Операторы управления и структуры 55 Оператор if 55 Циклы 59 Цикл for 60 Цикл while 62 Цикл do-while 63 Оператор goto 63 Операторы continue и break 64

Оператор switch 65 Области видимости 66 Переменные extern 69

Структуры 69 Массивы структур 71 Заголовки и исходные файлы 71

Пример использования структур 73 Заключение 76 Вопросы и задания 77 Вопросы и ответы 77 Вопросы 77 Упражнения 78

День 3. Указатели, ссылки и функции в Си++ 79 Указатели 79 Локальное и динамическое распределение памяти 80 Динамическое размещение объектов и указатели 81 Назад к нашей программе 82 Разыменование указателей 83 Собираем все вместе 85 Ссылки 87

Передача аргументов функции с использованием ссылок и указателей 89 Ключевое слово const 91

Операторы new и delete 92 Оператор new 92 Оператор delete 93 Решение еще одной загадки 95 new[] и delete[] 95

Функции в Си++ 96 Перегрузка функций 96 Аргументы, передаваемые по умолчанию 98 Функции-члены класса 99 Подставляемые функции 100

Заключение 101 Вопросы и задания 101 Вопросы и ответы 101 Вопросы 102 Упражнения 102

День 4. Классы и объектно-ориентированное программирование 103 Что такое класс? 103 Анатомия класса 104 Уровни доступа к членам класса 104 Конструкторы 106 Списки инициализаторов 108 Деструкторы 109 Члены-данные 110 Функции-члены 112 Что такое this? 113 Один пример 115

Наследование 122

Множественное наследование 124 Базовый файловый ввод-вывод 126 Ввод из файла 127 Вывод в файл 129 Режимы открытия файлов 130

Заключение 131 Вопросы и задания 132 Вопросы и ответы 132 Вопросы 133 Упражнения 133

День 5. Библиотеки классов Си++ и модель визуальных компонентов 135 Краткая история 135 Зачем нужны библиотеки классов? 136 Какой ценой все это дается? 138 Библиотеки классов как пример объектно-ориентированного программирования

138

Сравнение библиотек классов Си++ 139 Библиотека объектов Windows фирмы Borland 139 Библиотека базовых классов фирмы Microsoft 140 Кто же победитель? 141

Библиотека визуальных компонентов 141 Компоненты 142 Свойства, методы и события 142

C++Builder и VCL 154 VCL для программиста на Си++ 155

Структура VCL 157 Классы форм и приложений 158 Классы компонентов 158 Но это еще не все... 162

Заключение 163 Вопросы и задания 163 Вопросы и ответы 164 Вопросы 165 Упражнения 165

День 6. Изучение IDE C++Builder: проекты и формы 167 Проекты в C++Builder 168 Файлы, используемые в проектах C++Builder 168 Модули исходного кода 172

Главное меню и панель инструментов C++Builder 173 Использование палитры компонентов 175 Размещение нескольких копий компонента 175 Размещение компонента в центре формы 176 Контекстное меню палитры компонентов 176

Перемещение по палитре компонентов 176 Приложение, содержащее несколько форм 177 Компиляция, построение и компоновка 179

Компиляция и построение других программ на Си++ 181 Дополнительные сведения о формах C++Builder 182 Формы для главного окна 182 Формы для диалоговых окон 183 Сравнение вторичных и диалоговых окон 188 Модель многодокументного интерфейса 188 Основные свойства форм 188 Методы форм 191 События форм 192

Инспектор объектов 193 Селектор компонентов 194 Вкладка Properties 195 Вкладка Events 196

Пример MDI-программы 197 Шаг 1: Создание формы для главного окна 197 Шаг 2: Написание кода для пунктов меню File | Open и File | Save As 199 Шаг 3: Написание кода для меню Window 201 Шаг 4: Создание подчиненной формы MDI 201 Шаг 5: Создание окна About 202

Заключение 204 Вопросы и задания 205 Вопросы и ответы 205 Вопросы 206 Упражнения 206

День 7. Работа с редактором форм и редактором меню 209 Работа с редактором форм 209 Контекстное меню редактора форм 209 Размещение компонентов 210 Сетка редактора форм 211 Выделение компонентов 212 Перемещение компонентов 216 Защита компонентов от перемещения и изменения размера 217 Упорядочивание компонентов и работа с буфером обмена 218 Изменение размера компонентов 219 Выравнивание компонентов 221

Меню, пожалуйста! 230 Создание главного меню 231

Написание кода 238 Контекстные меню 244 Создание и сохранение шаблонов меню 245

Заключение 246 Вопросы и задания 246 Вопросы и ответы 246 Вопросы 247 Упражнения 247

1-я неделя. Подведение итогов 249 2-я неделя. Краткий обзор 251 День 8. Компоненты VCL 253 Обзор 253 Визуальные и невизуальные компоненты 254

Свойство Name 254 Важные общие свойства 256 Свойство Align 256 Свойство Color 256 Курсоры 258 Свойство Enabled 258 Свойство Font 259 Подсказки 260 Свойства ParentColor, ParentCtl3D, ParentFont и ParentShowHint 261 Свойство Tag 261 Другие общие свойства 262

Основные методы компонентов 262 Основные события 263 Класс TStrings 265

Стандартные элементы управления Windows 266 Элементы редактирования 267 Компоненты ListBox и ComboBox 270 Кнопки 273 Основы работы с кнопками 274 Компонент Label 281 Компонент ScrollBar 282 Компонент Panel 282 И это еще не все... 283

Стандартные диалоговые окна 284 Метод Execute 284 Диалоговые окна File Open и File Save 285 Диалоговое окно Color 287 Диалоговое окно Font 288 Диалоговые окна Find и Replace 288

Заключение 289 Вопросы и задания 289 Вопросы и ответы 289 Вопросы 291

Упражнения 291 День 9. Создание приложений в C++Builder 293 Работа с репозиторием объектов 293 Страницы и опции репозитория объектов 294 Создание новых объектов из репозитория 297 Добавление объектов в репозиторий 298 Добавление проектов в репозиторий 300 Конфигурирование репозитория объектов 300

Создание форм и приложений с помощью мастеров 302 Мастер диалогов 303 Создание приложений с помощью мастера приложений 304

Добавление функций и членов-данных в исходный код 308 Как C++Builder управляет объявлениями классов 309 Включение функций в программу 311 Добавление членов-данных класса 313 Удаление кода, созданного C++Builder 313

Использование файлов ресурсов 314 Заключение 320 Вопросы и задания 321 Вопросы и ответы 321 Вопросы 322 Упражнения 322

День 10. Подробнее о проектах 325 Проекты нужны всем 325 Менеджер проектов 325 Окно менеджера проектов 325 Оперативная панель менеджера проектов 327

Исследование проектов 330 Команды проводника проекта 331

Опции проекта 332 Вкладка Forms 333 Вкладка Application 335 Вкладка С++ 336 Вкладка Pascal 340 Вкладка Linker 340 Вкладка Directories/Conditionals 342

Редактор кода C++Builder 343 Основные операции редактора 344 Специальные возможности редактора 348 Контекстное меню редактора кода 350 Изменение опций редактора 351

Заключение 355 Вопросы и задания 355

Вопросы и ответы 355 Вопросы 356 Упражнения 357

День 11. Работа с отладчиком 359 Для чего нужен отладчик? 360 Отладочные пункты меню 360 Контрольные точки 361 Установка и удаление контрольных точек 362 Окно списка контрольных точек 363 Простые контрольные точки 365 Условные контрольные точки 365 Команда Run to Cursor 366

Наблюдение за переменными 367 Контекстное меню списка объектов наблюдения 367 Диалоговое окно Watch Properties 368 Разрешение и запрещение наблюдения за объектами 369 Добавление переменных в список объектов наблюдения 369 Использование списка объектов наблюдения 370

Инспектор отладки 372 Другие инструменты отладки 375

Evaluate/Modify 375 Просмотр стека вызовов 376 CPU View 377 Команда Go to Address 377

Пошаговое выполнение программы 378 Методика отладки 380 Диагностические макросы: TRACE и WARN 380 Отслеживание GPF 382 Короткие советы по отладке 383

Заключение 384 Вопросы и задания 385 Вопросы и ответы 385 Вопросы 386 Упражнения 387

День 12. Вспомогательные инструменты и опции C++Builder 389 Редактор изображений 389 Цвета переднего плана и фона 390 Инструменты рисования редактора изображений 392 Масштабирование изображения 393 Палитра толщины линии 394 Работа с файлами растровых изображений 395 Редактирование значков 396 Редактирование курсоров 398

Контекстные меню редактора изображений 399 Создание проекта ресурсов 399

WinSight: наблюдение за Windows 401 Система сообщений Windows 402 Дерево окон 403 Окно трассировки сообщений 404 Наблюдение за окном 404 Опции трассировки сообщений 405 Другие возможности WinSight 406

Инструменты командной строки 408 grep.exe 409 implib.exe 410 touch.exe 411 tdump.exe 412

Конфигурирование меню Tools 413 Диалоговое окно Configure Tools 413

Установка опций среды 415 Вкладка Preferences 415 Вкладка Library 417 Вкладка Palette 417

Заключение 418 Вопросы и задания 419 Вопросы и ответы 419 Вопросы 420 Упражнения 421

День 13. После изучения основ 423 Декоративные элементы окна 423 Оперативные панели 423 Строки состояния 429 Панели инструментов 436

Управление доступом к командам 436 Проблемы управления доступом к командам 436 К спасительному Onldle 438 От теории к практике 438 В заключение... 440

Печать в приложениях C++Builder 440 Стандартные диалоговые окна печати 441 Простой способ печати 443 Печать через QuickReport 445 Сложный способ печати 445

Использование курсоров 451 Курсоры 451 Загрузка и использование базовых курсоров 452

Загрузка и использование курсоров пользователя 453 Заключение 454 Вопросы и задания 454 Вопросы и ответы 455 Вопросы 456 Упражнения 456

День 14. Углубленное программирование 459 Реализация контекстно-зависимой справки 459 Создание справочного файла 460 Идентификаторы контекста и свойство HelpContext 461 Реализация контекстно-зависимой справки 461 Использование заголовочных файлов справки 464 Практика 465

Обработка исключений 466 Ключевые слова обработки исключений: try, catch и throw 467 Захват исключений с try и catch 467 Формирование исключений 468 Захват 469 Захват необрабатываемых исключений на уровне приложения 471 Отладка с обработкой исключений 472

Работа с реестром 473 Ключи реестра 474 Типы данных реестра 475 Класс TRegistry 475 Использование TRegistry 477

Специальная обработка сообщений 483 Более подробно о сообщениях Windows 484 Отправление и пересылка 486 Обработка событий 487 Обработка других сообщений Windows 488 Сообщения, определяемые пользователем 493

Заключение 494 Вопросы и задания 494 Вопросы и ответы 494 Вопросы 495 Упражнения 496

2-я неделя. Подведение итогов 497 3-я неделя. Краткий обзор 511 День 15. OLE, ActiveX и OCX 513 Autosrv и Autocon 514 Создание собственного автоматизированного сервера 518

Olemdi и Olesdi 524 Olemdi изнутри 525

Элементы управления OCX 526 Заключение 526 Вопросы и задания 527 Вопросы и ответы 527 Вопросы 527 Упражнения 527

День 16. Архитектура доступа к базам данных в C++Builder 529 Некоторые термины, которые необходимо знать 529 Обзор архитектуры 532 Обзор компонентов C++Builder, обеспечивающих работу с базами данных 534

TSession 535 TDatabase 537 TTable 541 TQuery 549 TStoredProc 554 TBatchMove 558 TDataSource 560 TUpdateSQL 561 TField 563

Заключение 566 Вопросы и задания 566 Вопросы и ответы 566 Вопросы 567 Упражнения 567

День 17. Создание форм для работы с базами данных 569 Простая форма 569 Мастер форм баз данных 569 Изучение созданной формы 573 Создание простой формы сложным способом 575 Запуск новой формы 579

Заключение 580 Вопросы и задания 580 Вопросы и ответы 580 Вопросы 581 Упражнения 581

День 18. Построение приложений для работы с базами данных 583 Компонент TDatabase 583 Псевдонимы BDE 584 Модули данных 586 Создание формы главный/подчиненный 589 Отчеты 593 Заключение 595 Вопросы и задания 595

Вопросы и ответы 595 Вопросы 596 Упражнения 596

День 19. Создание и использование DLL 597 Обзор DLL 597 Что представляет собой динамически компонуемая библиотека? 597 Почему стоит использовать DLL? 598

Вызов функций и использование классов в DLL 601 Загрузка DLL 602 Вызов функций, расположенных в DLL 602

Создание DLL 603 Импорт и экспорт функций и классов 604 Секрет заголовков DLL 607 Создание DLL с помощью репозитория объектов 608 Создание библиотеки импорта 612

Создание вызывающего приложения 613 Добавление #include для заголовка DLL 614 Добавление файла библиотеки импорта 614

Использование форм в DLL 615 Вызов формы DLL из приложения C++Builder 615

Использование ресурсов в DLL 618 Создание DLL ресурсов 618 Использование ресурсов DLL 620

Заключение 621 Вопросы и задания 621 Вопросы и ответы 621 Вопросы 623 Упражнения 623

День 20. Создание компонентов 625 Предварительные сведения 625 Изменение существующих компонентов 627 Создание компонентов заново 627 Регистрация компонента 627

Мастер компонентов 628 Создание компонента 629

Написание свойств 631 Свойства имеют базовые члены-данные. 631 Свойства имеют методы записи 632 Свойства имеют методы чтения 633 Свойства могут использовать прямой доступ 634 Свойства могут быть доступны только для записи или только для чтения 634 Свойства могут иметь значения по умолчанию 635 Свойства могут быть отображаемыми или неотображаемыми 636

Написание методов для компонентов 636 Уровни доступа для компонентов 636

TFlashingLabel: пример компонента 637 Предварительное планирование 642

Тестирование компонента 643 Добавление компонента в библиотеку компонентов 645 Диалоговое окно Install Components 645 Инсталляция компонента FlashingLabel 646 Добавление значка для кнопки компонента 647

Написание событий для компонентов 648 Обзор событий 648 План работы 649 Замещение событий базового класса 653

Собираем все вместе 654 Заключение 659 Вопросы и задания 660 Вопросы и ответы 660 Вопросы 661 Упражнения 661

День 21. C++Builder и Delphi 663 Основные различия между C++Builder и Delphi 663 Другие различия между C++Builder и Delphi 664 Файлы проектов 664 Библиотека компонентов 664 Поддержка нескольких языков программирования 665 Заголовочные файлы 665

Эмуляция элементов Delphi в C++Builder 665 Изменения в компиляторе 665 Новые классы 665 Поддержка компонентов 665 Открытые массивы 666 Среда разработки 666 Доступ к базам данных 667

Заключение 667 Вопросы и задания 667 Вопросы и ответы 667 Вопросы 667 Упражнения 668

3-я неделя. Подведение итогов 669 День 22. Создание приложений для Internet 671 Общие сведения 671 Обзор вкладки Internet палитры компонентов 672 Создание собственного Web-браузера 673

«Оживление» новой формы 675 Заключение 681 Вопросы и задания 681 Вопросы и ответы 681 Вопросы 682 Упражнения 682

День 23. Расширения Си++ в C++Builder 683 Немного истории 683 Расширения языка: великие дебаты 684 Новые ключевые слова Си++ в C++Builder 686

_automated 687 _classid 687 _closure 687 _declspec 687 _int8, _intl6, _int32, _int64 688 _property 688 _published 690

Заключение 691 Вопросы и задания 691 Вопросы и ответы 691 Вопросы 692 Упражнения 692

Приложение А. Ответы на вопросы 693 День 1 693 День 2 693 День 3 694 День 4 694 День 5 695 День 6 695 День 7 696 День 8 696 День 9 697 День 10 697 День 11 697 День 12 698 День 13 698 День 14 699 День 15 699 День 16 699 День 17 700 День 18 700 День 19 700 День 20 701

День 21 701 День 22 702 День 23 702