Реакция на ошибки
Воспользуйтесь контекстным меню окна Task List и выберите команду Sort by › Category. В результате ее выполнения на первое место попадает сообщение:
error C2238: unexpected token (s) preceding ";"…
Это примерно значит: "Неизвестная лексема предшествует точке с запятой". Такое сообщение, на мой взгляд, значительно более точно определяет причину. Вот она: компилятор не знает, что такое vectoro. Причина: мы забыли подключить файл с заголовками библиотеки STL Это легко исправить, вставив в нужное место строки:
//====== Подключает часть определений STL #include <vector> //====== Задает область видимости имен STL using namespace std;
Теперь надо решить, куда вставить эти строки. Их можно вставить в начало файла MyDoc.h, по это будет расточительно. Дело в том, что для подключения файлов заголовков различных библиотек существует специальное место – файл Stdafx.h. Этот файл (совместно с файлом StdAfx.cpp) используется для построения файла скомпилированных заголовков My.pch (precompiled header) и файла скомпилированных типов StdAfx.obj.
Они расположены в папке Debug вашего проекта и служат для ускорения повторных компиляций файлов проекта после внесенных вами изменений, если они незначительны. Таким образом, подключаемые файлы библиотек, а они внушительны по размерам и компилируются только при необходимости. Сейчас настала такая необходимость, так как исправления затрагивают файл Stdafx.h. Вставьте две вышеуказанные строки в конец файла Stdafx.h и запустите музыку (CTRL + F5).
Отметьте, что все файлы проекта компилируются заново, так как все файлы типа.срр имеют в качестве первой строку:
#include "stdafx.h"
Мы изменили stdafx.h, и компилятор заново проходит по всем зависящим (dependent) от него файлам. После построения и запуска изображение звезды должно появиться в клиентской области дочернего окна-рамки, то есть в окне, управляемом классом CMyView.
— Регулярная проверка качества ссылок по более чем 100 показателям и ежедневный пересчет показателей качества проекта.
— Все известные форматы ссылок: арендные ссылки, вечные ссылки, публикации (упоминания, мнения, отзывы, статьи, пресс-релизы).
— SeoHammer покажет, где рост или падение, а также запросы, на которые нужно обратить внимание.
SeoHammer еще предоставляет технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Зарегистрироваться и Начать продвижение
Рис. 1.7. Окно приложения My
Обратите внимание на характер заливки внутренних частей полигона, который принят по умолчанию. Он идентифицируется символьной константой ALTERNATING, но есть еще один вариант заливки – WINDING. Вставьте в функцию OnDraw, перед выводом полигона, строку:
pDC › SetPolyFillMode(WINDING);
И нажмите CTRL + F5. Характер заливки изменился. Объяснение этого факта (и многих других) надо научиться искать в документации, сопровождающей Studio .NET. Дайте команду Help › Index, в окно Look for введите SetPolyFillMode и нажмите Enter. Появится окно Index Results for…, в котором следует сделать выбор между API-функцией SetPolyFillMode и одноименным методом класса CDC. Так как мы работаем с библиотекой MFC, то выбор почти всегда падает на методы классов, а не на одноименные функции API.
Текст справки появится в окне Web Browser (многовато окон), и если вы действительно хотите понять алгоритм закрашивания кистью внутренних частей полигона, то вам придется немного потрудиться, даже имея хороший английский. К таким ситуациям тоже надо выработать правильное отношение. Программист должен быть кропотлив и терпелив.
Подведем итог:
- мы слегка затронули концепцию решений (solutions);
- научились создавать начальную заготовку MFC-приложения;
- немного привыкли к скользким как мыло окнам Visual Studio .NET;
- вспомнили (или узнали) об архитектуре документ – представление;
- ввели в документ фундаментальную структуру данных – контейнер точек, скроенный по шаблону (template) vector;
- узнали кое-что о выводе в контекст устройства и координатных пространствах Windows;
- получили первый опыт сражений с ошибками.