본문 바로가기

전자 공학/MFC

[MFC 독학하기] 9. CPoint, CRect, CSize 클래스

반응형

안녕하세요. 취업한 공대누나입니다.

오늘은 MFC의 주요 클래스들에 대해서 공부해보도록 하겠습니다.

MFC를 공부하다보니 C++문법에 대한 내용이 너무 약한 것을 알게 되어 C++ 공부하는 카테고리륻 하나 만들어야겠다는 생각이 듭니다. ㅠㅠ

오늘 공부를 시작해보도록 하겠습니다.

 

 

우선 CPoint, CRect, CSize Class는 API에서 사용하는 구조체 타입인 POINT, RECT, SIZE에서 파생한 클래스입니다.


1. CPoint Class

2차원 좌표계의 점을 저장합니다.

CPoint Class는 LONG 타입의 x, y를 멤버 변수로 가집니다.

CPoint :: CPoint(int x, int y)

 

100과 200, 그리고 200과 300이라는 x좌표와 y좌표를 생성자 인자로 전달하였고 이를 출력해보았습니다.

 

또한 Offset 함수를 이용하여 각각의 좌표에 100을 더할 수도 있습니다.

생성자와 연산자 함수를 제외하면 Offset이 유일한 멤버함수입니다.

 

그리고 p1과 p2의 x, y좌표를 각각 더해서 p3에 저장할 수도 있습니다.

연산자로는 ==, !=, +, -, +=, -=을 제공합니다.


2. CSize Class

가로, ,세로 길이를 저장합니다.

CSize Class는 LONG 타입의 cx, cy를 멤버 변수로 가집니다.

CSize :: CSize(int x, int y)

 

가로와 세로 길이를 각각 생성자 인자로 전달했고, 이를 출력해보았습니다.

 

(100, 200) 좌표를 pt1에 (200, 300) 좌표를 pt2에 저장하였습니다.

그리고 pt1과 pt2의 가로 세로 거리를 size2에 저장하였고, 이를 출력해보았습니다.

그리고 두 개의 사이즈가 같은지 다른지를 판별해보았습니다.

CPoint와 마찬가지로 연산자로는 ==, !=, +, -, +=, -=을 제공합니다.


3. CRect Class

사각형의 좌측 상단과 우측 하단의 좌표를 저장합니다.

CRect Class는 LONG 타입의 left, top, right, bottom을 멤버 변수로 가집니다.

CRect :: CRect(int l, int t, int r, int b);

직사각형의 가로와 세로 길이를 얻을 수 있는 Width()와 Height() 함수가 있습니다.

MoveToX, MovetToY, MoveToXY, OffsetRect를 이용하여 사각형의 좌표를 이동시킬 수 있습니다.

이외에도 DeflateRect, InflateRect를 이용하여 사각형을 축소 및 확대 할 수도 있습니다.

 

직사각형의 좌표를 생성자의 인자로 전달하였습니다.

그리고 Width와 Height 함수를 이용하여 폭과, 높이를 계산하고 이를 출력해 보았습니다.

CRect class는 연산자로 ==, !=, +, -, +=, -=, =, &=, |=, |을 제공합니다.


 

대학교 2학년 때 C++를 공부한 이후로 항상 C언어만 다뤄왔었기에 C++에 대한 기억이 희미해져서 그런지

저한테 MFC에 대한 내용은 어려운 감이 있습니다.

반응형