관리 메뉴

ComputerVision Jack

[MFC - MFC 기초 클래스] 본문

Image Processing/MFC Programming

[MFC - MFC 기초 클래스]

JackYoon 2020. 8. 5. 23:59
반응형

MFC 콘솔(Console) 응용프로그램

 

MFC 콘솔 응용프로그램 장점

1. 일반 GUI 응용프로그램과 달리 메시지 구동 방식으로 프로그래밍 하지 않아도 된다.

C나 C++ 언어에 대한 지식만 있으면 실습할 수 있다.

2. 상당수의 MFC 클래스를 사용할 수 있다.

유틸리티 클래스와 집합 클래스가 포함된다.

3. 알고리즘 개발 시 유용하게 사용할 수 있다.

알고리즘 개발시 화려한 GUI 보단 기능 구현을 중시하기 때문에 프로그램이 간편한 콘솔 응용프로그램을 많이 사용.

 

MFC 콘솔 프로그래밍

Visual 2019 버전으로 파일을 생성하고 else 부분에 단순 코딩으로 인해 콘솔 프로그램이 실행된다.

위 코드의 실행 결과는 단순 콘솔창에 string을 보여주는 용도이다.

콘솔 출력

유틸리티 클래스(Utility Class) = 윈도우 응용프로그램에서 사용되는 데이터 타입이나 기능을 좀 더 편리하게 사용할 수 있도록 MFC에서 제공하는 클래스를 총칭하는 용어.

 

CString 클래스

프로그래밍 할 때 가장 많이 다루는 데이터.

  • C언어 문자열 지원 방식
  • C++ 언어의 문자열 지원 방식
  • CString 클래스의 기능

CString 클래스의 특징

  • ANSI 또는 유니코드 문자열 지원
  • 가변 길이 문자열 지원
  • const TCHAR* 또는 LPCTSTR 대신 CString 객체 직접 사용가능

문자열 관련 코딩
간단한 실습

CString::Format() 함수 : 데이터를 문자열로 변환해서 버퍼에 출력한다.

CString::LoadString() 함수 : 문자열 테이블에서 문자열 리소스를 로드한다.

 

CPoint, CRect, CSize 클래스

CPoint 클래스 

구조체 타입 POINT에서 파생한 클레스. LONG 타입의 x, y를 멤버 변수로 갖는다.

CPoint::CPoint(int x, int y);

 

CRect 클래스

구조체 타입 RECT에서 파생한 클래스, LONG타입의 left, top, right, bottom의 멤버 변수를 갖는다.

CRect 클래스 초기화 방법 - 네 개의 멤버 변수를 직접 생성자의 인자로 받는다

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

 

CSzie 클래스

구조체 타입 SIZE에서 파생한 클래스, LONG타입의 cx, cy를 멤버 변수로 갖는다.

CSize::CSize(int x, int y);

 

CTime, CTimeSpan 클래스

CTime 클래스는 절대적인 시간 (현재시간)을 처리하며, CTimeSpan 클래스는 시간의 차이값을 처리한다.

간단한 유틸 예제

집합 클래스(Collection Class) = 배열, 연결리스트와 같은 자료구조를 좀 더 편리하게 사용 할수 있도록 MFC에서 제공하는 클래스

 

배열 클래스

MFC가 제공하는 배열 클래스는 템플릿 클래스와 비 템플릿 클래스 두 종류로 나눌 수 있다.

템플릿 클래스 - afxtempl.h 헤더파일 필요

  • CArray - 데이터타입 프로그래머가 결정 

비템플릿 클래스

  • CByteArray - Byte
  • CWordArray - WORD
  • CDWordArray - DWORD
  • CUIntArray - UINT
  • CStringArray - CString
  • CPtrArray - void 포인터

간단한 배열 예제

리스트 클래스

MFC가 제공하는 리스트 클래스는 템플릿 클래스와 비 템플릿 클래스 두 종류로 나눌 수 있다.

템플릿 클래스

  • CList - 데이터 타입 프로그래머가 결정

비 템플릿 클래스

  • CObList - CObject 포인터
  • CPtrList - void 포인터
  • CStringList - CString 객체

리스트 생성과 초기화 순서

1. 리스트 객체를 생성한다.

2. AddHead() 또는 AddTail() 함수를 호출하여 원소를 리스트의 앞쪽이나 뒤쪽에 추가한다.

 

맵 클래스

맵Map은데이터를 저장할 때 키 Key를 이용하여 저장 위치를 결정하는 자료구조.

템플릿 클래스

  • CMap - 데이터 타입 프로그래머가 결정

비 템플릿 클래스

  • CMapWordToOb - WORD -> CObject 포인터
  • CMapWordToPtr - WORD -> void 포인터
  • CMapPtrToPtr - void 포인터 -> void 포인터
  • CMapStringToOb - 문자열 -> CObject 포인터

간단한 맵 예제

반응형

'Image Processing > MFC Programming' 카테고리의 다른 글

[MFC - MFC 프로그램 구조]  (0) 2020.08.17
[MFC - Chater2 연습 문제]  (2) 2020.08.06
[MFC - Chater1 연습 문제]  (0) 2020.08.03
[MFC - 윈도우 프로그래밍 기초]  (0) 2020.08.03
[MFC 프로그래밍 - Chapter9]  (0) 2020.02.28
Comments