С.Гилберт, Б.Маккарти САМОУЧИТЕЛЬ VISUAL C++ 6 В ПРИМЕРАХ Книга Самоучитель Visual C++ 6 в примерах, написанная авторами множества бестселлеров Стивеном Гилбертом и Биллом Маккарти, представляет собой введение в искусство программирования в среде Visual C++ 6 с использованием как Windows API, так и библиотеки Microsoft Foundation Classes (MFC). Простой и доступный стиль изложения, изобилие примеров, доступных в виде исходных кодов на сопровождающем CD-ROM, позволяют за короткое время научиться основам создания Windows-приложений и приступить к самостоятельной работе. Книга является неформальным руководством по технологии программирования с использованием MFC. Подробно рассматриваются вопросы, связанные с построением форм, диалоговых окон, приложений для работы с базами данных, приложений с архитектурой "документпредставление" (DocView), программ рисования и Web-браузеров. Немалое внимание уделяется проблемам повторного использования кода, а также работе с компонентами и элементами управления ActiveX. Внимательно ознакомившись с книгой, любой читатель сможет немедленно приступить к самостоятельному созданию эффективных бизнес-приложений. Для широкого круга разработчиков программного обеспечения на платформе Microsoft. Оглавление Введение 8 Глава 1. Создание вашего первого приложения: изучение методов 12 использования VC++ 13 Запуск VC++ Проект NotePod: предварительное обсуждение 15 Начинаем работать с AppWizard 16 25 Исследование вашего проекта Активизация проекта NotePod 28 Новый всемирный порядок 30 Фокусы с картами или фокусы со шляпами: что это означает? 33 Глава 2. Программирование в среде Windows 35 36 Проблемы, возникающие при работе с DOS Решения, предлагаемые Windows 39 41 Оригинальные методы программирования в среде Windows: использование API Программирование в среде Windows: MFC 51 Об MFC всерьез 58 Глава 3. Создание простого приложения на основе диалоговых окон 59 Ресурсы и диалоговые окна 60 Начало работы с Dialog Editor 65 Встреча с Bitmap Editor 68 И снова Dialog Editor 74 Заключительные штрихи 86
Глава 4. Диалоговые окна Структура приложения FourUp Знакомьтесь: объект приложения Обзор окон Введение в ресурсы Завершение исследования ресурсов: краткое повторение Глава 5. Элементы управления и ClassWizard: реальные диалоговые окна Планирование деятельности Вернемся к Dialog Editor Создание кода Ответ на события BN_CLICKED Создание функции OnDealCards() Создание кода: сдача карт и одсчет общего выигрыша Рискуйте! Глава 6. Понятие об элементах управления Краткий обзор CWnd Углубленное знакомство с CStatic Семейство CButton Заключительное слово Глава 7. Компьютерная графика: создание графического приложения Графика в одной линии Быстрый взгляд внутрь LineOne Парадокс с LineTwo Рисование изображений в Windows Инструменты рисования Непрерывное рисование PaintItGray Вперед и вверх Глава 8. Графика и текст За кулисами Windows и GDI Понятие семейства CDC Комплект изобразительных инструментальных средств интерфейса GDI Режимы рисования CDC Создание собственной программы хранителя экрана Что же дальше? Глава 9. Кошмар Пикассо: Построение интерактивной программы рисования Версия 1 программы PaintORama Версия 2 приложения PaintORama: перья на заказ Смотрите нас на следующей неделе, когда... Глава 10. Приложение PaintORama: новая версия программы Версия 3 приложения PaintORama: цвета и стили Приложение PaintORama: линии и формы
87 88 92 101 108 110 111 112 113 119 121 124 127 132 133 134 139 144 151 152 153 156 159 164 166 168 170 172 173 174 177 178 187 188 192 193 194 206 213 214 215 223
Вскоре ожидается: только в театрах Глава 11. Построение документов и представлений Приложение PaintORama: еще раз о сообщении WM_PAINT SDIOne: переход к архитектуре DocView Ближайшая перспектива Глава 12. Особенности архитектуры DocView Кто, что и почему? Архитектура DocView: кто с кем разговаривает? Класс CSDIOneApp: вы называете это InitInstance()? Что еще есть в меню? Глава 13. Мечта Пикассо:программа MiniSketch Какую информацию несет в себе имя? MiniSketch получает меню Еще раз обратимся к перьям Куда двигаться дальше? Глава 14. Меню, панели инструментов и строки состояния Командный пользовательский интерфейс Акселераторы Панель инструментов Строки состояния На очереди другие работы Глава 15. Сохранение в MiniSketch: работа с документами и файлами Точки и фигуры Определение классов фигур Реализация классов фигур Использование классов иерархии Shape Возможность сохранения в Minisketch Сериализация Что нового? Глава 16. Совершенно новое представление: прокрутка и печать Что насчет цветов кисти? Соединение документа и представления Рисование фигуры Альтернативные представления: режимы отображения Прокрутка окон представления Печать и предварительный просмотр Теперь о чем-то совершенно другом Глава 17. Повторное использование программного обеспечения: сборка приложения из компонентов Исследование галереи Совершенствование MiniSketch Когда это кажется безопасным: WordZilla Усовершенствование WordZilla ActiveX в панели диалога
233 235 237 245 252 254 255 257 265 272 273 274 278 285 293 294 295 299 300 306 316 317 319 321 326 328 331 334 338 339 340 342 345 349 353 354 361 362 364 364 368 372 380
Глава 18. ActiveX и приложения, основанные на компонентах WordZilla получает диалоговое окно Как работают модальные диалоговые окна Немодальные диалоговые окна ActiveX-версия DatePicker И вновь ActiveX Путешествие к источнику данных Глава 19. Программное обеспечение в работе: создание запроса в базу данных и обновление приложений Сперва получите некоторые данные Доступ к базе данных через ODBC Добавление кода в OBos Использование DAO Использование OLE DB На подходе: ActiveX и "зеленая волна" Глава 20. Основы реляционных баз данных Что представляет собой реляционная база данных? Взгляд на базу данных через призму DAO Реляционные базы данных: SQL Элементы управления ActiveX для работы с базами данных Добавление элементов управления ActiveX в DBExplore Следующая остановка - Web Глава 21. Программирование для Internet: броузеры и другие клиенты HTMLView видит весь мир Предоставление броузеру начальной страницы Новинка: ресурсы HTML Исследование навигации Использование классов WinInet Сохранение персонального броузера Пришло время проститься... Что находится на CD-ROM Предметный указатель А Акселераторы 299 Архитектура DocView 255 Архитектура МУС 236 Атрибут 319, 432 Б Библиотека 14 Библиотека классов 52 Броузер 457 В
381 383 389 392 397 404 406 407 409 410 417 423 428 429 430 431 434 440 445 447 455 456 457 459 466 469 477 481 482 483 484
Предметный указатель Ввод-вывод 40 Г Галерея 364 Гиперссылка 464 Глобальная область видимости 57 Группа 149 Д Дескриптор 176 Диалоговое окно 60 Добавление записей 422
Домен 432 Драйвер устройства 174 З Заглушка 326 Закладка 21 ClassView 26 Document Template Strings 21 Window Styles 21 Запись 431 Защита заголовка 93 И Идентификатор 67, 94 IDR_MAINFRAME 67 JUNK 94 Идентификатор ресурса 66 Идентификатор таймера 169 Индикатор 309 Индикатор прозрачного выделения 73 Инструмент 31, 73, 166 Brush 73, 166 Pen 166 Pencil 73 Text 74 WizardBar 31 Инструменты рисования 166 Интегрированная среда разработки (IDE) 13 Интервал таймера 169 Интерфейс GUI 36 К Каркас 17 Каркас приложения 52 Карта сообщений 271 Карты 331 Каталог 432 Кисть 166, 186 Клавиатурные акселераторы 295 Класс Box 325 CAboutDlg 26 CAboutDlg 102 CArray 247 CBDApp 56
CBDWindow 56 CBrush 184 CButton 144 CChildFrame 26 CColorDialog 215 CComboBox 195, 215 CDC 177 CDialog 102, 135 CDocument 260 CFormView 382 CFourUpApp 63, 95 CFourUpDlg 63, 103 CFrameWnd 52 CListBox 215 CMainFrame 26, 258, 394 CMetaFileDC 195, 237 CMSDoc 331 CMSStatusBar 311 CMSView 286 CNotePodApp 26 CNotePodDoc 26 CNotePodView 26 CPaintDC 158 CPaintORamaDlg 197, 238 CPen 179 CPickDateDlg 396 CSDIOneDoc 260, 262 CStatic 139 CString 123 CWinApp 100, 257 CWnd 101, 134, 389 CWZView 393 FilledShape 324 Line 323 MyWindowClass 46 Oval 325 Shape 320 Squiggle 324 Кнопки-переключатели 303 Коллекции MFC 329 Колонока 432 Командная строка 271 Компилятор 14 Компилятор ресурсов 90
Компонент 65, 89, 364 Компоновщик 14 Конструктор CFourUpApp 98 Контекст устройства 174 Кортеж 431 Кривая 319 Л Линия 224 М Макрокоманда 271, 284, 298, 335 DECLARE_SERIAL() 335 IMPLEMENT_SERIAL() 335 ON COMMAND 284 ON_COMMAND() 271 ON COMMAND.RANGE 289 UPDATE_COMMAND_UI 298 Маршрутизация команд 281 Массивы 331 Мастер 24, 283 AppWizard 24, 62, 154 ClassWizard 121, 163, 283, 402 Мастер советов 14 Меню 285 Метаданные 432 Метафайл 237, 242 Метод 57, 121, 129, 138, 167, 200, 242, 264, 266, 288 CalculateWinnings() 131 Create() 57 DealCards() 129 DeflateRect() 200 GetCheck() 150 GetClientRect() 200 InitInstance() 57, 266 InitPen() 288 KillTimer() 170 LineTo() 167 OnCancel() 121 OnPaint() 168, 242 Rectangle(). 167 Run() 264 SetCharFormat() 373 SelectStockObject() 167 SetCheck() 150
SetFont() 138 SetTimer() 169 Метод резиновой нити 195, 227 Модальное диалоговое окно 383 Н Немодальные диалоговые окна 392 Непрерывное рисование 168 О Оболочка 270 Общие диалоговые окна Windows 217 Общие элементы управления Win32 207 Объект 57, 247, 335 CArchive 335 CBDApp 57 CPoint 247 Объект приложения 92 Объекты-контроллеры 236 Объекты-модели 236 Объекты-представления 236 Овал 319 Ограничения 432 Оконная процедура 50 Операционная система 38 DOS 38 Windows 38, 39 Определение класса 95 Опрос 39 Отношения 431 Отсечение 177 Очередизованный ввод 39 Очистка памяти 333 П Палитра 73 Color 73 Drawing 73 Панель инструментов 65, 295, 300, 470 Первичный ключ 432 Передача сообщений 48 Переключатели 220 Переменные типа bool 199 Переменные типа int 199
Перо 166, 179, 211, 220, 285 геометрическое 179 Печать 354 Подменю 289 Поле 432 Поле со списком 223 Пользовательский интерфейс 295 Предварительный просмотр 354 Приложение CBrushOne 187 CDaoRecordView 424 CPenOne 183 DocView 245 FourUp 88 LineTwo 159 PaintltGray 170 PaintORama 215 SDIOne 246 SuperSaver 188 Программа MiniSketch 275, 364 PaintORama 194, 206 SquaresAndCircles 166 обработки прерываний 42 Проект LineOne 154 Прототип обработчика 284 Процедура обратного вызова 50 Прямая линия 319 Прямоугольник 319 Прямоугольник выделения 76 Р Рабочая область 16 Регистрация класса 46 Редактор 14 Редактор меню 278 Редактор растровых изображений 68 Редактор ресурсов 14, 108 Режим отображения 175, 349 Режим рисования 187 Реляционная база данных 431, 440 Ресурс 90 Ресурсное представление 27 Ресурсы Windows 60 Рхитектура приложения 88
С Свойства 403 Сериализация 334 События 43, 403 Сообщения 42 Списки 331 Статический текст 78 Статус активности 76 Стили окна 136 Стилизованные перья 220 Стиль 179 Строка 431 Строка состояния 295, 306 СУБД 432 Схема 432 Счетчик 195, 207 Т Таблица 431 Табуляторы 149 Таймеры Windows 169 Тип данных bool 168 Точки 319 У Удаление записей 422 Указатели 320 Управляющая переменная 125 Утилита 65 Ф Фигуры 319 Формы 224 Функции API 46 Функции печати MFC 355 Функция AddDocTemplate() 269 AddPoint() 262 CalculateWinnings() 131 CFourUpApp::InitInstance() 99 Close() 242 Create() 138 CreateObject() 270 CreateSolidBrush() 185 CreateWindow() 46 CSuperSaverApp::InitInstance() 189
CWnd::Create() 135 CWnd::lnvalidate() 162 DealCards() 130 DeflateRect() 200 DispatchMessage() 49 DoDataExchange() 103, 385, 390 DoModal() 288, 376, 391, 422 DPtoLP() 351 Draw() 320, 345 Drawltem() 314 Drawline() 174 DrawShape() 227, 241 DrawShapes() 225 EndDialog() 391 Fopen() 176 Fputc() 176 GetCharFormatSelection() 376 GetClientDC() 205 GetDlgltem() 200 GetFirstView() 261 GetMessage() 48 GetNextView() 261 GetRuntimeClass() 270 GetWindowRect() 200 InitInstance() 98, 100, 265 lnvalidate() 168 LineTo() 159 LoadStdProfileSettings() 267 LPtoDP() 351 Main() 41 MessageBox() 122 MoveTo() 158, 205 OnAppAbout() 265 OnAppExit() 272 OnBeginPrinting() 264, 355 OnBrushColor() 342 OnBrushcolor() 232 OnCancel() 122, 123, 391 OnCharEffects() 376 OnClearbtn() 243 OnDealCards() 124 OnDraw() 252, 277, 347 OnEditPasteDate() 387 OnEndPrinting() 264, 355
OnFormatFont() 375 OnInitDialog() 105, 169, 200, 220 OnLButtonDown() 203, 204, 222, 251,343 OnLButtonUp() 227, 344 OnMouseMove() 205, 226, 227, 344 OnNewFile() 405 OnOK() 391, 405 OnPaint() 107, 156, 233 OnPencolor() 220 OnPensColor() 287 OnPensWidth() 292 OnPrepareDC() 355 OnPreparePrinting() 264, 355 OnPrint() 355 OnQueryDragIcon() 108 OnSysCommand() 106 OnTimer() 170, 190 PaintBrushPreview() 233 PickRandomCard() 130 PlayMetaFile() 242 Printf() 174 PtlnRect() 204 Putch() 174 Putpixel() 174 Rectangle() 164 RegisterClass() 46 ScreenToClient() 200 Serialize() 335 SetDialogĐ’kColor() 189 SetIcon() 130 SetPos() 211 SetRange() 211 SetRegistryKey() 268 ShowWindow() 47 TextOut() 176 TranslateMessage() 49 Update() 347 UpdateData() 390 WinMain() 45, 47, 53 WndProc() 45, 50, 53
Функция обратного вызова таймера 169 X Хранитель экрана 188 Ц Цвет 179 Ш Шаблон документа 269 Ширина 179 Э Элемент управления 65, 83, 89, 114, 200 CButton 89 CComboBox 90 CEdit 90 CListbox 90 CScrollBar 90 CStatic 89, 114 IDC_CANVAS 200 Picture 83 Элементы управления ActiveX 398, 445 Я Язык структурированных запросов (SQL) 408 Иностранные термины A ActiveX 381 ADO 18 API 46 AppWizard 14, 20, 22, 30, 62, 154 AutoCompletion 33 B Bitmap Editor 68 C CEditView 24 ClassView 26 ClassWizard 30, 121, 125, 163, 210, 283, 402 COM 19, 41 Control Toolbar 65 D DAO 408, 434
DBos 425 DDV 103 DDX 103 Dialog Editor 65, 113 Dialog Toolbar 77 DLL 22 DocView 245, 255 DOS 38 DSN 408 F FIFO 42 FourUp 88 G GDI 40, 156 GetStockObject() 178 GUI 36, 274 H HTML 33, 457 I IDE 13 ISAM 410 ISR 42 M MDI 18, 256 Menu Editor 278 MFC 22, 23, 36, 51, 52, 53 MiniSketch 364 MRU 21 MSDN 33 MSG 43 MVC 236 N NotePod 15, 22, 24, 28, 63 O ODBC 408, 410 OLE 18, 41 OLE DB 428 P Pascal 25 R RC-файл 108 Resource Editor 108 ResourceView 27 ResourceView (Ресурсное представление) 27
S SDI 17, 255 SQL 408, 440 T Tip Wizard 14 Toolbar Editor 301 Ter 462 V Visual C++ 14, 408, 409 W
Web-броузер 457 Web-страница 462z Window Styles 21 Windows 38, 39 Windows Message 43 Windows Notepad 15 Winlnet 477 WizardBar 31 WordZilla 368, 383