Гилберт С., Маккарти Б. - Самоучитель Visual C++ 6 в примерах - 2003
.pdfС.Гилберт, Б.Маккарти
САМОУЧИТЕЛЬ 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++ |
|
Запуск VC++ |
13 |
Проект NotePod: предварительное обсуждение |
15 |
Начинаем работать с AppWizard |
16 |
Исследование вашего проекта |
25 |
Активизация проекта NotePod |
28 |
Новый всемирный порядок |
30 |
Фокусы с картами или фокусы со шляпами: что это означает? |
33 |
Глава 2. Программирование в среде Windows |
35 |
Проблемы, возникающие при работе с DOS |
36 |
Решения, предлагаемые Windows |
39 |
Оригинальные методы программирования в среде Windows: использование |
41 |
API |
|
Программирование в среде Windows: MFC |
51 |
Об MFC всерьез |
58 |
Глава 3. Создание простого приложения на основе диалоговых окон |
59 |
Ресурсы и диалоговые окна |
60 |
Начало работы с Dialog Editor |
65 |
Встреча с Bitmap Editor |
68 |
И снова Dialog Editor |
74 |
Заключительные штрихи |
86 |
Глава 4. Диалоговые окна |
87 |
Структура приложения FourUp |
88 |
Знакомьтесь: объект приложения |
92 |
Обзор окон |
101 |
Введение в ресурсы |
108 |
Завершение исследования ресурсов: краткое повторение |
110 |
Глава 5. Элементы управления и ClassWizard: реальные диалоговые |
111 |
окна |
|
Планирование деятельности |
112 |
Вернемся к Dialog Editor |
113 |
Создание кода |
119 |
Ответ на события BN_CLICKED |
121 |
Создание функции OnDealCards() |
124 |
Создание кода: сдача карт и одсчет общего выигрыша |
127 |
Рискуйте! |
132 |
Глава 6. Понятие об элементах управления |
133 |
Краткий обзор CWnd |
134 |
Углубленное знакомство с CStatic |
139 |
Семейство CButton |
144 |
Заключительное слово |
151 |
Глава 7. Компьютерная графика: создание графического приложения |
152 |
Графика в одной линии |
153 |
Быстрый взгляд внутрь LineOne |
156 |
Парадокс с LineTwo |
159 |
Рисование изображений в Windows |
164 |
Инструменты рисования |
166 |
Непрерывное рисование |
168 |
PaintItGray |
170 |
Вперед и вверх |
172 |
Глава 8. Графика и текст |
173 |
За кулисами Windows и GDI |
174 |
Понятие семейства CDC |
177 |
Комплект изобразительных инструментальных средств интерфейса GDI |
178 |
Режимы рисования CDC |
187 |
Создание собственной программы хранителя экрана |
188 |
Что же дальше? |
192 |
Глава 9. Кошмар Пикассо: Построение интерактивной программы |
193 |
|
рисования |
|
|
Версия 1 |
программы PaintORama |
194 |
Версия 2 |
приложения PaintORama: перья на заказ |
206 |
Смотрите нас на следующей неделе, когда... |
213 |
Глава 10. Приложение PaintORama: новая версия программы |
214 |
Версия 3 приложения PaintORama: цвета и стили |
215 |
Приложение PaintORama: линии и формы |
223 |
Вскоре ожидается: только в театрах |
233 |
Глава 11. Построение документов и представлений |
235 |
Приложение PaintORama: еще раз о сообщении WM_PAINT |
237 |
SDIOne: переход к архитектуре DocView |
245 |
Ближайшая перспектива |
252 |
Глава 12. Особенности архитектуры DocView |
254 |
Кто, что и почему? |
255 |
Архитектура DocView: кто с кем разговаривает? |
257 |
Класс CSDIOneApp: вы называете это InitInstance()? |
265 |
Что еще есть в меню? |
272 |
Глава 13. Мечта Пикассо:программа MiniSketch |
273 |
Какую информацию несет в себе имя? |
274 |
MiniSketch получает меню |
278 |
Еще раз обратимся к перьям |
285 |
Куда двигаться дальше? |
293 |
Глава 14. Меню, панели инструментов и строки состояния |
294 |
Командный пользовательский интерфейс |
295 |
Акселераторы |
299 |
Панель инструментов |
300 |
Строки состояния |
306 |
На очереди другие работы |
316 |
Глава 15. Сохранение в MiniSketch: работа с документами и файлами |
317 |
Точки и фигуры |
319 |
Определение классов фигур |
321 |
Реализация классов фигур |
326 |
Использование классов иерархии Shape |
328 |
Возможность сохранения в Minisketch |
331 |
Сериализация |
334 |
Что нового? |
338 |
Глава 16. Совершенно новое представление: прокрутка и печать |
339 |
Что насчет цветов кисти? |
340 |
Соединение документа и представления |
342 |
Рисование фигуры |
345 |
Альтернативные представления: режимы отображения |
349 |
Прокрутка окон представления |
353 |
Печать и предварительный просмотр |
354 |
Теперь о чем-то совершенно другом |
361 |
Глава 17. Повторное использование программного обеспечения: |
362 |
сборка приложения из компонентов |
|
Исследование галереи |
364 |
Совершенствование MiniSketch |
364 |
Когда это кажется безопасным: WordZilla |
368 |
Усовершенствование WordZilla |
372 |
ActiveX в панели диалога |
380 |
Глава 18. ActiveX и приложения, основанные на компонентах |
381 |
WordZilla получает диалоговое окно |
383 |
Как работают модальные диалоговые окна |
389 |
Немодальные диалоговые окна |
392 |
ActiveX-версия DatePicker |
397 |
И вновь ActiveX |
404 |
Путешествие к источнику данных |
406 |
Глава 19. Программное обеспечение в работе: создание запроса в базу |
407 |
данных и обновление приложений |
|
Сперва получите некоторые данные |
409 |
Доступ к базе данных через ODBC |
410 |
Добавление кода в OBos |
417 |
Использование DAO |
423 |
Использование OLE DB |
428 |
На подходе: ActiveX и "зеленая волна" |
429 |
Глава 20. Основы реляционных баз данных |
430 |
Что представляет собой реляционная база данных? |
431 |
Взгляд на базу данных через призму DAO |
434 |
Реляционные базы данных: SQL |
440 |
Элементы управления ActiveX для работы с базами данных |
445 |
Добавление элементов управления ActiveX в DBExplore |
447 |
Следующая остановка - Web |
455 |
Глава 21. Программирование для Internet: броузеры и другие клиенты |
456 |
HTMLView видит весь мир |
457 |
Предоставление броузеру начальной страницы |
459 |
Новинка: ресурсы HTML |
466 |
Исследование навигации |
469 |
Использование классов WinInet |
477 |
Сохранение персонального броузера |
481 |
Пришло время проститься... |
482 |
Что находится на CD-ROM |
483 |
Предметный указатель |
484 |
|
|
Предметный указатель |
|
А |
|
Ввод-вывод |
40 |
Акселераторы 299 |
|
|
Г |
Архитектура DocView 255 |
Галерея 364 |
|
|
Архитектура МУС |
236 |
Гиперссылка 464 |
|
Атрибут 319, 432 |
|
Глобальная область видимости 57 |
|
Б |
|
Группа 149 |
|
Библиотека 14 |
|
|
Д |
Библиотека классов |
52 |
Дескриптор |
176 |
Броузер 457 |
|
Диалоговое окно 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
Функция обратного вызова таймера |
DBos 425 |
|
|||||
|
169 |
|
DDV |
103 |
|
||
|
|
X |
DDX |
103 |
|
||
Хранитель экрана 188 |
Dialog Editor |
65, 113 |
|||||
|
|
Ц |
Dialog Toolbar |
77 |
|||
Цвет |
179 |
|
DLL 22 |
|
|
|
|
|
|
Ш |
DocView 245, 255 |
||||
Шаблон документа 269 |
DOS 38 |
|
|
|
|||
Ширина 179 |
Э |
DSN |
408 |
F |
|||
|
|
|
|
|
|
||
Элемент управления 65, 83, 89, 114, |
FIFO |
42 |
|
|
|||
|
200 |
|
FourUp |
88 |
|
||
CButton |
89 |
|
|
|
|
G |
|
CComboBox 90 |
GDI |
40, 156 |
|
||||
CEdit 90 |
GetStockObject() 178 |
||||||
CListbox 90 |
GUI |
36, 274 |
|
||||
CScrollBar 90 |
|
|
|
|
H |
||
CStatic |
89, 114 |
HTML |
33, 457 |
||||
IDC_CANVAS 200 |
|
|
|
|
I |
||
Picture |
83 |
IDE |
13 |
|
|
|
|
Элементы управления ActiveX 398, |
ISAM 410 |
|
|||||
|
445 |
Я |
ISR |
42 |
|
|
M |
|
|
|
|
|
|
||
Язык структурированных запросов |
MDI |
18, 256 |
|
||||
|
(SQL) 408 |
Menu Editor 278 |
|||||
|
|
|
MFC |
22, 23, 36, 51, 52, 53 |
|||
|
Иностранные термины |
MiniSketch 364 |
|||||
|
|
A |
MRU |
21 |
|
|
|
ActiveX 381 |
|
MSDN |
33 |
|
|||
ADO |
18 |
|
MSG |
43 |
|
|
|
API |
46 |
|
MVC |
236 |
|
||
AppWizard |
14, 20, 22, 30, 62, 154 |
|
|
|
|
N |
|
AutoCompletion 33 |
NotePod |
|
15, 22, 24, 28, 63 |
||||
|
|
B |
|
|
|
|
O |
Bitmap Editor 68 |
ODBC |
408, 410 |
|||||
|
|
C |
OLE |
18, 41 |
|
||
CEditView 24 |
OLE DB |
428 |
|
||||
ClassView 26 |
P Pascal |
|
25 |
|
|||
ClassWizard 30, 121, 125, 163, 210, |
|
|
|
|
R |
||
|
283, 402 |
RC-файл |
108 |
|
|||
COM 19, 41 |
|
Resource Editor 108 |
|||||
Control Toolbar 65 |
ResourceView 27 |
||||||
|
|
D |
ResourceView (Ресурсное |
||||
DAO |
408, 434 |
|
представление) 27 |
|
|
S |
Web-броузер |
457 |
|
|
SDI |
17, 255 |
Web-страница |
462z |
|||
SQL |
408, 440 |
Window Styles |
21 |
|
||
|
|
T |
Windows |
38, 39 |
|
|
Tip Wizard |
14 |
Windows Message |
43 |
|||
Toolbar Editor 301 |
Windows Notepad |
15 |
||||
Ter |
462 |
|
Winlnet 477 |
|
|
|
|
|
V |
WizardBar |
31 |
|
|
Visual C++ |
14, 408, 409 |
WordZilla |
368, 383 |
|||
|
|
W |
|
|
|
|