Visual C++ 2010. Полный курс

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

подчищенный скан имеющейся здесь книги, навигация

Author(s): Хортон А.
Publisher: Диалектика
Year: 2011

Language: Russian
Commentary: подчищенный скан
Pages: 1207

Содержание......Page 6
О техническом редакторе......Page 20
Благодарности......Page 21
Разработка приложений Windows......Page 22
О чем эта книга......Page 23
Структура книги......Page 24
Соглашения, принятые в книге......Page 26
Замеченные опечатки......Page 27
От издательства......Page 28
Глава 1. Программирование в Visual C++ 2010......Page 29
Общеязыковая исполняющая среда (CLR)......Page 30
Написание приложений C++......Page 31
Изучение C++......Page 33
Атрибуты......Page 34
Концепции программирования для Windows......Page 35
Что такое интегрированная среда разработки?......Page 37
Библиотеки......Page 38
Использование IDE......Page 39
Закрепляемые панели инструментов......Page 40
Проекты и решения......Page 41
Настройка параметров среды разработки Visual C++ 2010......Page 55
Создание и выполнение приложений Windows......Page 56
Создание приложения Windows Forms......Page 60
Резюме......Page 62
Глава 2. Данные, переменные и вычисления......Page 63
Структура программы на C++......Page 64
Операторы программы......Page 72
Блоки операторов......Page 75
Консольные программы, создаваемые автоматически......Page 76
Именование переменных......Page 77
Объявление переменных......Page 78
Начальные значения переменных......Page 79
Целочисленные переменные......Page 80
Символьные типы данных......Page 82
Модификаторы целочисленных типов......Page 83
Типы с плавающей запятой......Page 84
Определение синонимов для типов данных......Page 86
Переменные с определенным набором значений......Page 87
Базовые операции ввода-вывода......Page 88
Вывод в командную строку......Page 89
Форматирование вывода......Page 90
Управляющие последовательности......Page 91
Вычисления в C++......Page 93
Арифметические операции......Page 94
Изменение значения переменной......Page 100
Операторы инкремента и декремента......Page 101
Последовательность вычислений......Page 103
Преобразование и приведение типов......Page 105
Явные приведения типов......Page 106
Приведения в старом стиле......Page 107
Выяснение типов......Page 108
Битовое И......Page 109
Битовое ИЛИ......Page 111
Битовое исключающее ИЛИ......Page 112
Битовые операторы сдвига......Page 113
Концепции l- и r-значений......Page 115
Автоматические переменные......Page 116
Глобальные переменные......Page 119
Пространства имен......Page 123
Объявление пространства имен......Page 124
Множественные пространства имен......Page 126
Специфика C++/CLI: базовые типы данных......Page 127
Вывод C++/CLI в командную строку......Page 131
Специфика C++/CLI — форматирование вывода......Page 132
Клавиатурный ввод в C++/CLI......Page 135
Применение оператора safe_cast......Page 136
Перечисления C++/CLI......Page 137
Резюме......Page 142
Сравнение значений......Page 146
Оператор if......Page 148
Вложенные операторы if......Page 149
Вложенные операторы if-else......Page 154
Логические операторы и выражения......Page 156
Условный оператор......Page 158
Оператор switch......Page 160
Повторение блока операторов......Page 164
Что такое цикл......Page 165
Вариации цикла for......Page 168
Цикл while......Page 175
Цикл do-while......Page 177
Вложенные циклы......Page 178
Программирование на C++/CLI......Page 182
Цикл for each......Page 185
Резюме......Page 188
Глава 4. Массивы, строки и указатели......Page 190
Массивы......Page 191
Объявление массивов......Page 192
Инициализация массивов......Page 195
Символьные массивы и обработка строк......Page 197
Многомерные массивы......Page 200
Объявление указателей......Page 204
Инициализация указателей......Page 206
Оператор sizeof......Page 213
Константные указатели и указатели на константы......Page 215
Указатели и массивы......Page 217
Динамическая память, псевдоним “куча”......Page 224
Операторы new и delete......Page 225
Динамическое распределение памяти для массивов......Page 226
Что такое ссылка......Page 229
Определение и инициализация ссылок r-значений......Page 230
Выяснение длины строки, ограниченной нулевым символом......Page 231
Объединение строк, ограниченных нулевым символом......Page 232
Сравнение строк, ограниченных нулевым символом......Page 234
Поиск в строках, ограниченных нулевым символом......Page 235
Программирование на C++/CLI......Page 237
Отслеживаемые дескрипторы......Page 238
Массивы среды CLR......Page 240
Строки......Page 255
Отслеживающие ссылки......Page 264
Внутренние указатели......Page 265
Резюме......Page 268
Глава 5. Структурная организация программ......Page 271
Что такое функции......Page 272
Структура функции......Page 273
Использование функций......Page 275
Передача аргументов в функцию......Page 279
Механизм передачи по значению......Page 280
Указатели как аргументы функций......Page 281
Передача массивов в функцию......Page 283
Ссылки как аргументы функции......Page 287
Использование модификатора const......Page 289
Ссылочные параметры r-значения......Page 291
Аргументы функции main()......Page 292
Получение функцией переменного количества аргументов......Page 294
Возвращение значений из функций......Page 296
Возвращение указателя......Page 297
Возвращение ссылки......Page 300
Статические переменные в функциях......Page 302
Рекурсивные вызовы функции......Page 304
Использование рекурсии......Page 306
Программирование на C++/CLI......Page 307
Функции, получающие переменное количество аргументов......Page 308
Аргументы функции main()......Page 309
Резюме......Page 310
Глава 6. Дополнительные сведения о структурах программ......Page 312
Объявление указателей на функции......Page 313
Указатель на функцию как аргумент......Page 316
Инициализация параметров функций......Page 318
Исключения......Page 320
Передача исключений......Page 322
Перехват исключений......Page 323
Обработка исключений в библиотеке MFC......Page 324
Обработка ошибок выделения памяти......Page 325
Перегрузка функций......Page 326
Что такое перегрузка функций......Page 327
Ссылочные типы и выбор версии перегруженной функции......Page 329
Шаблоны функций......Page 330
Использование шаблона функции......Page 331
Использование оператора decltype......Page 333
Реализация калькулятора......Page 335
Удаление пробелов из строки......Page 338
Вычисление выражения......Page 339
Получение значения элемента......Page 341
Анализ числа......Page 342
Собираем программу вместе......Page 345
Расширение программы......Page 347
Извлечение подстроки......Page 348
Программирование на C++/CLI......Page 351
Что такое общие функции......Page 352
Программа калькулятора для CLR......Page 358
Резюме......Page 364
Глава 7. Определение собственных типов данных......Page 367
Определение структуры......Page 368
Доступ к членам структуры......Page 369
Поддержка средства IntelliSense при работе со структурами......Page 373
Использование указателей со структурами......Page 374
Типы данных, объекты, классы и экземпляры......Page 376
Операции с классами......Page 378
Что такое класс......Page 379
Определение класса......Page 380
Доступ к переменным-членам класса......Page 381
Функции-члены класса......Page 383
Расположение определения функции-члена......Page 385
Встроенные функции......Page 386
Что такое конструктор......Page 387
Стандартный конструктор......Page 389
Присвоение параметрам значений по умолчанию в классе......Page 392
Создание явного конструктора......Page 394
Закрытые члены класса......Page 395
Доступ к закрытым членам класса......Page 398
Дружественные функции класса......Page 399
Стандартный конструктор копирования......Page 402
Указатель this......Page 403
Константная функция-член класса......Page 406
Определения функций-членов вне класса......Page 407
Массивы объектов класса......Page 408
Статические переменные-члены класса......Page 410
Статические функции-члены класса......Page 413
Указатели на объекты класса......Page 414
Ссылки на объекты класса......Page 417
Программирование на C++/CLI......Page 418
Определение типов классов значений......Page 419
Определение ссылочных классов......Page 424
Свойства классов......Page 427
Поля initonly......Page 440
Резюме......Page 442
Глава 8. Дополнительные сведения о классах......Page 445
Стандартныйдеструктор......Page 446
Деструкторы и динамическое распределение памяти......Page 448
Реализация конструктора копирования......Page 451
Определение объединений......Page 454
Перегрузка операторов......Page 456
Реализация перегруженного оператора......Page 457
Реализация полной поддержки оператора......Page 460
Перегрузка оператора присвоения......Page 464
Перегрузка оператора сложения......Page 469
Перегрузка операторов инкремента и декремента......Page 473
Перегрузка оператора вызова функции......Page 474
Как избежать ненужных операций копирования......Page 475
Применение ссылочных параметров r-значений......Page 479
Именованные объекты — l-значения......Page 481
Определение шаблона класса......Page 486
Создание объектов из шаблона класса......Page 490
Шаблоны классов с несколькими параметрами......Page 493
Определение проблемы......Page 495
Реализация класса СВох......Page 496
Использование класса CBox......Page 514
Организация кода программы......Page 517
Именование программных файлов......Page 518
Классы для работы со строкамииз “родной” библиотеки C++......Page 519
Создание строковых объектов......Page 520
Конкатенация строк......Page 521
Обращение к строкам и их модификация......Page 525
Сравнение строк......Page 528
Поиск в строках......Page 532
Перегрузка операторов в классах значений......Page 541
Перегрузка операторов инкремента и декремента......Page 547
Перегрузка операторов в ссылочных классах......Page 548
Реализация оператора присвоения для ссылочных типов......Page 550
Резюме......Page 551
Глава 9. Наследование классов и виртуальные функции......Page 554
Основы объектно-ориентированногопрограммирования......Page 555
Наследование в классах......Page 556
Наследование классов от базового класса......Page 557
Управление доступом при наследовании......Page 561
Работа конструктора в производном классе......Page 563
Объявление членов класса как protected......Page 567
Уровень доступа унаследованных членов класса......Page 570
Конструктор копированияв производном классе......Page 571
Члены класса как друзья......Page 575
Виртуальные функции......Page 577
Что такое виртуальная функция......Page 580
Использование указателей на объекты классов......Page 582
Использование ссылок с виртуальными функциями......Page 583
Чистые виртуальные функции......Page 585
Абстрактные классы......Page 586
Непрямые базовые классы......Page 589
Виртуальные деструкторы......Page 591
Приведение между типами классов......Page 594
Вложенные классы......Page 595
Программирование на C++/CLI......Page 598
Наследование классов в C++/CLI......Page 599
Интерфейсные классы......Page 605
Определение интерфейсных классов......Page 606
Классы и сборки......Page 610
Делегаты и события......Page 615
Деструкторы и финализаторы в ссылочных классах......Page 628
Общие классы......Page 630
Резюме......Page 641
Глава 10. Стандартная библиотека шаблонов......Page 645
Контейнеры......Page 646
Адаптеры контейнеров......Page 647
Итераторы......Page 648
Алгоритмы......Page 649
Диапазон контейнеров STL......Page 650
Создание контейнеров vector......Page 651
Емкость и размер контейнера vector......Page 655
Вставка и удаление элементов в векторе......Page 660
Сохранение в векторе объектов класса......Page 662
Сортировка элементов вектора......Page 667
Хранение указателей в векторе......Page 668
Контейнеры — двунаправленные очереди......Page 670
Использование контейнеров List......Page 674
Использование других последовательных контейнеров......Page 683
Использование карт......Page 699
Использование контейнера multimap......Page 711
Дополнительные сведения об итераторах......Page 712
Использование итераторов входного потока......Page 713
Использование вставляющих итераторов......Page 716
Использование итераторов выходного потока......Page 717
Дополнительные сведенияоб объектах функций......Page 720
Функция replace()......Page 721
Функция transform()......Page 722
Лямбда-выражения......Page 724
Директива фиксации......Page 725
Шаблоны и лямбда-выражения......Page 726
Оболочка лямбда-выражения......Page 731
Библиотека STL для программ C++/CLI......Page 732
Использование последовательных контейнеров......Page 733
Использование ассоциативных контейнеров......Page 741
Резюме......Page 748
Глава 11. Приемы отладки......Page 750
Понятие отладки......Page 751
Программные ошибки......Page 752
Распространенные ошибки......Page 753
Базовые операции отладки......Page 754
Установка точек останова......Page 756
Запуск отладки......Page 758
Добавление отладочного кода......Page 763
Использование утверждений......Page 764
Добавление собственного отладочного кода......Page 765
Стек вызовов......Page 771
Переход к ошибке......Page 773
Проверка расширенного класса......Page 776
Отладка динамической памяти......Page 779
Функции проверки динамической памяти......Page 780
Управление отладочными операциями динамической памяти......Page 781
Отладочный вывод динамической памяти......Page 783
Использование классов Debug и Trace......Page 789
Получение вывода трассировки в приложениях Windows Forms......Page 799
Резюме......Page 800
Глава 12. Концепции программирования для Windows......Page 801
Основы программирования для Windows......Page 802
Элементы окна......Page 803
Программы Windows и операционная система......Page 804
Сообщения Windows......Page 805
Типы данных Windows......Page 806
Нотация программ Windows......Page 807
Структура программы Windows......Page 808
Функция WinMain()......Page 809
Функции обработки сообщений......Page 821
Простая программа Windows......Page 826
Организация программ Windows......Page 827
Нотация библиотеки MFC......Page 829
Структуризация программы MFC......Page 830
Использование Windows Forms......Page 834
Резюме......Page 835
Глава 13. Программирование для нескольких ядер......Page 837
Алгоритмы параллельной обработки......Page 838
Использование алгоритма parallel_for......Page 839
Использование алгоритма parallel_for_each......Page 841
Использование алгоритма parallel_invoke......Page 843
Реальная проблема параллельной обработки......Page 844
Блокировка и разблокировка разделов кода......Page 860
Шаблон класса combinable......Page 863
Задачи и группы задач......Page 865
Резюме......Page 869
Глава 14. Программирование для Windows с использованием библиотеки MFC......Page 871
Документные интерфейсы......Page 872
Что такое представление......Page 873
Ваше приложение и библиотека MFC......Page 874
Создание приложений MFC......Page 877
Создание приложения SDI......Page 879
Вывод мастера MFC Application Wizard......Page 883
Создание приложения MDI......Page 895
Резюме......Page 897
Глава 15. Работа с меню и панелями инструментов......Page 899
Что такое карты сообщений......Page 900
Обработка сообщений в программах......Page 904
Создание и редактирование ресурсов меню......Page 906
Добавление обработчиков сообщений меню......Page 910
Выбор класса для обработки сообщений меню......Page 911
Создание функций сообщений меню......Page 912
Создание функций сообщений меню......Page 913
Добавление обработчиков сообщений для обновления пользовательского интерфейса......Page 917
Добавление кнопок панели инструментов......Page 920
Редактирование свойств кнопки панели инструментов......Page 922
Испытание кнопок панели инструментов......Page 923
Добавление всплывающих подсказок......Page 924
Технология Windows Forms......Page 925
Приложения Windows Forms......Page 926
Добавление меню в версию CLR программы Sketcher......Page 930
Добавление обработчиков событий для пунктов меню......Page 933
Реализация обработчиков событий......Page 934
Установка отметок напротив соответствующих пунктов меню......Page 936
Добавление панели инструментов......Page 937
Резюме......Page 942
Основы рисования в окне......Page 945
Клиентская область окна......Page 946
Интерфейс графических устройств Windows......Page 947
Класс представления в вашем приложении......Page 949
Класс CDC......Page 950
Практика рисования графики......Page 959
Сообщения от мыши......Page 962
Обработчики сообщений мыши......Page 964
Рисование с помощью мыши......Page 966
Испытание программы Sketcher......Page 990
Запуск примера......Page 991
Захват сообщений мыши......Page 992
Рисование с помощью среды CLR......Page 993
Добавление обработчиков событий мыши......Page 994
Определение классов элементов C++/CLI......Page 996
Реализация обработчика событий MouseMove......Page 1005
Реализация обработчика события Paint для формы......Page 1006
Резюме......Page 1007
Глава 17. Создание документа и усовершенствование представления......Page 1010
Использование контейнера List для приложения Sketch......Page 1011
Обновление множественных представлений......Page 1015
Прокрутка представлений......Page 1018
Использование режима отображения mm_loenglish......Page 1022
Удаление и перемещение фигур......Page 1023
Реализация контекстного меню......Page 1024
Связывание меню с классом......Page 1025
Проверка контекстных меню......Page 1028
Подсветка элементов......Page 1029
Обработка сообщений меню......Page 1032
Работа с маскированными элементами......Page 1040
Преобразования системы координат......Page 1041
Определение класса Sketch......Page 1044
Рисование эскиза в обработчике событий Paint......Page 1046
Реализация механизма подсветки элементов......Page 1047
Создание контекстных меню......Page 1052
Резюме......Page 1059
Глава 18. Работа с диалоговыми окнами и элементами управления......Page 1061
Что такое элементы управления......Page 1062
Создание ресурса диалогового окна......Page 1063
Добавление элементов управления в диалоговое окно......Page 1064
Добавление класса диалогового окна......Page 1065
Отображение диалогового окна......Page 1067
Поддержка элементов управлениядиалоговых окон......Page 1070
Инициализация элементов управления......Page 1071
Обработка сообщений переключателей......Page 1072
Добавление ширины пера к документу......Page 1073
Добавление ширины пера к элементам......Page 1074
Создание элементов в представлении......Page 1075
Использование кнопки счетчика......Page 1076
Создание кнопки счетчика......Page 1077
Создание класса диалогового окна масштабирования......Page 1079
Отображение кнопки счетчика......Page 1082
Масштабируемые режимы отображения......Page 1083
Установка режима отображения......Page 1085
Реализация прокрутки с масштабированием......Page 1087
Отображение диалогового окна задач......Page 1089
Создание объектов CTaskDialog......Page 1092
Работа с панелями состояния......Page 1094
Добавление панели состояния в обрамляющее окно......Page 1095
Удаление диалогового окна масштаба......Page 1098
Создание элемента управления списком......Page 1099
Создание ресурса поля редактирования......Page 1102
Создание класса диалогового окна......Page 1104
Добавление пункта меню Text......Page 1105
Определение текстового элемента......Page 1106
Создание текстового элемента......Page 1107
Добавление диалогового окна......Page 1112
Создание текстовых элементов......Page 1120
Резюме......Page 1128
Глава 19. Сохранение и печать документов......Page 1130
Сериализация в определении класса документа......Page 1131
Сериализация в реализации класса документа......Page 1132
Возможности классов на базе класса CObject......Page 1135
Процесс сериализации......Page 1136
Как реализовать сериализацию для класса......Page 1137
Запись изменений в документе......Page 1138
Сериализация документа......Page 1139
Сериализация классов элементов......Page 1141
Испытание сериализации......Page 1145
Печать документа......Page 1146
Процесс печати......Page 1147
Реализация многостраничной печати......Page 1150
Получение полного размера документа......Page 1151
Сохранение данных печати......Page 1152
Подготовка к печати......Page 1153
Очистка после печати......Page 1154
Подготовка контекста устройства......Page 1155
Печать документа......Page 1156
Получение печатного вывода документа......Page 1160
Двоичная сериализация......Page 1161
Сериализация класса Sketch......Page 1165
Печать эскиза......Page 1177
Резюме......Page 1178
Что такое библиотека DLL......Page 1180
Как работают библиотеки DLL......Page 1182
Содержимое библиотеки DLL......Page 1185
Вариации библиотек DLL......Page 1186
Что помещать в библиотеку DLL......Page 1187
Написание и использование библиотек DLL расширения......Page 1188
Резюме......Page 1196
Предметный указатель......Page 1198