Страница 8 из 51
CPoint Этот класс является необходимым для многих классов. Используется очень часто. Он является оболочкой для структуры Windows - POINT. typedef struct tagPOINT { LONG x;// координата Х LONG y;// координата Y } POINT;
У этого класса нет папы - он сирота. Для работы необходимо создать класс и объект класса. Все примеры Win32 Console! Пример 1 Создает класс с неинициализированными Х и Y CPoint MyPoint();// и класс и объект CPoint *MyPoint();// только класс MyPoint=new CPoint();// а это только объект на Пример 2 Создает обьект со значениями CPoint MyPoint(1,2);// догадались теперь х=1 а y=2 Пример 3 Конструктор копий создает точнуб копию исходного CPoint, брата близнеца: CPoint InPoint(1,2); CPoint OutPoint(InPoint);
Пример 4 Из объекта CSize, это естественно, так как в объекте CSize тоже всего x и y. #include <iostream.h> #include <afxwin.h> void main() { CPoint InPoint(CSize(10,10)); cout << InPoint.x << " " << InPoint.y << endl; }
результат 10 и 10, а вы что подумали ? Пример 5 Из двойного слова. Удобно писать на диск и востанавливать. При записи на диск записываются только данные, а при чтении обьект восстанавливается. #include <iostream.h> #include <afxwin.h> void main() { DWORD d; d=10; CPoint InPoint(d); cout << InPoint.x << " " << InPoint.y << endl; }
Ну , что будет ? 10 и 0. Пример 6 Смещает точку с использованием разных классов, а точнее изменяет х и y. Именно смещает, прибавляя значения к х и y: #include <iostream.h> #include <afxwin.h> void main() { CPoint MyPoint(10,10); CPoint OfPoint(3,3); CSize OfSize(4,-4); MyPoint.Offset(-5,-5);// непосредственным значением cout << MyPoint.x << " " << MyPoint.y << endl; MyPoint.Offset(OfPoint);// другой точкой cout << MyPoint.x << " " << MyPoint.y << endl; MyPoint.Offset(OfSize);// классов CSize cout << MyPoint.x << " " << MyPoint.y << endl; }
Пример 7 Точки можно сравнивать #include <iostream.h> #include <afxwin.h>
void main() { CPoint C1Point(10,10); CPoint C2Point(3,3); CPoint C3Point(10,10); cout << "C1== C2 "; if (C1Point==C2Point) cout << " равны "; else cout << " не раны " << endl; cout << "C1==C3 "; if (C1Point==C3Point) cout << " равны "; else cout << " не равны " << endl; }
Пример 8 Сравнивать можно и так: #include #include void main() { CPoint C1Point(10,10); CPoint C2Point(3,3); CPoint C3Point(10,10); if (!(C1Point!=C3Point)) cout << " равны "; else cout << " не равны " << endl; } Пример 9 Можно складывать точки вот так: #include <iostream.h> #include <afxwin.h> void main() { CPoint C1Point(10,10); CPoint C2Point(3,3); C1Point+=C2Point; cout << C1Point.x << " " << C1Point.y << endl; }
Пример 10 И так тоже можно: #include <iostream.h> #include <afxwin.h> void main() { CPoint C1Point(10,10); CSize C2Point(3,3); C1Point+=C2Point; cout << C1Point.x << " " << C1Point.y << endl; }
Пример 11 Так тоже можно: #include <iostream.h> #include <afxwin.h> void main() { CPoint C1Point(10,10); CSize C2Point(3,3); C1Point=C1Point+C2Point; cout << C1Point.x << " " << C1Point.y << endl; }
Пример 12#include <iostream.h> #include <afxwin.h> void main() { CPoint C1Point(10,10); CPoint C2Point(3,3); C1Point=C1Point+C2Point; cout << C1Point.x << " " << C1Point.y << endl; }
Пример 13 Вычитать так: #include <iostream.h> #include <afxwin.h> void main() { CPoint C1Point(10,10); CPoint C2Point(3,3); C1Point-=C2Point; cout << C1Point.x << " " << C1Point.y << endl; }
Пример 14 И так ! #include <iostream.h> #include <afxwin.h> void main() { CPoint C1Point(10,10); CSize C2Point(3,3); C1Point-=C2Point; cout << C1Point.x << " " << C1Point.y << endl; }
Пример 15 Вычитать так: #include <iostream.h> #include <afxwin.h> void main() { CPoint C1Point(10,10); CPoint C2Point(3,3); C1Point=C1Point-C2Point; cout << C1Point.x << " " << C1Point.y << endl; }
Пример 16 И так ! #include <iostream.h> #include <afxwin.h> void main() { CPoint C1Point(10,10); CSize C2Point(3,3); C1Point=C1Point-C2Point; cout << C1Point.x << " " << C1Point.y << endl; }
Пример 17 Запись и чтение CPoint в файл. #include <fstream.h>// файловый поток #include <iostream.h>// стандартный поток #include <afxwin.h>// без коментариев void main() { // переменные DWORD *dwTest; WORD wTest[2]; CPoint CTestPoint(1234,1119);// Создали класс точки //Запись wTest[0]=(WORD)CTestPoint.x;// wTest[1]=(WORD)CTestPoint.y;//Перенесли в WORD + WORD =DWORD ! ofstream ofs("test.dat",ios::binary);// открыли на запись ofs.write((char*)&wTest,sizeof(wTest));// записали ofs.close();// закрыли // Чтение ifstream ifs("test.dat",ios::binary);// открыли на чтение ifs.read((char*)&wTest,sizeof(wTest));// прочитали ifs.close();// закрыли dwTest=(DWORD*)&wTest;// Адреса равны ! // проверка CPoint TestPoint(*dwTest);// Востановить класс cout << TestPoint.x << " " << TestPoint.y << endl;//Вывести на экран }
|