2011년 5월 5일 목요일

CxImage 라이브러리의 기능, 함수들

[CxImage란?]

파일/메모리를 통해 이미지를 입/출력하는 기능, 이미지를 화면에 보여주는 기능. 이미지를

변환하거나 처리하는 기능등을 모두 갖고 있습니다.


[CxImage Setting & 사용]

CxImage.dll, CxImage.lib, xImage.h 파일을 다운받습니다..(인터넷검색 이용)

일반적으로 dll을 사용하듯이 CxImage.lib 를 Object/library Modules: 에 추가해 줍니다.

#include "xImage.h" 파일을 인클루드 해줍니다.

CxImage* m_pImage; // 이런식으로 인스턴스를 선언하시고

m_pImage = new CxImage;

m_pImage->Load(lpszPathName, CxImage::FindType(lpszPathName));

이런식으로 사용하시면 됩니다.

[CxImage 기능]

------------------------------------------------------------------------------------------

생성및 입출력

Load : 파일에서 이미지 읽기

Decode : 메모리 버퍼에서 이미지 읽기

LoadResource : 리소스에서 이미지 읽기

Save : 파일에 저장

Encode : 메모리버퍼에 이미지 저장

Create : 가로 세로 길이 픽셀당 비트등의 매개변수로 새로운 이미지만들기(메모리)

CreateFromHBITMAP : DDB로부터 이미지 생성

CreateFromHICON : 아이콘으로 부터 이미지 생성

CreateFromHANDLE : 글로벌 핸들(클립보드)에서 이미지 생성

Copy : 이미지 복사

CopyToHandle : 글로벌핸들(클립보드)에 이미지 복사

Transfer : 이미지를 복사하고 원본 이미지 해제

Destroy : 이미지를 메모리에서 해제

----------------------------------------------------------------------------------------------------

이미지 출력

Draw : 이미지를 DC에 출력, 확대, 축소, 반투명 기능 추가

Tile : 이미지를 Tile형태로 반복 출력

DrawText : 이미지에 텍스트 그려 넣기

------------------------------------------------------------------------------------------

이미지 관련 정보 획득

GetBits : 이미지의 픽셀 데이터가 저장된 포인터 반환

GetBpp : 픽셀당 비트수 반환

GetPalette : 팔레트 정보 반환

GetHeight , GetWidth : 이미지의 가로 세로 크기 반환

GetEffWidth : 이미지의 한줄을 저장하는데 소요되는 바이트 수 반환

GetPixelColor : x,y 좌표를 매개로 받아 그 점의 값을 RGB로 반환

GetPixelIndex : x,y 좌포의 픽셀값을 인덱스로 반환

GetPixelGray : x,y 좌표의 픽셀값의 밝기를 반환

IsInside : x,y좌표가 이미지 내부인지를 반환

IsValid : 이미지가 로딩된 상태면 true , 아니면 false 를 반환

------------------------------------------------------------------------------------------

이미지 관련 정보 설정

SetPallete

SetPixelColor

SetPixelIndex

SetPixelGray

-----------------------------------------------------------------------------------------

이미지 좌표변환

Mirror : 좌우 반전

Flip : 상하반전

Rotate : 임의의 각도로 회전

RotateLeft : 좌로 90도 회전

RotateRight : 우로 90도 회전

Rotate180 : 이미지를 180도 회전

Resample : 이미지 크기 조절

Crop : 이미지의 일부 영역 잘라내기

Expand : 이미지의 크기는 그대로 두고 영역만 확장

Thumbnail : 이미 보기를 위한 작은 이미지 생성

-------------------------------------------------------------------

이미지 픽셀값 조절

Negative : 이미지 픽셀값 반전

Light : 밝기와 콘트라스트 조절

Filter : 이미지에 필터를 적용

----------------------------------------------------------------------------------

이미지 칼라및 포멧 변환

Threshold : 이진 이미지로 변환

GrayScale : 흑백 이미지로 변환

IncreaseBpp : 픽셀당 비트수 증가

DecreaseBpp : 픽셀당 비트수 감소

[CxImage 함수들]

--------------------------------------------------------------------

1. CxPoint2

• 멤버 변수

+ float x, + float y

: 좌표 (x, y)

• 메소드

+ CxPoint2()

+ CxPoint2(IN float const x_, IN float const y_)

+ CxPoint2(IN CxPoint2 const &p)

: 생성자. 디폴트 좌표는 (0, 0)이다.

+ float Distance(IN CxPoint2 const p2)

: 현재 점과 점 p2 사이의 거리를 반환한다.

+ float Distance(IN float const x_, IN float const y_)

: 현재 점과 점 (x, y) 사이의 거리를 반환한다.



2. CxRect2

• 멤버 변수

+ CxPoint2 botLeft

: 좌하단 좌표

+ CxPoint2 topRight

: 우상단 좌표

• 메소드

+ CxRect2()

+ CxRect2(IN float const x1_, IN float const y1_, IN float const x2_, IN float const y2_)

+ CxRect2(IN CxPoint2 const &bl, IN CxPoint2 const &tr)

+ CxRect2(IN CxRect2 const &p)

: 생성자. 디폴트값은 없다.

+ float Surface() const

: 사각형의 면적을 반환한다. 방향에 따라 음수가 반활 될 수도 있다.

+ CxRect2 CrossSection(IN CxRect2 const &r2) const

: 현재 사각형과 사각형 r2가 겹치는 부분의 사각형을 반환한다. 없다면 CxRect2(0,0,0,0)을 반환.

+ CxPoint2 Center() const

: 사각형의 중심의 좌표를 반환한다.

+ float Width()

: 사각형의 가로의 길이를 반환한다.

+ float Height()

: 사각형의 세로의 길이를 반환한다.



3. CxFile

추상클래스로 CxIOFile, CxMemFile의 부모 클래스가 된다.



4. CxIOFile

파일 입출력을 위한 클래스이다.

• 멤버 변수

# FILE *m_fp

: 파일 포인터를 멤버 변수로 가진다. 디폴트값은 NULL이다.

# bool m_bCloseFile

: 이 클래스에서 항상 true.

• 메소드

+ CxIOFile(IN FILE* fp = NULL)

: 생성자. 파일 포인터를 인수로 넘겨받을 수 있다. 인수를 생략하면 파일 포인터는 NULL로 초기화 된다.

+ bool Open(IN const char *filename, IN const char *mode)

: 파일명과 열기 모드를 지정하여 파일을 연다. 한 번 Open()한 뒤 다시 Open()하려면 먼저 Close() 메소드를 수행하여야 한다.

+ bool Close()

: 파일이 열려있다면 파일을 닫는다.

+ size_t Read(IN OUT void *buffer, IN size_t size, IN size_t count)

: buffer는 파일로부터 입력받은 데이터가 저장될 버퍼의 시작 주소, size는 입력 단위체의 크기, count는 입력받은 단위체의 개수이다. 실제로 입력받은 단위체의 개수를 반환한다.

+ size_t Write(IN const void *buffer, IN size_t size, IN size_t count)

: buffer는 출력할 데이터의 시작 주소, size는 출력 단위체의 크기, count는 출력할 단위체의 개수이다. 실제로 출력한 단위체의 개수를 반환한다.

+ bool Seek(IN long offset, IN int origin)

: 파일포인터를 (origin +offset) 위치로 이동시킨다. 성공 여부를 반환한다.

+ long Tell()

: 현재 파일 포인터가 파일의 시작 위치로부터 몇 바이트 떨어져 있는지 반환한다. ( ftell() 사용 )

+ long Size()

: 파일의 크기를 반환한다.

+ bool Flush()

: 입출력 스트림을 비운다. 즉 파일의 읽기 쓰기 작업을 완료시킨다. ( fflush() 사용 )

+ bool Eof()

: 파일 포인터가 파일의 맨 끝에 있으면 true를 반환한다.

+ long Error()

: 파일을 읽을 수 있으면 0을 반환한다.

+ bool PutC(IN unsigned char c)

: 파일 포인터가 가리키고 있는 곳에 한 문자를 기록한다. 성공 여부가 리턴 된다. 파일 포인터가 1증가 한다.

+ long GetC()

: 파일 포인터가 가리키고 있는 곳의 한 문자를 읽어서 반환한다. 파일 포인터가 1증가 한다.



5. CxMemFile

메모리 상에서 파일 입출력의 형태를 구현한 것이다.

• 멤버 변수

# BYTE *m_pBuffer

: 데이터가 저장될 버퍼

# DWORD m_size

: 저장된 데이터의 크기.

# bool m_bFreeOnClose

: Close()호출시 메모리가 해제된다면 true. GetBuffer()를 호출하면 버퍼에 대한 제어를 메소드를 호출한 쪽으로 넘기므로 메모리 해제도 그 곳에서 해야 한다.

# long m_Position

: 파일 포인터의 역할.

# long m_Edge

: 버퍼의 크기.


• 메소드

+ CxMemFile(IN BYTE *pBuffer = NULL, IN DWORD size = 0)

: 생성자. 메모리를 미리 할당하여 인수로 넘겨 줄 수 있다. pBuffer를 넘겨주면서 size를 비워두어도 에러가 발생하지 않으므로 주의한다. ( 다형성을 이용하여 해결해도 된다 )

+ bool Close()

: 파일을 닫는다. 즉 메모리를 반환한다.

+ bool Open()

: 파일을 연다. 다시 열기 위해선 먼저 Close()를 사용하여야 한다.

+ BYTE* GetBuffer(IN bool bDetachBuffer = true)

: 버퍼의 포인터를 반환한다. bDatachBuffer의 값이 true이면 Close()메소드가 동작하지 않게 된다.

+ size_t Read(IN OUT void *buffer, IN size_t size, IN size_t count)

: buffer는 파일로부터 입력받은 데이터가 저장될 버퍼의 시작 주소, size는 입력 단위체의 크기, count는 입력받은 단위체의 개수이다. 실제로 입력받은 단위체의 개수를 반환한다.

+ size_t Write(IN const void *buffer, IN size_t size, IN size_t count)

: buffer는 출력할 데이터의 시작 주소, size는 출력 단위체의 크기, count는 출력할 단위체의 개수이다. 실제로 출력한 단위체의 개수를 반환한다. 출력할 내용이 버퍼의 경계를 벗어나면 메모리 재할당이 일어난다.

+ bool Seek(IN long offset, IN int origin)

: 파일포인터를 (origin +offset) 위치로 이동시킨다. 성공 여부를 반환한다.

+ long Tell()

: 현재 파일 포인터가 파일의 시작 위치로부터 몇 바이트 떨어져 있는지 반환한다.

+ long Size()

: 파일의 크기를 반환한다.

+ bool Flush()

: 아무런 동작도 하지 않는다. ( 메모리에서는 필요 없다 )

+ bool Eof()

: 파일 포인터가 파일의 맨 끝에 있으면 true를 반환한다.

+ long Error()

: 파일을 읽을 수 있으면 0을 반환한다.

+ bool PutC(IN unsigned char c)

: 파일 포인터가 가리키고 있는 곳에 한 문자를 기록한다. 성공 여부가 리턴 된다. 버퍼의 경계를 넘어서면 메모리 재할당이 이루어진다. 파일 포인터가 1증가 한다.

+ long GetC()

: 파일 포인터가 가리키고 있는 곳의 한 문자를 읽어서 반환한다. 파일 포인터가 1증가 한다.

+ void Alloc(IN DWORD dwNewLen)

: 최소 dwNewLen 바이트만큼의 메모리를 할당 한다. 이미 메모리가 할당 되어있다면 재할당이 일어 날 수 있다.

+ void Free()

: Close()를 호출한다.



6. CxImage

• 구조체

ꋺ rgb_color

* BYTE r, g, b : RGB 색상.

ꋺ tagCxImageInfo

* DWORD wEffWidth

: 4의 배수로 정렬된 한 스캔 라인의 길이.

* BYTE* pImage

: 이미지 데이터가 저장된 공간의 시작 주소

* CxImage* pGhost

: 현재 이미지가 고스트 이미지라면 본래의 이미지를 가리킨다.

* CxImage* pParent

: 현재 이미지가 레이어라면 부모가 되는 이미지를 가리킨다.

* DWORD dwType

: 처음 로드한 이미지의 포맷

* char szLastError[256]

: 마지막으로 발생한 에러

* long nProgress

: 이미지에 대한 처리의 진행률.

* long nEscape

: -1이면 이미지에 대한 처리가 강제로 종료된다.

* long nBkgndIndex

: 팔레트를 사용하는 이미지에서 투명색의 인덱스 번호. GIF, PNG, MNG에서 사용한다. -1이면 투명효과를 사용하지 않는다.

* RGBQUAD nBkgndColor

: 24비트 이미지의 투명색.

* BYTE nQuality

: JPG에서 이미지의 품질.

* BYTE nJpegScale

: JPG 이미지를 읽어 들일 때 확대/축소 비율

* long nFrame

: GIF, TIF에서 현재 이미지의 프레임 번호.

* long nNumFrames

: GIF, TIF에서 전체 프레임의 개수.

* DWORD dwFrameDelay

: GIF에서 현재 프레임의 딜레이.

* long xDPI

: PNG의 x축 해상도.

* long yDPI

: PNG의 y축 해상도.

* RECT rSelectionBox

: 선택 영역.

* BYTE nAlphaMax

: 불투명도 최대값.

* bool bAlphaPaletteEnabled

: 알파 팔레트 사용 여부.

* bool bEnabled

: 이미지의 출력 가능 여부.

* long xOffset

: 이미지가 화면에 출력될 때의 시작점의 x좌표.

* long yOffset

: 이미지가 화면에 출력될 때의 시작점의 y좌표.

* DWORD dwCodecOpt[CMAX_IMAGE_FORMATS]

: for GIF, TIF : 0=def.1=unc,2=fax3,3=fax4,4=pack,5=jpg

* RGBQUAD last_c

: GetNearestIndex()에서 사용. 마지막으로 처리된 픽셀의 색상 정보.

* BYTE last_c_index

: GetNearestIndex()에서 사용. 마지막으로 처리된 픽셀의 색상 인덱스.

* bool last_c_isvalid

: GetNearestIndex()에서 사용. 픽셀이 하나라도 처리되었다면 true.

* long nNumLayers

: 전체 레이어의 개수.

* DWORD dwFlags

: 0x??00000 = reserved, 0x00??0000 = blend mode, 0x0000???? = layer id - user flags

ꋺ tagCxTextInfo

* TCHAR text[4096]

: 출력될 문자열.

* LOGFONT lfont

: 글꼴 정보

* COLORREF. fcolor

: 전경색.

* long align

: 멀티라인 텍스트를 위한 정렬 방식. DT_CENTER, DT_RIGHT, DT_LEFT

* BYTE opaque

: 배경을 가지면 true.

* COLORREF bcolor

: 배경색.

* float b_opacity

: 불투명도. 0.0 ~ 1.0. 디폴트는 0.

* BYTE b_outline

: 배경의 외곽선.

* BYTE b_round

: 배경의 외곽선 두께.

• 멤버 변수

# void *pDib

: 이미지 비트맵 정보의 시작 주소. ( 헤더 + 이미지 데이터 + 팔레트 )

# BITMAPINFOHEADER head

: 비트맵 이미지의 헤더

# CXIMAGEINFO info

: CxImage의 헤더

# BYTE *pSelection

: 선택된 영역. 원래 이미지와 크기가 같은 마스크.

# BYTE *pAlpha

: 알파 채널

# CxImage **pLayers

: 레이어 리스트에 대한 포인터.

• 메소드

# void AddAveragingCont(IN RGBQUAD const &color, IN float const surf, OUT float &rr, OUT float &gg, OUT float &bb, OUT float &aa)

: GetAreaColorInterpolated()에서 사용 된다.

+ void AlphaClear()

: 알파 채널 이미지의 값을 모두 0으로 만든다.

+ bool AlphaCopy(IN CxImage &from)

: 기존의 이미지 from으로부터 알파 채널 이미지를 복사해 온다.

+ void AlphaCreate()

: 알파 채널 이미지가 없다면 255로 초기화된 새로운 알파 채널 이미지를 생성한다.

+ void AlphaDelete()

: 알파 채널 이미지를 지운다. 할당된 메모리를 해제 한다.

+ bool AlphaFlip()

: 알파 채널 이미지를 상하로 뒤집는다.

+ BYTE AlphaGet(IN const long x, IN const long y)

: 알파 채널 이미지에서 지정한 좌표의 알파값을 반환한다.

+ BYTE AlphaGetMax() const

: 지정되어 있는 알파값의 최대치를 가져온다.

+ BYTE* AlphaGetPointer(IN const long x = 0, IN const long y = 0)

: 알파 채널 이미지에서 지정한 좌표의 알파값에 대한 포인터를 가져온다.

+ void AlphaInvert()

: 알파 채널 이미지의 값을 반전시킨다.

+ bool AlphaIsValid()

: 이미지가 알파 채널 이미지를 가지고 있다면 true를 반환한다.

+ bool AlphaMirror()

: 알파 채널 이미지를 좌우로 뒤집는다.

+ void AlphaPaletteClear()

: 팔레트의 알파값을 모두 0으로 만든다.

+ void AlphaPaletteEnable(IN bool enable = true)

: 팔레트의 알파값에 대한 사용 여부를 지정.

+ bool AlphaPaletteIsEnabled()

: 팔레트의 알파값을 사용할 수 있다면 true를 반환한다.

+ bool AlphaPaletteIsValid()

: 팔레트 색상 중에서 불투명한 것이 하나라도 있으면 true를 반환 한다.

+ bool AlphaPaletteSplit(OUT CxImage *dest)

: 현재 이미지의 알파값을 8비트 그레이 스캐일 이미지로 내보낸다.

+ void AlphaSet(IN const long x, IN const long y, IN const BYTE level)

: 지정한 좌표의 알파값을 level로 만든다.

+ void AlphaSet(IN BYTE level)

: 알파 채널 이미지의 모든 알파값을 level로 채운다.

+ bool AlphaSet(IN CxImage &from)

: from 이미지로부터 알파 채널 이미지를 현재 이미지로 복사해 온다.

+ void AlphaSetMax(IN BYTE nAlphaMax)

: 알파값의 최대치를 지정한다.

+ bool AlphaSplit(OUT CxImage *dest)

: 현재 이미지의 알파 채널 이미지를 8비트 그레이 스캐일 이미지로 내보낸다.

+ void AlphaStrip()

: 알파 채널 이미지와 현재 이미지를 결합하여 하나의 24비트 이미지를 만든다. 현재 이미지가 24비트이미지가 아니었다면 24비트 이미지로 변환된다.

# void Bitfield2RGB(IN BYTE *src, IN WORD redmask, IN WORD greenmask, IN WORD bluemask, IN BYTE bpp)

: 16또는 32비트 이미지가 담긴 버퍼로부터 RGB이미지를 읽어온다.

+ void BlendPalette(IN COLORREF cr, IN long perc)

: 팔레트의 모든 색상에 cr색상을 perc %만큼 섞어준다.

+ void BlendPixelColor(IN long x, IN long y, IN RGBQUAD c, IN float blend, IN bool IN bSetAlpha = false)

: 지정한 위치의 색상에 c색상을 blend만큼 섞어준다.

blend : 섞는 비율. 유효 범위 : 0.0 ~ 1.0

bSetAlpha : true이면 c의 알파값도 지정한 위치에 넣어준다.

# BYTE BlindAlphaGet(IN const long x, IN const long y)

: 지정한 위치의 알파값을 가져온다. 디버그모드에서만 좌표의 유효성을 검사한다.

# RGBQUAD BlindGetPixelColor(IN const long x, IN const long y)

: 지정한 좌표의 색상값을 반환한다. 실패하면 투명색 또는 검정색을 반환한다. 디버그모드 에서만 좌표의 유효성을 검사한다.

# BYTE BlindGetPixelIndex(IN const long x, IN const long y)

: 지정한 좌표의 팔레트 인덱스 값을 반환한다. 디버그모드 에서만 좌표의 유효성을 검사한다.

# void* BlindGetPixelPointer(IN const long x, IN const long y)

: 지정한 좌표의 픽셀 포인터를 반환한다. 24비트 이미지에서만 사용할 수 있다.

+ long Blt(IN HDC pDC, IN long x=0, IN long y=0)

: 이미지를 출력한다. CXIMAGE_SUPPORT_WINCE가 정의되어 있어야 한다.

# void blur_line (IN float *ctable, IN float *cmatrix, IN int cmatrix_length, IN BYTE *cur_col, OUT BYTE *dest_col, IN int y, IN long bytes)

: UnsharpMask()에서 사용 된다.

+ bool CircleTransform(IN int type, IN long rmax = 0, IN float Koeff = 1.0f)

: 이미지를 원에 기초하여 변환한다. 선택영역이 있으면 해당 영역에만 처리가 적용된다.

type : 변환의 종류

0 : normal FishEye.

1 : reverse FishEye

2 : 나선형

3 : 실린더 미러

4 : 욕실 유리 효과

rmax : 효과가 적용될 반지름. 0이면 이미지 전체에 적용.

Koeff : 값이 클수록 회전각이 작아진다. 값이 클수록 더 적게 회전.

+ void Clear(IN BYTE bval = 0)

: 이미지를 지정한 비트로 채운다. 팔레트 이미지라면 bval은 팔레트의 인덱스가 된다.

+ bool Colorize(IN BYTE hue, IN BYTE sat, IN float blend = 1.0f)

: 본래의 색조와 채도를 지정한 값으로 대체한다. 선택영역이 있으면 해당 영역에만 처리가 적용된다.

blend : 0 ~ 1. 0이면 효과 없음. 1이면 최대 효과.

+ bool Combine(IN CxImage *r, IN CxImage *g, IN CxImage *b,CxImage* a, IN long colorspace = 0)

: 서로 다른 8비트 채널 이미지를 합쳐서 하나의 이미지를 만든다.

colorspace : 색공간. 0 = RGB, 1 = HSL, 2 = YUV, 3 = YIQ, 4 = XYZ

# int CompareColors(IN const void *elem1, IN const void *elem2)

: elem1의 명도에서 elem2의 명도를 뺀 값을 반환한다.

+ bool Contour()

: 인접한 픽셀과의 색상차를 더욱 크게 한다. 선택영역이 있으면 해당 영역에만 처리가 적용된다.

+ void Copy(IN const CxImage &src, IN bool copypixels = true, IN bool copyselection = true, IN bool copyalpha = true)

: 기존의 이미지 src로부터 이미지를 복사해 온다.

copypixels : 이미지 데이터를 복사한다.

copyselection : 선택영역 정보를 복사한다.

copyalpha : 알파채널을 복사한다.

# void CopyInfo(IN const CxImage &src)

: 기존의 이미지 src로부터 이미지의 정보를(CXIMAGEINFO) 복사해온다.

+ HANDLE CopyToHandle()

: 현재 이미지를 클립보드로 복사한다.

+ void* Create(IN DWORD dwWidth, IN DWORD dwHeight, IN DWORD wBpp, IN DWORD imagetype = 0)

: 이미지를 초기화하거나 기존 이미지를 제거하고 새로운 이미지를 만든다. 이미지의 크기에 맞는 버퍼도 할당된다.

+ bool CreateFromArray(IN BYTE *pArray, IN DWORD dwWidth, IN DWORD dwHeight, IN DWORD dwBitsperpixel, IN DWORD dwBytesperline, IN bool bFlipImage)

: 메모리 버퍼에 저장된 이미지로부터 이미지를 생성한다.

bFlipImage : 이미지가 뒤집혀져 있다면 true를 넣어 준다.

+ bool CreateFromHANDLE(IN HANDLE hMem)

: 클립보드로부터 새로운 이미지를 생성한다. 클립보드 이미지의 포맷은 반드시 CF_DIB 이어야 한다. 즉, BITMAPINFO 구조체를 가지고 있어야 한다.

+ bool CreateFromHBITMAP(IN HBITMAP hbmp, IN HPALETTE hpal = 0)

: 비트맵 리소스를 이용하여 이미지를 생성한다. 팔레트를 지정하면 그 팔레트를 사용하는 이미지를 만들게 된다.

+ bool CreateFromHICON(IN HICON hico)

: 아이콘 리소스를 이용하여 이미지를 생성한다.

+ bool CreateFromMatrix(IN BYTE **ppMatrix, IN DWORD dwWidth, IN DWORD dwHeight, IN DWORD dwBitsperpixel, IN DWORD dwBytesperline, IN bool bFlipImage)

: 배열에 저장된 DDB이미지를 지정한 인수에 따라 DIB이미지로 변환하여 이미지를 생성한다.

dwBitsperpixel : 픽셀당 비트수. 1, 4, 8, 24, 32 중에서 한 가지가 가능하다.

dwBytesperline : 한 스캔라인당 바이트수

dwFlipImage : true이면 이미지를 뒤집어서 생성한다.

+ bool Crop(IN const RECT& rect, OUT CxImage *iDst = NULL)

: 현재 이미지에서 지정한 영역만큼을 자른 뒤 그 이미지를 현재 이미지로 대체한다. 만약 iDst를 지정하면 현재 이미지를 대체하지 않고 iDst에 처리된 이미지를 전달한다.

+ bool Crop(IN long left, IN long top, IN long right, IN long bottom, OUT CxImage *iDst = NULL)

: 현재 이미지에서 지정한 영역만큼을 자른 뒤 그 이미지를 현재 이미지로 대체한다. 만약 iDst를 지정하면 현재 이미지를 대체하지 않고 iDst에 처리된 이미지를 전달한다.

+ bool CropRotatedRectangle(IN long topx, IN long topy, IN long width, IN long height, IN float angle, OUT CxImage *iDst = NULL)

: 자르는 영역에 회전을 준다. 나머지는 Crop()과 동일한 기능을 수행한다.

topx : 위 쪽의 두 점 중 왼쪽 점의 x값

topy : 위 쪽의 두 점 중 왼쪽 점의 y값

width : 선택영역의 너비

height : 선택영역의 높이

angle : 사각형의 회전각. 라디안을 사용한다.

iDst : Crop()과 동일

+ CxImage(IN DWORD imagetype = 0)

: Startup()만을 호출한다.

+ CxImage(IN CxFile *stream, IN DWORD imagetype)

: CxFile 객체를 이용하여 이미지를 로드한다.

+ CxImage(IN BYTE *buffer, IN DWORD size, IN DWORD imagetype)

: 버퍼에서 이미지를 가져온다. 버퍼는 CxMemFile 객체를 이용하여 파일 형태로 취급된다.

+ CxImage(IN DWORD dwWidth, IN DWORD dwHeight, IN DWORD wBpp, IN DWORD imagetype = 0)

: 이미지의 크기와 화소당 비트수(1, 4, 8, 24)를 지정하여 생성한다.

+ CxImage(IN const CxImage &src, IN bool copypixels = true, IN bool copyselection = true, IN bool copyalpha = true)

: 기존 이미지에서 새로운 이미지를 생성한다.

copypixels : 비트맵정보를 복사한다.

copyselection : 선택 영역의 데이터를 복사한다.

copyalpha : 알파 채널을 복사한다.

+ CxImage(IN const TCHAR *filename, IN DWORD imagetype)

: 파일로부터 이미지를 로드한다.

+ CxImage(IN FILE *stream, IN DWORD imagetype)

: 파일 핸들을 이용하여 이미지를 로드한다.

+ bool Decode(IN BYTE *buffer, IN DWORD size, IN DWORD imagetype)

: 메모리 버퍼로부터 파일을 읽어 들인다. 버퍼를 CxMemFile 객체를 이용하여 파일로 취급한다.

+ bool Decode(IN CxFile *hFile, IN DWORD imagetype)

: CxFile객체로부터 이미지를 읽어 들인다. 실제로 이미지를 읽어 들이는 메소드이다.

+ bool Decode(IN FILE *hFile, IN DWORD imagetype)

: 파일 핸들을 이용하여 이미지를 로드 한다. CxIOFile 객체를 이용한다.

+ bool DecreaseBpp(IN DWORD nbit, IN bool errordiffusion, IN RGBQUAD *ppal = 0, IN DWORD clrimportant = 0)

: 픽셀당 비트수를 nbit로 감소시킨다.

errordiffusion : true이면 에러디퓨전 디더링을 이용하여 화질을 향상시킨다.

ppal : 최종 이미지에서 사용될 팔레트. 지정하지 않으면 표준 팔레트가 사용된다.

clrimportant : 최종 이미지의 biClrImportant 값을 지정. 디폴트값은 0이다.

+ bool Destroy()

: 고스트 이미지가 아니라면 현재 할당된 메모리를 모두 해제한다. 고스트 이미지는 실제 이미지 데이터를 가진 객체를 가리키고 있을 뿐이므로 메모리를 해제할 필요가 없다. 모든 메모리가 해제되었다면 true를 반환하고 고스트이미지라면 false를 반환한다.

# bool DFT(IN int dir, IN long m, IN double *x1, IN double *y1, IN double *x2, IN double *y2)

: 이산 퓨리에 변환. x와 y는 2^m 개의 점을 가진 복소수 배열.

dir : 1이면 정변환, -1이면 역변환.

+ bool Dilate(IN long Ksize = 2)

: 이미지의 밝은 영역을 확장한다. Ksize는 커널(마스크)의 사이즈. 선택영역이 있으면 해당 영역에만 처리가 적용된다.

+ bool Dither(IN long method = 0)

: 지정한 방식에 따라 이미지를 흑백으로 변환한다.

0 = Floyd-Steinberg

1 = Ordered-Dithering (4x4)

2 = Burkes

3 = Stucki

4 = Jarvis-Judice-Ninke

5 = Sierra

6 = Stevenson-Arce

7 = Bayer (4x4 ordered dithering)

+ long Draw(IN HDC hdc, IN const RECT& rect, IN RECT *pClipRect = NULL, IN bool bSmooth = false)

: hdc를 이용하여 이미지를 화면에 출력한다. pClipRect를 지정하면 화면의 해당영역에만 이미지가 출력된다. 알파 채널, 알파 팔레트, 투명색, 불투명도를 지원한다.

+ long Draw(IN HDC hdc, IN long x = 0, IN long y = 0, IN long cx = -1, IN long cy = -1, IN RECT* pClipRect = 0, IN bool bSmooth = false)

: hdc를 이용하여 이미지를 화면에 출력한다. pClipRect를 지정하면 화면의 해당영역에만 이미지가 출력된다. 알파 채널, 알파 팔레트, 투명색, 불투명도를 지원한다.

+ long Draw2(IN HDC hdc, IN long x = 0, IN long y = 0, IN long cx = -1, IN long cy = -1)

: hdc를 이용하여 이미지를 화면에 출력한다. pClipRect를 지정하면 화면의 해당영역에만 이미지가 출력된다. 투명색만 지원한다.

+ long Draw2(IN HDC hdc, IN const RECT &rect)

: hdc를 이용하여 이미지를 화면에 출력한다. pClipRect를 지정하면 화면의 해당영역에만 이미지가 출력된다. 투명색만 지원한다.

+ void DrawLine(IN int StartX, IN int EndX, IN int StartY, IN int EndY, IN COLORREF cr)

: 브레즌햄 알고리즘을 이용하여 이미지에 선을 그린다.

+ void DrawLine(IN int StartX, IN int EndX, IN int StartY, IN int EndY, IN RGBQUAD color, IN bool bSetAlpha = false)

: 브레즌햄 알고리즘을 이용하여 이미지에 선을 그린다.

+ long DrawString(IN HDC hdc, IN long x, IN long y, IN const TCHAR *text, IN RGBQUAD color, IN const TCHAR *font, IN long lSize = 0, IN long lWeight = 400, IN BYTE bItalic = 0, IN BYTE bUnderline = 0, IN bool bSetAlpha = false)

: 이미지에 문자열을 출력한다.

+ long DrawStringEx(IN HDC hdc, IN long x, IN long y, IN CXTEXTINFO *pTextType, IN bool bSetAlpha = false );

: 이미지에 문자열을 출력한다.

+ bool Edge(IN long Ksize = 2)

: 픽셀간의 색상차이를 강조한다. 경계선이 나타난다. 선택영역이 있으면 해당 영역에만 처리가 적용된다.

+ void Enable(IN bool enable = true)

: 이미지의 출력 가능/불가능을 지정한다.

+ bool Encode(OUT CxFile *hFile, IN CxImage **pImages, IN int pagecount, IN DWORD imagetype)

: 여러 장의 이미지를 TIFF나 GIF 포맷으로 디스크에 저장한다.

pImages : 이미지 리스트

pagecount : 이미지의 개수

+ bool Encode(OUT CxFile *hFile, IN DWORD imagetype)

: 이미지를 특정 포맷(imagetype)으로 디스크에 저장한다.

+ bool Encode(OUT FILE *hFile, IN CxImage **pImages, IN int pagecount, IN DWORD imagetype)

: 여러 장의 이미지를 TIFF나 GIF 포맷으로 디스크에 저장한다.

pImages : 이미지 리스트

pagecount : 이미지의 개수

+ bool Encode(OUT BYTE * &buffer, OUT long &size, IN DWORD imagetype)

: 이미지를 특정 포맷(imagetype)으로 메모리의 버퍼에 저장한다. buffer는 반드시 NULL 이어야 한다.

+ bool Encode(OUT FILE *hFile, IN DWORD imagetype)

: 이미지를 특정 포맷(imagetype)으로 디스크에 저장한다.

+ bool Encode2RGBA(OUT BYTE * &buffer, OUT long &size)

: 이미지를 RGBA 포맷으로 변환하여 버퍼로 내보낸다.

+ bool Encode2RGBA(OUT CxFile *hFile)

: 이미지를 RGBA 포맷으로 변환하여 파일로 내보낸다. 파일은 CxMemFile, CxIOFile 타입을 사용하여야 한다.

# bool EncodeSafeCheck(IN CxFile *hFile)

: 인코딩을 위한 준비가 되었는지 검사한다. 준비가 되지 않았다면 true를 반환한다.

+ bool Erode(IN long Ksize = 2)

: 이미지의 어두운 영역을 확장시킨다. 커널의 크기를 Ksize로 지정한다. 선택영역이 있으면 해당 영역에만 처리가 적용된다.

+ bool Expand(IN long newx, IN long newy, IN RGBQUAD canvascolor, OUT CxImage *iDst = 0)

: 캔버스의 크기를 확장시킨다. newx와 현재 이미지의 너비 차이만큼 좌우가 확장되고 newy와 현재 이미지의 높이 차이만큼 상하가 확장된다. 본래의 이미지는 확장된 캔버스의 중앙에 위치하게 된다. 만약 iDst를 지정하면 현재 이미지를 대체하지 않고 iDst에 처리된 이미지를 전달한다.

newx : 현재 이미지의 너비 + 확장할 너비

newy : 현재 이미지의 높이 + 확장할 높이

canvascolor : 확장된 공간에 채워질 색상

+ bool Expand(long left, long top, long right, long bottom, RGBQUAD canvascolor, CxImage *iDst = 0)

: 캔버스의 크기를 확장시킨다. 상하좌우의 크기를 따로 지정할 수 있다. 새로 만들어진 영역의 색깔을 canvascolor로 지정할 수 있다. 만약 iDst를 지정하면 현재 이미지를 대체하지 않고 iDst에 처리된 이미지를 전달한다.

# bool FFT(IN int dir, IN int m,double *x, IN double *y)

: 빠른 퓨리에 변환. x와 y는 2^m 개의 점을 가진 복소수 배열.

dir : 1이면 정변환, -1이면 역변환.

+ bool FFT2(CxImage *srcReal, CxImage *srcImag, CxImage *dstReal, CxImage *dstImag, long direction = 1, bool bForceFFT = true, bool bMagnitude = true)

:

+ bool Filter(IN long *kernel, IN long Ksize, IN long Kfactor, IN long Koffset)

: 2차원 선형 필터를 적용한다. 선택영역이 있으면 해당 영역에만 처리가 적용된다.

kernel : 선형 필터의 마스크를 1차원 행렬로 가진다.

Ksize : 마스크의 크기. 정방행렬이므로 행의 개수와 같다.

Kfactor : 마스크의 각 요소의 절대갑의 합.

Koffset : 마스크된 결과에 더해질 차이값.

예) 라플라시안 경계선 추출 필터

long kernel[] = {-1,-1,-1,-1,8,-1,-1,-1,-1}; Ksize = 3; Kfactor = 0, Koffset = 0

+ bool Flip()

: 이미지를 상하로 뒤집는다.

+ void FreeMemory(IN void* memblock)

: 메모리를 해제한다.

+ bool Gamma(IN float gamma)

: 색상 균형을 조절한다.

gamma : 0.1 ~ 5.0

# int gen_convolve_matrix (IN float radius, IN float **cmatrix_p)

: 2-패스 가우시안 필터의 각 패스에 사용될 1차원 컨볼루션 매트릭스를 생성한다.

# float* gen_lookup_table (IN float *cmatrix, IN int cmatrix_length)

: cmatrix를 이용하여 LUT를 만든다. 만들어진 LUT의 시작 주소를 반환한다.

+ RGBQUAD GetAreaColorInterpolated(IN float const xc, IN float const yc, IN float const w, IN float const h, IN InterpolationMethod const inMethod, IN OverflowMethod const ofMethod = OM_BACKGROUND, IN RGBQUAD *const rplColor = 0);

: 지정한 영역에서 보간한 색상을 반환한다.

inMethod : 보간 방식

IM_NEAREST_NEIGHBOUR : 가장 가까운 픽셀의 값을 반환한다.

IM_BILINEAR : 이웃한 4개의 픽셀을 이용하여 보간.

IM_BICUBIC : 인접한 16개의 픽셀을 이용하여 보간.

IM_BICUBIC2 : 인접한 16개의 픽셀을 이용하여 보간.

IM_BSPLINE : 인접한 16개의 픽셀을 이용하여 보간.

IM_LANCZOS : 인접한 12*12픽셀을 이용하여 보간.

ofMethod : 좌표를 계산하는 방식

OF_REAPET : 이미지의 경계를 벗어나면 클립 되어 경계선에 놓이게 된다.

OF_WRAP : 이미지의 크기를 단위크기로 한 상대 좌표에 놓이게 된다.

OF_MIRROR : 이미지의 경계선에 대하여 반사된 위치에 놓이게 된다.

OF_COLOR : rplColor이 정의 되었다면 rplColor을 반환하고 그렇지 않으면 투명한 흰색을 반환한다.

OF_BACKGROUND : 배경색을 반환한다.

OF_TRANSPARENT : 투명색을 반환한다.

rplColor : 입력 색상. 픽셀에 대한 계산이 수행되지 않았을 때 기본적으로 반환되는 색상이다.

+ BYTE* GetBits(IN DWORD row = 0)

: 이미지에서 지정한 행의 픽셀에 대한 포인터를 얻는다.

+ WORD GetBpp() const;

: 이미지의 비트 당 픽셀의 개수를 가져온다.

+ DWORD GetClrImportant() const;

: 팔레트의 색상 중 이미지를 표현하는데 필요한 색상의 수를 가져온다. SetClrImportant()로 지정된 값이 반환된다.

+ DWORD GetCodecOption(DWORD imagetype = 0);

: 이미지의 인코딩 옵션값을 가져온다.

+ BYTE GetColorType()

: 1 : 팔레트 컬러. 2 : RGB. 3 : RGBA

+ void* GetDIB() const

: 이미지가 저장된 영역의 시작 포인터를 반환.

+ DWORD GetEffWidth() const

: 이미지의 가로 너비를 반환한다.

+ long GetEscape() const

: 탈출 코드를 가져온다.

+ DWORD GetFlags() const

: SetFlags() 참조.

+ long GetFrame() const

: 현재 선택된 프레임의 번호를 가져온다.

+ DWORD GetFrameDelay() const

: GIF 포맷에서 현재 프레임의 딜레이를 가져온다. 밀리세컨드 단위이다.

+ DWORD GetHeight() const

: 이미지의 높이를 반환한다. 세로 픽셀의 개수.

+ BYTE GetJpegQuality() const

: Jpeg 이미지의 품질값을 가져온다.

+ BYTE GetJpegScale() const

: Jpeg 이미지의 스캐일값을 가져온다.

+ const char* GetLastError()

: 마지막으로 발생한 에러의 메시지 내용을 가져온다.

+ CxImage* GetLayer(IN long position)

: 지정한 위치의 레이어가 반환된다. position값이 0보다 작다면 마지막 레이어가 반환된다.

+ BYTE GetNearestIndex(IN RGBQUAD c)

: 팔레트에서 색상 c와 가장 가까운 색상의 인덱스값을 반환한다.

+ DWORD GetNumColors() const

: 이미지에서 사용되는 색상의 수를 가져온다. 0이면 24비트 이미지.

+ long GetNumFrames() const

: 파일에 포함된 이미지의 개수를 반환한다.

+ long GetNumLayers() const

: 객체에 직접적으로 할당되어 있는 레이어의 개수를 반환한다.

+ void GetOffset(IN long *x, IN long *y)

: 이미지의 오프셋 값을 반환한다. 오프셋은 이미지가 화면에 출력될 시작 좌표이다.

+ RGBQUAD* GetPalette() const

: 팔레트의 시작 주소를 반환한다. 실패하면 NULL을 반환한다.

+ bool GetPaletteColor(IN BYTE i, OUT BYTE *r, OUT BYTE *g, OUT BYTE *b)

: 지정한 인덱스의 색상값을 전달한다. 성공하면 true를 반환한다.

+ RGBQUAD GetPaletteColor(IN BYTE idx)

: 지정한 인덱스의 색상값을 반환한다. 실패하면 검정색을 반환한다.

+ DWORD GetPaletteSize()

: 팔레트의 크기를 반환한다. 바이트 단위이다.

+ CxImage* GetParent() const

: 객체가 레이어를 포함하고 있다면 그 레이어를 가지는 부모 레이어 이미지에 대한 포인터를 반환한다.

+ RGBQUAD GetPixelColor(IN long x, IN long y, IN bool bGetAlpha = true)

: 지정한 좌표의 색상값을 반환한다. 실패하면 투명색 또는 검정색을 반환한다.

+ RGBQUAD GetPixelColorInterpolated(IN float x, IN float y, IN InterpolationMethod const inMethod = IM_BILINEAR, IN OverflowMethod const ofMethod = OM_BACKGROUND, IN RGBQUAD *const rplColor = 0);

: 픽셀의 보간된 색상을 반환한다.

inMethod : 보간 방식

IM_NEAREST_NEIGHBOUR : 가장 가까운 픽셀의 값을 반환한다.

IM_BILINEAR : 이웃한 4개의 픽셀을 이용하여 보간.

IM_BICUBIC : 인접한 16개의 픽셀을 이용하여 보간.

IM_BICUBIC2 : 인접한 16개의 픽셀을 이용하여 보간.

IM_BSPLINE : 인접한 16개의 픽셀을 이용하여 보간.

IM_LANCZOS : 인접한 12*12픽셀을 이용하여 보간.

ofMethod : 좌표를 계산하는 방식

OF_REAPET : 이미지의 경계를 벗어나면 클립 되어 경계선에 놓이게 된다.

OF_WRAP : 이미지의 크기를 단위크기로 한 상대 좌표에 놓이게 된다.

OF_MIRROR : 이미지의 경계선에 대하여 반사된 위치에 놓이게 된다.

OF_COLOR : rplColor이 정의 되었다면 rplColor을 반환하고 그렇지 않으면 투명한 흰색을 반환한다.

OF_BACKGROUND : 배경색을 반환한다.

OF_TRANSPARENT : 투명색을 반환한다.

rplColor : 입력 색상. 픽셀에 대한 계산이 수행되지 않았을 때 기본적으로 반환되는 색상이다.

+ RGBQUAD GetPixelColorWithOverflow(IN long x, IN long y, IN OverflowMethod const ofMethod = OM_BACKGROUND, IN RGBQUAD *const rplColor = 0);

: 픽셀의 좌표를 지정한 방식에 따라 다시 계산한다. 정수 좌표를 사용한다.

ofMethod : 좌표를 계산하는 방식

OF_REAPET : 이미지의 경계를 벗어나면 클립 되어 경계선에 놓이게 된다.

OF_WRAP : 이미지의 크기를 단위크기로 한 상대 좌표에 놓이게 된다.

OF_MIRROR : 이미지의 경계선에 대하여 반사된 위치에 놓이게 된다.

OF_COLOR : rplColor이 정의 되었다면 rplColor을 반환하고 그렇지 않으면 투명한 흰색을 반환한다.

OF_BACKGROUND : 배경색을 반환한다.

OF_TRANSPARENT : 투명색을 반환한다.

rplColor : 입력 색상. 픽셀에 대한 계산이 수행되지 않았을 때 기본적으로 반환되는 색상이다.

+ BYTE GetPixelGray(IN long x, IN long y)

: 지정한 좌표의 색상을 그레이 스캐일로 변환하여 반환한다.

+ BYTE GetPixelIndex(IN long x, IN long y)

: 지정한 좌표의 팔레트 인덱스 값을 반환한다.

+ long GetProgress() const

: 느린 반복 등을 관리하기 위한 것.

+ long GetSize()

: 이미지의 크기를 반환한다.

+ RGBQUAD GetTransColor()

: 투명색을 가져온다.

+ long GetTransIndex() const

: 투명색의 인덱스를 가져온다. 없다면 -1이 반환된다.

+ DWORD GetType() const

: 현재 이미지의 포맷을 반환한다.

+ const TCHAR* GetVersion()

: CxImage의 버전을 반환한다.

+ const float GetVersionNumber()

: CxImage의 버전을 실수형으로 반환한다.

+ DWORD GetWidth() const

: 이미지의 너비를 반환한다. 가로 픽셀의 개수.

+ long GetXDPI() const

: TIFF, JPEG, PNG, BMP 포맷을 위한 수평 해상도를 가져온다.

+ long GetYDPI() const

: TIFF, JPEG, PNG, BMP 포맷을 위한 수직 해상도를 가져온다.

# void Ghost(IN CxImage *from)

: from의 head, info 정보는 복사해오고 나머지 정보는 포인터만 획득한다. info.pGhost 는 from을 가리키게 된다. 기존에 할당되어 있는 메모리를 해제하지는 않고 고스트 이미지를 만들기 때문에 사용에 주의를 기울여야 하겠다. public이 아니므로 외부에서는 접근할 수 없는 메소드이다.

+ bool GrayScale()

: 이미지를 8비트 그레이 스캐일 이미지로 변환한다.

+ long Histogram(IN long *red, IN long *green = 0, IN long *blue = 0, IN long *gray = 0, IN long colorspace = 0)

: 이미지 전체에서 색상의 각 요소들의 출현 빈도를 계산한다. 선택영역이 있으면 해당 영역에만 처리가 적용된다.

colorspace : 색공간을 RGB로 변환한다.

0 : 디폴트. 변환 없음.

1 : HSL에서 RGB로 변환

2 : YUV에서 RGB로 변환

3 : YIQ에서 RGB로 변환

4 : XYZ에서 RGB로 변환

+ bool HistogramEqualize()

: 이미지에 히스토그램 평활화를 적용한다.

+ bool HistogramLog()

: 히스토그램에 로그를 취한다. 밝기 변화가 좀 더 급해진다.

+ bool HistogramNormalize()

: 휘도값에 따라 히스토그램에 스트레치를 적용한다.

+ bool HistogramRoot()

: 히스토그램에 루트를 취한다.

+ bool HistogramStretch(IN long method = 0)

: 히스토그램을 확장하여 범위가 0 ~ 255가 되게 한다.

method

0 = luminance. YUV 색공간에서 휘도(Y)성분을 사용.

1 = linked channels. 하나의 LUT를 사용.

2 = independent channels. 각 채널별로 독립적인 LUT를 사용.

+ RGBQUAD HSLtoRGB(IN RGBQUAD lHSLColor)

: HSL컬러공간에서 YUV컬러공간으로 변환한다.

+ RGBQUAD HSLtoRGB(IN COLORREF cHSLColor)

: HSL컬러공간에서 YUV컬러공간으로 변환한다.

+ void HuePalette(IN float correction = 1)

: 레인보우 팔레트를 생성한다.

# float HueToRGB(IN float n1, IN float n2, IN float hue)

: Huew 값을 RGB 색공간으로 변환한 값을 반환한다.

+ bool IncreaseBpp(DWORD nbit)

: 픽셀당 비트수를 nbit로 증가시킨다.

+ void InitTextInfo( OUT CXTEXTINFO *txt );

: txt를 초기화한다.

+ bool IsEnabled() const

: 이미지가 출력가능하면 true를 반환한다.

+ bool IsGrayScale()

: 이미지가 256컬러를 사용하고 선형 그레이 스캐일 팔레트를 가졌다면 true를 반환한다.

선형 그레이 스캐일 : 인덱스 번호와 색상의 값이 똑같다.

+ bool IsIndexed() const

: 이미지가 256컬러나 그 이하를 사용한다면 true를 반환한다.

+ bool IsInside(IN long x, IN long y)

: 지정한 좌표가 이미지 안에 있으면 true를 반환한다.

# bool IsPowerof2(IN long x)

: x가 2의 멱수이면 true를 반환한다.

+ bool IsSamePalette(IN CxImage &img, IN bool bCheckAlpha)

: img가 현재 이미지와 같은 팔레트를 가지는 지 비교한다. bCheckAlpha가 true이면 rgbReserved 필드의 값도 비교한다.

+ bool IsTransparent(long x, long y)

: 지정한 좌표의 색상이 투명색이면 true를 반환한다.

+ bool IsTransparent() const

: 이미지가 투명색을 사용한다면 true를 반환한다.

+ bool IsValid() const

: 이미지가 올바르게 초기화 되었는지 검사한다. 올바르다면 true를 반환한다.

+ bool Jitter(IN long radius)

: 이미지의 각 픽셀을 무작위로 이동시킨다. radius는 픽셀이 이동 가능한 최대 거리이다. 선택영역이 있으면 해당 영역에만 처리가 적용된다.

+ float KernelBessel(const float x)

+ float KernelBessel_J1(const float x)

+ float KernelBessel_Order1(float x)

+ float KernelBessel_P1(const float x)

+ float KernelBessel_Q1(const float x)

+ float KernelBlackman(const float x)

+ float KernelBox(const float x)

+ float KernelBSpline(const float x)

+ float KernelCatrom(const float x)

+ float KernelCubic(const float t)

+ float KernelGaussian(const float x)

+ float KernelGeneralizedCubic(const float t, const float a=-1)

+ float KernelHamming(const float x)

+ float KernelHermite(const float x)

+ float KernelLanczosSinc(const float t, const float r = 3)

+ float KernelLinear(const float t)

+ float KernelMitchell(const float x)

+ float KernelQuadratic(const float x)

+ float KernelSinc(const float x)

: 보간에 사용되는 커널들.

+ bool LayerCreate(IN long position = -1)

: 비어있는 새로운 레이어를 만든다. position값이 0보다 작으면 새로운 레이어를 가장 마지막 position에 위치시킨다.

+ bool LayerDelete(IN long position = -1)

: 지정한 position의 레이어를 지운다. position값이 0보다 작으면 마지막 위치의 레이이가 지워진다.

+ void LayerDeleteAll()

: 모든 레이어를 지운다.

+ bool Light(long brightness, long contrast = 0)

: 이미지의 명도와 대비를 변화시킨다.

brightness : -255 ~ 255. 음수이면 이미지를 어둡게 만든다.

contrast : -100 ~ 100.

+ bool Load(IN const TCHAR *filename, IN DWORD imagetype = 0)

: 파일로부터 이미지를 지정한 타입으로 로드 한다. 만약 타입을 지정하지 않거나 UNKNOWN으로 지정할 경우 자동으로 알맞은 형식의 타입을 찾는다. ( 모든 타입에 대해 한 번씩 시도해보는 방식 )

+ bool LoadResource(IN HRSRC hRes, IN DWORD imagetype, IN HMODULE hModule = NULL)

: 리소스로부터 이미지를 읽어 들인다.

hRes : FindResource()가 반환하는 리소스의 핸들

imagetype : 이미지 포맷. ENUM_CXIMAGE_FORMATS 참조.

hModule : 내부 리소스일 경우 디폴트 값 NULL을 사용하고 외부 리소스일 경우 LoadLibrary()가 반환하는 hinstance 이다.

+ bool Lut(IN BYTE *pLutR, IN BYTE *pLutG, IN BYTE *pLutB, IN BYTE *pLutA = 0)

: 각 채널에 대한 독립된 Lookup Table을 가진다. 원리는 Lut(IN BYTE *pLut)와 동일하다. 선택영역이 있으면 해당 영역에만 처리가 적용된다.

+ bool Lut(IN BYTE *pLut)

: Lookup Table을 이미지에 적용시킨다. 이미지의 i번째 픽셀의 색상값이 100이라면 pLut의 100번째 값을 새로운 색상값으로 가지게 된다. 선택영역이 있으면 해당 영역에만 처리가 적용된다.

pLut : BYTE pLut[256];

+ HBITMAP MakeBitmap(HDC hdc = NULL)

: 이미지를 비트맵 형식으로 변환하여 HBITMAP 구조체를 반환한다.

+ float Mean()

: 이미지의 명도를 반환한다. 전체 픽셀을 그레이 스캐일로 변환한 뒤 픽셀값의 평균을 반환한다. 선택영역이 있으면 해당 영역에만 처리가 적용된다.

+ bool Median(IN long Ksize=3)

: 중앙값 필터. 주위 픽셀의 값을 크기 순으로 정렬하였을 때 중앙에 있는 값을 현재 픽셀의 값으로 한다. Ksize는 마스크의 크기이다. 선택영역이 있으면 해당 영역에만 처리가 적용된다.

+ bool Mirror()

: 이미지를 좌우로 뒤집는다.

+ void Mix(IN CxImage &imgsrc2, IN ImageOpType op, IN long lXOffset = 0, IN long lYOffset = 0, IN bool bMixAlpha = false)

: 두 이미지를 섞는다.

imgsrc2 : 현재 이미지에 섞을 이미지

imageOpType : 섞는 방법

OpAdd : p + q

OpSub : p - q

OpAnd : p & q

OpXor : p ^ q

OpOr : p | q

OpMask : 검정색을(RGB(0,0,0)) 투명색으로 변환.

OpSrcCopy : 현재 이미지의 투명한 부분에 imgsrc2 이미지를 복사.

OpDstCopy : imgsrc2 이미지의 투명한 부분에 현재 이미지를 복사.

OpScreen : imgsrc2 이미지의 투명도에 따라 블렌딩 처리.

OpSrcBlend : 현재 이미지의 투명도에 따라 블렌딩 처리.

lXOffset , lYOffset : imgsrc2 이미지에서 섞게 될 부분의 좌상단 좌표

bMixAlpha : true이면 알파값도 섞는다.

+ void MixFrom(IN CxImage &imagesrc2, IN long lXOffset, IN long lYOffset)

: imagesrc2 이미지에서 투명하지 않은 픽셀을 현재 이미지에 찍는다.

lXOffset , lYOffset : imagesrc2 이미지에서 섞게 될 부분의 좌상단 좌표

+ bool Negative()

: 이미지의 색상을 반전시킨다. 선택영역이 있다면 선택영역의 색상만 반전된다.

+ bool Noise(IN long level)

: 이미지에 노이즈를 추가한다. level에 높은 값을 줄수록 노이즈가 심해진다. 선택영역이 있으면 해당 영역에만 처리가 적용된다.

+ CxImage& operator = (const CxImage& isrc)

: 대입 연산자 오버로딩.

+ void OverflowCoordinates(IN OUT long &x, IN OUT long &y, IN OverflowMethod const ofMethod)

: 픽셀의 좌표를 지정한 방식에 따라 다시 계산한다. 정수 좌표를 사용한다.

ofMethod : 좌표를 계산하는 방식

OM_REAPET : 이미지의 경계를 벗어나면 클립 되어 경계선에 놓이게 된다.

OM_WRAP : 이미지의 크기를 단위크기로 한 상대 좌표에 놓이게 된다.

OM_MIRROR : 이미지의 경계선에 대하여 반사된 위치에 놓이게 된다.

+ void OverflowCoordinates(IN OUT float &x, IN OUT float &y, IN OverflowMethod const ofMethod)

: 픽셀의 좌표를 지정한 방식에 따라 다시 계산한다. 실수 좌표를 사용한다. 정수 좌표를 위한 OverflowCoordinates() 참조.

+ bool QIShrink(IN long newx, IN long newy, OUT CxImage *const iDst = NULL)

: 이미지의 너비를 newx로, 높이를 newy로 축소시킨다. 확대시키지는 못한다. 만약 iDst를 지정하면 현재 이미지를 대체하지 않고 iDst에 처리된 이미지를 전달한다.

+ bool RedEyeRemove()

: 적목 현상 제거. 제거가 필요한 눈 부분을 선택 영역으로 지정 하여야 한다. 선택영역이 있으면 해당 영역에만 처리가 적용된다.

+ bool Repair(IN float radius = 0.25f, IN long niterations = 1, IN long colorspace = 0)

: 이미지에 번짐 효과를 적용한다.

radius : 보통 0.01 ~ 0.5

niterations : 적용 횟수. 번짐을 피하려면 (radius*niterations) < 1 이 되어야 한다.

colorspace : 색공간. 0 = RGB, 1 = HSL, 2 = YUV, 3 = YIQ, 4 = XYZ

# bool RepairChannel(IN CxImage *ch, IN float radius)

: 하나의 색 채널에 대해 RepairChannel()이 수행된다.

+ bool Resample(IN long newx, IN long newy, IN int mode = 1, OUT CxImage* iDst = NULL)

: 이미지의 크기를 변경한다. 만약 iDst를 지정하면 현재 이미지를 대체하지 않고 iDst에 처리된 이미지를 전달한다.

mode : 0은 이중선형 보간법으로 속도가 느리고 1은 가장 근접한 픽셀을 선택하는 방식으로 속도가 빠르다. 2는 bicubic 스플라인 보간법으로 품질이 좋다.

+ bool Resample2(IN long newx, IN long newy, IN InterpolationMethod const inMethod = IM_BICUBIC2, IN OverflowMethod const ofMethod = OM_REPEAT, IN CxImage *const iDst = NULL, IN bool const disableAveraging = false)

: 이미지의 크기를 변경한다. 만약 iDst를 지정하면 현재 이미지를 대체하지 않고 iDst에 처리된 이미지를 전달한다.

inMethod : 보간 방식

IM_NEAREST_NEIGHBOUR : 가장 가까운 픽셀의 값을 반환한다.

IM_BILINEAR : 이웃한 4개의 픽셀을 이용하여 보간.

IM_BICUBIC : 인접한 16개의 픽셀을 이용하여 보간.

IM_BICUBIC2 : 인접한 16개의 픽셀을 이용하여 보간.

IM_BSPLINE : 인접한 16개의 픽셀을 이용하여 보간.

IM_LANCZOS : 인접한 12*12픽셀을 이용하여 보간.

ofMethod : 좌표를 계산하는 방식

OF_REAPET : 이미지의 경계를 벗어나면 클립 되어 경계선에 놓이게 된다.

OF_WRAP : 이미지의 크기를 단위크기로 한 상대 좌표에 놓이게 된다.

OF_MIRROR : 이미지의 경계선에 대하여 반사된 위치에 놓이게 된다.

OF_COLOR : rplColor이 정의 되었다면 rplColor을 반환하고 그렇지 않으면 투명한 흰색을 반환한다.

OF_BACKGROUND : 배경색을 반환한다.

OF_TRANSPARENT : 투명색을 반환한다.

+ COLORREF RGBQUADtoRGB (RGBQUAD c)

: RGBQUAD 타입 색상을 COLORREF 타입으로 변환한다.

# void RGBtoBGR(BYTE *buffer, int length)

: RGB색상에서 Red와 Blue의 위치를 서로 바꾼다.

buffer : 변환할 픽셀이 저장되어 있는 버퍼

length : 버퍼의 길이. 바이트 단위이다.

+ RGBQUAD RGBtoHSL(RGBQUAD lRGBColor)

: RGB컬러공간에서 HSL컬러공간으로 변환한다.

+ RGBQUAD RGBtoRGBQUAD(COLORREF cr)

: COLORREF 타입 색상을 RGBQUAD 타입으로 변환한다.

+ RGBQUAD RGBtoXYZ(RGBQUAD lRGBColor)

: RGB컬러공간에서 HSL컬러공간으로 변환한다.

+ RGBQUAD RGBtoYIQ(RGBQUAD lRGBColor)

: RGB컬러공간에서 XYZ컬러공간으로 변환한다.

+ RGBQUAD RGBtoYUV(RGBQUAD lRGBColor)

: RGB컬러공간에서 YUV컬러공간으로 변환한다.

+ bool Rotate(IN float angle, OUT CxImage *iDst = NULL)

: 이미지를 지정한 각도만큼 회전시킨다. 회전된 이미지가 모두 들어 갈 수 있는 크기로 이미지가 확장된다. 만약 iDst를 지정하면 현재 이미지를 대체하지 않고 iDst에 처리된 이미지를 전달한다.

+ bool Rotate180(OUT CxImage *iDst = NULL)

: 이미지를 180도 회전시킨다. 만약 iDst를 지정하면 현재 이미지를 대체하지 않고 iDst에 처리된 이미지를 전달한다.

+ bool Rotate2(IN float angle, IN CxImage *iDst = NULL, IN InterpolationMethod inMethod = IM_BILINEAR, IN OverflowMethod ofMethod = OM_BACKGROUND, IN RGBQUAD *replColor = 0, IN bool const optimizeRightAngles = true, IN bool const bKeepOriginalSize = false);

: 이미지를 지정한 각도만큼 회전시킨다. 회전된 이미지가 모두 들어 갈 수 있는 크기로 이미지가 확장된다. 만약 iDst를 지정하면 현재 이미지를 대체하지 않고 iDst에 처리된 이미지를 전달한다.

inMethod : 보간 방식

IM_NEAREST_NEIGHBOUR : 가장 가까운 픽셀의 값을 반환한다.

IM_BILINEAR : 이웃한 4개의 픽셀을 이용하여 보간.

IM_BICUBIC : 인접한 16개의 픽셀을 이용하여 보간.

IM_BICUBIC2 : 인접한 16개의 픽셀을 이용하여 보간.

IM_BSPLINE : 인접한 16개의 픽셀을 이용하여 보간.

IM_LANCZOS : 인접한 12*12픽셀을 이용하여 보간.

ofMethod : 좌표를 계산하는 방식

OF_REAPET : 이미지의 경계를 벗어나면 클립 되어 경계선에 놓이게 된다.

OF_WRAP : 이미지의 크기를 단위크기로 한 상대 좌표에 놓이게 된다.

OF_MIRROR : 이미지의 경계선에 대하여 반사된 위치에 놓이게 된다.

OF_COLOR : rplColor이 정의 되었다면 rplColor을 반환하고 그렇지 않으면 투명한 흰색을 반환한다.

OF_BACKGROUND : 배경색을 반환한다.

OF_TRANSPARENT : 투명색을 반환한다.

replColor : 입력 색상. 픽셀에 대한 계산이 수행되지 않았을 때 기본적으로 반환되는 색상이다.

optimizeRightAngles : 90도, 180도, 270도 회전에는 더 빠른 회전 함수를 호출한다.

bKeepOriginalSize : true이면 이미지를 회전하여도 이미지의 본래 크기가 유지 된다.

+ bool RotateLeft(OUT CxImage *iDst)

: 이미지를 왼쪽으로 90도 회전시킨다. 만약 iDst를 지정하면 현재 이미지를 대체하지 않고 iDst에 처리된 이미지를 전달한다.

+ bool RotateRight(OUT CxImage *iDst)

: 이미지를 오른쪽으로 90도 회전시킨다. 만약 iDst를 지정하면 현재 이미지를 대체하지 않고 iDst에 처리된 이미지를 전달한다.

+ bool Save(IN const TCHAR *filename, IN DWORD imagetype)

: 이미지를 지정한 포맷으로 디스크에 저장한다.

+ bool SelectionAddColor(IN RGBQUAD c)

: 지정한 색상의 픽셀을 선택영역에 포함시킨다.

+ bool SelectionAddEllipse(IN RECT r)

: 기존의 선택영역에 타원형의 영역을 더한다.

+ bool SelectionAddPixel(IN int x, IN int y)

: 지정한 좌표의 픽셀을 선택영역에 더한다.

+ bool SelectionAddPolygon(IN POINT *points, IN long npoints)

: 기존의 선택영역에 다각형의 영역을 더한다.

points : 다각형의 꼭지점 리스트.

npoints : 꼭지점의 개수.

+ bool SelectionAddRect(IN RECT r)

: 기존의 선택영역에 사각형의 영역을 더한다.

+ bool SelectionClear()

: 선택영역을 지운다.

+ bool SelectionCopy(IN CxImage &from)

: from 이미지로부터 선택영역을 복사해 온다.

+ bool SelectionCreate()

: 선택영역에 대한 정보를 담을 새로운 버퍼를 생성한다.

+ bool SelectionDelete()

: 선택영역에 대한 정보를 담고 있는 버퍼를 제거한다.

+ void SelectionGetBox(IN RECT &r)

: 선택영역을 모두 포함하는 가장 작은 사각형을 반환한다.

+ bool SelectionInvert()

: 선택영역을 반전시킨다.

+ bool SelectionIsInside(IN long x, IN long y)

: 지정한 좌표가 선택영역 안에 있으면 true를 반환한다.

+ bool SelectionIsValid()

: 선택영역을 위한 버퍼가 할당되어 있다면 true를 반환한다.

+ bool SelectionSplit(OUT CxImage *dest)

: 선택 영역을 8비트 그레이 스캐일 이미지로 내보낸다.

+ bool SelectionToHRGN(OUT HRGN &region)

: 선택영역을 HRGN 타입으로 변환시킨다.

+ void SetClrImportant(IN DWORD ncolors = 0)

: 팔레트의 색상 중 이미지를 표현하는데 필요한 색상의 수를 지정한다. 인수의 값은 2^bpp보다 작은 값이어야 하며 0또는 생략하면 모든 색상을 필요로 한다는 의미가 된다.

+ bool SetCodecOption(IN DWORD opt, IN DWORD imagetype = 0)

: GIF, TIF, JPG에 대한 인코딩 옵션을 지정한다.

GIF : 0 = LZW (디폴트), 1 = none, 2 = RLE.

TIF : 0 = 자동 (디폴트), 또는 "tiff.h"에 정의되어 있는 것들. (COMPRESSION_NONE = 1, COMPRESSION_CCITTRLE = 2, ...)

JPG : enum CODEC_OPTION ( ENCODE_BASELINE = 0x01, ENCODE_PROGRESSIVE = 0x10, ...)에 정의되어 있는 값들 중 하나.

+ void SetEscape(long i)

: 느린 반복문 등이 수행되고 있을 때 i값을 -1로 주면 강제로 루틴을 빠져 나가게 한다.

+ void SetFlags(IN DWORD flags, IN bool bLockReservedFlags)

: 나중에 사용될 것을 생각해 만들어 둔 플래그.

flags

0x??00000 = 16비트 이미지, CMYK, 멀티 레이어를 위해 예약됨.

0x00??0000 = 블렌드 모드

0x0000???? = 레이어 id 또는 사용자 플래그

bLockReservedFlags : 예약된 플래그와 블렌드 모드를 보호한다.

+ void SetFrame(long nFrame)

: 다음에 읽어 들일 프레임의 번호를 지정한다. TIFF, GIF 이미지에서 사용한다.

+ void SetFrameDelay(DWORD d)SetFrame

: GIF 포맷에서 현재 프레임의 딜레이를 지정한다. 밀리세컨드 단위이다.

+ void SetGrayPalette()

: 팔레트를 그레이 스캐일로 지정한다.

+ void SetJpegQuality(BYTE q)

: JPEG 이미지의 화질을 지정한다. 범위는 0 ~ 100 이다.

+ void SetJpegScale(BYTE q)

: JPEG 이미지를 읽어 들일 때 확대/축소 비율을 지정한다. 가능한 숫자는 1, 2, 4, 8이다.

+ void SetOffset(long x,long y)

: 화면상에 이미지가 출력될 시작 위치.

+ void SetPalette(IN RGBQUAD *pPal, IN DWORD nColors = 256)

: 팔레트의 색상을 지정한다.

+ void SetPalette(IN rgb_color *rgb, IN DWORD nColors = 256)

: 팔레트의 색상을 지정한다.

+ void SetPalette(IN DWORD n, BYTE *r, BYTE *g, BYTE *b)

: 팔레트의 색상을 지정한다.

n : 색상의 수

r : red 값이 들어 있는 버퍼

g : green 값이 들어 있는 버퍼

b : blue 값이 들어 있는 버퍼

+ void SetPaletteColor(BYTE idx, COLORREF cr)

: 팔레트의 idx 번째 색상을 cr로 지정한다.

+ void SetPaletteColor(BYTE idx, RGBQUAD cr)

: 팔레트의 idx 번째 색상을 cr로 지정한다.

+ void SetPaletteColor(BYTE idx, BYTE r, BYTE g, BYTE b, BYTE alpha=0)

: 팔레트의 idx 번째 색상을 RGBQUAD(r, g, b, alpha)로 지정한다.

+ void SetPixelColor(IN long x, IN long y, IN RGBQUAD c, IN bool bSetAlpha = false)

: 색상 c를 픽셀 (x, y)의 색상으로 한다. bSetAlpha가 true라면 색상 c의 알파값을 24비트 픽셀 (x, y)의 알파값으로 한다.

+ void SetPixelColor(IN long x, IN long y, IN COLORREF cr)

: 색상 cr을 픽셀 (x, y)의 색상으로 한다.

+ void SetPixelIndex(IN long x, IN long y, IN BYTE i)

: i를 픽셀 (x, y)의 인덱스값으로 한다.

+ void SetProgress(long p)

: 프로그래스바의 상태를 강제로 변환시킨다.

+ void SetStdPalette()

: 팔레트를 표준 색상으로 채운다.

+ void SetTransColor(IN RGBQUAD rgb)

: 24비트 이미지에서 투명색을 지정한다. 투명효과를 사용하려면 반드시 SetTransIndex(0)를 먼저 호출하여야 한다. 투명효과를 없애려면 SetTransIndex(-1)을 호출하면 된다.

+ void SetTransIndex(IN long idx)

: 팔레트를 사용하는 BPP가 1, 4, 8인 이미지에서 투명색의 인덱스 번호를 지정한다. 투명효과를 없애려면 idx에 -1을 주면 된다.

+ void SetXDPI(IN long dpi)

: TIFF, JPEG, PNG, BMP 포맷을 위한 수평 해상도를 지정한다.

+ void SetYDPI(IN long dpi)

: TIFF, JPEG, PNG, BMP 포맷을 위한 수직 해상도를 지정한다.

+ bool ShiftRGB(IN long r, IN long g, IN long b)

: 이미지의 모든 픽셀에 지정한 픽셀값을 더한다. 값의 범위는 -255 ~ 255이다. 선택영역이 있으면 해당 영역에만 처리가 적용된다.

+ bool Skew(IN float xgain, IN float ygain, IN long xpivot=0, IN long ypivot=0, IN bool bEnableInterpolation = false)

: 이미지에 시어링을 적용한다. 선택영역이 있으면 해당 영역에만 처리가 적용된다.

xgain, ygain : 0 ~ 1. 왜곡 정도를 지정한다.

xpivot, ypivot : 왜곡의 중심을 지정한다.

bEnableInterpolation : bilinear 보간법의 적용 여부를 지정한다.

+ bool SplitCMYK(OUT CxImage *c, OUT CxImage *m, OUT CxImage *y, OUT CxImage *k)

: 이미지의 CMYK 채널을 8비트 그레이 스캐일 이미지로 내보낸다.

+ bool SplitHSL(OUT CxImage *h, OUT CxImage *s, OUT CxImage *l)

: 이미지의 HSL 채널을 8비트 그레이 스캐일 이미지로 내보낸다.

+ bool SplitRGB(OUT CxImage *r, OUT CxImage *g, OUT CxImage *b)

: 이미지의 RGB 채널을 8비트 그레이 스캐일 이미지로 내보낸다.

+ bool SplitXYZ(OUT CxImage *x, OUT CxImage *y, OUT CxImage *z)

: 이미지의 XYZ 채널을 8비트 그레이 스캐일 이미지로 내보낸다.

+ bool SplitYIQ(OUT CxImage *y, OUT CxImage *i, OUT CxImage *q)

: 이미지의 YIQ 채널을 8비트 그레이 스캐일 이미지로 내보낸다.

+ bool SplitYUV(OUT CxImage *y, OUT CxImage *u, OUT CxImage *v)

: 이미지의 YUV 채널을 8비트 그레이 스캐일 이미지로 내보낸다.

# void Startup(IN DWORD imagetype = 0)

: 멤버 변수를 초기화 한다.

+ long Stretch(IN HDC hdc, IN const RECT &rect, IN DWORD dwRop = SRCCOPY)

: 이미지를 화면에 출력한다.

+ long Stretch(HDC hdc, long xoffset, long yoffset, long xsize, long ysize, DWORD dwRop = SRCCOPY)

: 이미지를 화면에 출력한다.

+ void SwapIndex(IN BYTE idx1, IN BYTE idx2)

: 이미지의 팔레트에서 idx1과 idx2 인덱스의 색상을 서로 교환하고 이미지에서도 모든 idx1과 idx2값을 서로 교환한다.

+ bool Threshold(IN BYTE level)

: 이미지를 흑백으로 변환한다. level 은 기준이 되는 명도값이다.

+ bool Thumbnail(IN long newx, IN long newy, IN RGBQUAD canvascolor, OUT CxImage* iDst = 0)

: 지정한 크기의 썸네일 이미지를 생성한다. canvascolor로 테두리의 색을 지정한다.

+ long Tile(IN HDC hdc, IN RECT *rc)

: 이미지를 바둑판식으로 출력한다. rc는 이미지를 출력할 영역.

+ bool Transfer(OUT CxImage &from)

: from이미지로부터 이미지를 가져온다. from이미지는 내용은 모두 지워진다.

+ bool UnsharpMask(IN float radius = 5.0, IN float amount = 0.5, IN int threshold = 0)

: 이미지를 선명하게 한다.

radius : 효과의 적용 범위.

amount : 선명함의 적용 정도.

+ RGBQUAD XYZtoRGB(IN RGBQUAD lXYZColor)

: XYZ컬러공간에서 RGB컬러공간으로 변환한다.

+ RGBQUAD YIQtoRGB(IN RGBQUAD lYIQColor)

: YIQ컬러공간에서 RGB컬러공간으로 변환한다.

+ RGBQUAD YUVtoRGB(IN RGBQUAD lYUVColor)

: YUV컬러공간에서 RGB컬러공간으로 변환한다.

MFC 함수 정의

1. class CArchive


▷ CArchive::CArchive - CArchive 오브젝트를 생성(구성).
▷ CArchive::~CArchive - CArchive 오브젝트의 파괴(소멸).
▷ CArchive::Close - CFile로부터의 접속을 끊음.
▷ CArchive::Fiush - archive 버퍼로부터 쓰지 않은 데이터의 fiush.
▷ CArchive::GetFile - archive를 위해 CFile 오브젝트 포인터를 갖음.
▷ CArchive::IsLoading - archive가 로드되고 있는지를 결정.
▷ CArchive::IsStoring - archive가 저장되고 있는지를 결정.
▷ CArchive::Read - 원래 바이트를 읽음.
▷ CArchive::ReadObject - 로드하기 위해 오브젝트의 Serialize 기능을 부름.
▷ CArchive::Write - 원래 바이트를 씀.
▷ CArchive::WriteObject - 기억하기 위해 오브젝트의 Serialize 기능을 부름.


▷ CArchive::operator<< - 오브젝트들과 유형들을 archive로 기억.
▷ CArchive::operator>> - archive로부터 오브젝트들과 유형들을 로드.


2. class CArchiveException : public CException


▷ CArchiveException::CArchiveException - cause의 값을 오브젝트에 기억하면서 오브젝트를 구성.


▷ CArchiveException::m_cause - 예외 원인을 지정.


3. class CBEdit : public CHEdit


▷ CBEdit::CBEdit -CBEdit 오브젝트를 생성(구성).
▷ CBEdit::CharOffset - bedit 제어 안의 문자 포인터를 그 문자로 치환.
▷ CBEdit::CharPosition - bedit 제어안의 문자 위치로 전환.
▷ CBEdit::Cerat - CBEdit 제어를 생성(구성)하고 보여줌.
▷ CBEdit::DefaultFont - bedit 제어의 폰트를 디폴트 폰트로 바꿈.
▷ CBEdit::GetBoxLayout - 박스 배치를 얻음.
▷ CBEdit::SetBoxLayut - 박스 배치를 지정.

4. class CBitmap : public CGdiObject


▷ CBitmap::CBitmap - CBitmap 오브젝트를 생성(구성).
▷ CBitmap::CreatBitmap - 메모리 비트맵으로 오브젝트를 초기화.
▷ CBitmap::CreatBitmapIndirect - 비트맵 패턴으로 오브젝트를 초기화함.
▷ CBitmap::CreatCompatibleBitmap - 지정된 장치와 호환성 있게 초기화함.
▷ CBitmap::CreatDiscardableBitmap - 처분할 수 있는 비트맴으로 초기화함.
▷ CBitmap::FontHandle - CBitmap 오브젝트로 포인터를 반환.
▷ CBitmap::GetBitmapBits - 비트를 버퍼로 복사.
▷ CBitmap::GetBitmapDimension - 비트맵의 폭과 높이를 반환.
▷ CBitmap::LoadBitmap - 비트맵 자원을 로드.
▷ CBitmap::LoadOEMBitmap - 윈도우 비트맵을 로드.
▷ CBitmap::SetBitmapBits - 비트를 지정된 비트값으로 지정.
▷ CBitmap::SetBitmapDimension - 비트맵의 폭과 높이를 0.1mm 단위로 할당.


5. class CBitmapButton : public CButton


▷ CBitmapButton::AutoLoad - 다이얼로그에 버튼을 연관, 로드.
▷ CBitmapButton::CBitmapButton - CBitmapButton 오브젝트를 생성(구성).
▷ CBitmapButton::LoadBitmaps - 하나나 그 이상의 비트맵 자원을 로드.
▷ CBitmapButton::SizeToContent - 버튼의 크기를 잼.


6. class CBrush : public CGdiObject


▷ CBrush::CBrush - CBrush 오브젝트를 생성(구성).
▷ CBrush::CreatBrushIndirect - 브러쉬를 초기화함.
▷ CBrush::CreateDIBPatternBrush - DIB에 의해 지정된 패턴으로 초기화함.
▷ CBrush::CreateHatchBrush - hatched 패턴과 색을 갖고 초기화함.
▷ CBrush::CreatePatternBeush - 지정된 패턴을 갖는 브러쉬를 초기화함.
▷ CBrush::CreateSolidBrush - solid 색을 갖고 초기화함.
▷ CBrush::FromHandle - 포인터를 반환.


7. class CButton : public CWnd


▷ CButton::CButton - CButton 오브젝트를 생성(구성).
▷ CButton::Create - Windows button 제어를 생성(구성).
▷ CButton::DrawItem - CButton 오브젝트를 그리기 위해 override함.
▷ CButton::GetButtonStyle - 버튼 제어 스타일에 대한 정보를 획득.
▷ CButton::GetCheck - 버튼 제어의 체크 상태를 회복.
▷ CButton::GetState - 체크, 하이라이트, 초점 상태를 회복.
▷ CButton::SetButtonStyle - 버튼 스타일을 바꿈.
▷ CButton::SetCheck - 버튼 제어의 체크 상태를 지정.
▷ CButton::SetState - 하이라이트된 상태를 지정.


8. class CbyteArray : public CObject


9. class CClientDC : public CDC


▷ CClientDC::CClientDC - CClientDC 오브젝트를 생성(구성).


▷ CClientDC::m_hWnd - CClientDC의 타당한 것을 위한 윈도우 HWND.


10. class CCmdTargt : public CObject


▷ CCmdTargt::BeginWaitCursor - 커서를 보여줌.
▷ CCmdTargt::EndWaitCursor - 이전의 커서로 반환.
▷ CCmdTargt::OnCmdMsg - 명령 메시지를 Route.
▷ CCmdTargt::RestoreWaitCursor - 커서를 회복.


11. class CCmdUI


▷ CCmdUI::ContinueRouting - 현재 메시지를 Route 하는 것을 계속함.
▷ CCmdUI::Enable - 사용자 인터페이스 항목을 가능/ 불가능.
▷ CCmdUI::Setcheck - 사용자 인터페이스 항목의 체크 상태를 지정.
▷ CCmdUI::SetRadio - Setcheck와 같으나 라디오 그룹에서 조작.
▷ CCmdUI::SetText - 사용자 인터페이스 항목을 위한 텍스트를 지정.


12. class CColorDialog : public CDialog


▷ CColorDialog::CColorDialog - CColorDialog 오브젝트 생성(구성).
▷ CColorDialog::DoModal - 사용자가 선택.
▷ CColorDialog::GetColor - COLORREF 구조를 반환.
▷ CColorDialog::OnColorOK - 입력된 색의 타당을 위해 overrid.
▷ CColorDialog::SetCurrentColor - 현재 색 선택을 맞춤.


▷ CColorDialog::clrSavedCustom - RGB 값의 배열.
▷ CColorDialog::m_cc - 커스터마이즈하기 위해 사용된 구조.


13. class CComboBox : public CWnd


▷ CComboBox::AddString - 스트링을 더함.
▷ CComboBox::CComboBox - ComboBox 오브젝트를 생성(구성).
▷ CComboBox::Clear -현재 선택을 지움.
▷ CComboBox::CompareItem - 새로운 리스트 항목의 상태적 위치를 결정.
▷ CComboBox::Copy - 현재 선택을 Copy.
▷ CComboBox::Create - CComboBox를 생성.
▷ CComboBox::Cut - 제거된 텍스트를 복사.
▷ CComboBox::DeleteItem - 항목이 Combo 박스에서 제거.
▷ CComboBox::DeleteString - 스트링을 제거.
▷ CComboBox::Dir - 리스트를 더함.
▷ CComboBox::DrawItem - 양상이 변할 때 불려짐.
▷ CComboBox::FindString - 첫 번째 스트링을 찾음.
▷ CComboBox::FindStringExact - 첫 번째 리스트 박스 스트링을 찾음.
▷ CComboBox::GetCount - 항목의 수를 회복.
▷ CComboBox::GetCurSel - 현재 선택된 항목의 색인을 찾음
▷ CComboBox::GetDroppedControlRect - 스크린 좌표를 되찾음.
▷ CComboBox::GetDroppedState - 리스트 박스가 보일지를 결정.
▷ CComboBox::GetEditSel - 시작과 끝나는 문자의 위치를 얻음.
▷ CComboBox::GetExtendedUI - 디폴트, 확장 사용자 인터페이스의 결정.
▷ CComboBox::GetItemData - 항목과 관련된 비트값을 회복.
▷ CComboBox::GetItemDataPtr - 포인터로서 관련된 비트 값을 회복.
▷ CComboBox::GetItemHeight - 리스트 항목의 높이를 회복.
▷ CComboBox::GetLBText - 리스트 박스로부터 스트링을 얻음.
▷ CComboBox::GetLBTextLen - 스트링의 길이를 지정.
▷ CComboBox::InsertString - 스트링의 삽입.
▷ CComboBox::LimitText - 텍스트의 길이를 제한.
▷ CComboBox::MeasureItem - Combo 박스 치수를 결정하기 위해 불려짐.
▷ CComboBox::Paste - 현재 커서 위치에서 편집 제어로 삽입.
▷ CComboBox::ResetContent - 모든 항목의 제거.
▷ CComboBox::SelectString - 스트링을 선택, 복사.
▷ CComboBox::SetCurSel - 스트링을 선택.
▷ CComboBox::SetEditSel - 편집 제어에서 문자들을 선택.
▷ CComboBox::SetExtendedUI - 디폴트, 확장 사용자 인터페이스의 선택.
▷ CComboBox::SetItemData - 항목과 관련된 값을 정함.
▷ CComboBox::SetItemDataPtr - 포인터에 대한 관련된 값을 정함.
▷ CComboBox::SetItemHeight - 높이를 지정.
▷ CComboBox::ShowDropDown - 리스트 박스를 보여주거나 숨김.


14. class CControlBar : public CWnd


▷ CControlBar::GetCount - 제어 바의 HWND가 아닌 숫자를 복귀.


▷ CControlBar::m_bAutoDelete - 제어바가 파괴될 때 지워짐.




15. class CDataExchange


16. class CDC : public Cobject



▷ CDC::AbortDoc - 모든 것을 지우면서 현재 인쇄 작업을 종결.
▷ CDC::Arc - 생략의 arc를 그림.
▷ CDC::Attatch - 윈도우 장치 문맥을 CDC 오브젝트에 붙임.
▷ CDC::BitBit - 비트맵을 복사.
▷ CDC::CDC - CDC 오브젝트를 건설.
▷ CDC::Chord - chord를 그림.
▷ CDC::CreateCompatibleDC - 호환 가능한 기억 장치 문맥을 생성.
▷ CDC::CreateDC - 특정 장치를 위한 장치 문맥을 생성.
▷ CDC::CreateIC - 특정 장치를 위한 정보 문맥을 생성.
▷ CDC::DeleteDC - 윈도우 장치 문맥을 삭제.
▷ CDC::DeleteTempMap - 일시적 CDC 오브젝트를 지움.
▷ CDC::Detach - 윈도우 장치 문맥을 detach함.
▷ CDC::DPtoLP - 논리적 포인터나 네모로 변환.
▷ CDC::DrawFocusRect - 초점을 가리키기 위해 사용된 유형에 네모를 그림.
▷ CDC::DrawIcon - 아이콘을 그림.
▷ CDC::DrawText - 특정한 네모의 형식화된 텍스트를 그림.
▷ CDC::Ellipse - ellipse를 그림.
▷ CDC::EndDoc - 인쇄 작업을 끝냄.
▷ CDC::EndPage - 페이지가 끝남을 알림.
▷ CDC::Escape - 직접 사용 불가능한 기능에 접근하도록 허락.
▷ CDC::ExcludeClipRect - 새로운 clipping 영역을 생성.
▷ CDC::ExcludeUpdateRgn - 타당치 않은 영역에의 드로잉을 막음.
▷ CDC::ExtFloodFill - 기능보다 더 많은 융통성을 제공.
▷ CDC::ExtTextOut - 문자 스트링을 씀.
▷ CDC::FillRect - 특정 브러쉬를 사용함으로 주어진 네모를 채움.
▷ CDC::FillRgn - 특정 브러쉬로 특정 영역을 채움.
▷ CDC::FloodFill - 현재 브러쉬로 영역을 채움.
▷ CDC::FrameRect - 네모 주위의 경계를 그림.
▷ CDC::FrameRgn - 특정 영역을 따르는 경계를 그림.
▷ CDC::FromHandle - Handle이 주어질 때 CDC 오브젝트에 대한 포인터를 복귀.
▷ CDC::GetAspectRatioFilter - 현재 aspect-ratio filter의 세팅을 검색.
▷ CDC::GetBkColor - 현재 배경색을 검색.
▷ CDC::GetBkMode - 배경 모드를 검색.
▷ CDC::GetBoundsRect - 현재 축적된 bounding 네모를 복귀.
▷ CDC::GetBrushOrg - 현재 브러쉬의 근원을 검색.
▷ CDC::GetCharABCWidths - 현재 실행의 문자 넓이를 검색.
▷ CDC::GetCharWidth - 현재 실행 문자 중 개별의 문자 넓이를 검색.
▷ CDC::GetClipBox - bounding 네모의 규모를 검색.
▷ CDC::GetCurrentPosition - Pen의 현재 위치를 검색.
▷ CDC::GetDeviceCaps - 특정 장치 정보의 검색.
▷ CDC::GetFontData - font-metric 정보를 검색.
▷ CDC::GetGlyphOutline - outline 비트맵을 검색.
▷ CDC::GetKerningPairs - 문자 kerning짝을 검색.
▷ CDC::GetMapMode - 현재의 mappimg 모드를 검색.
▷ CDC::GetNearestColor - 지정된 색에 가장 가까운 색을 검색.
▷ CDC::GetOutlineTextMetrics - font Metric 정보를 검색.
▷ CDC::GetOutputCharWidth - 출력 장치 문맥에서 개별 문자의 넓이를 검색.
▷ CDC::GetOutputTabbedTextExtent - 출력 장치 문맥의 스트링의 넓이와 높이를 계산.
▷ CDC::GetOutputTextExtent - 출력 장치로부터 현재 폰트를 사용하는 텍스트의 넓이와 높이를 검색.
▷ CDC::GetOutputTextMetrics - 출력 장치로부터 현재 폰트를 위한 metric을 검색.
▷ CDC::GetPixel - 특정한 점의 pixel의 RGB색 가치를 검색.
▷ CDC::GetPolyFillMode - 현재 polygon 모드를 검색.
▷ CDC::GetROP2 - 현재 그리기 모드를 검색.
▷ CDC::GetStretchBltMode - 현재 비트맵 스트레칭 모드를 검색.
▷ CDC::GetTabbedTextExtent - 속성 장치 문맥의 스트링의 넓이와 높이를 지정.
▷ CDC::GetTextAlign - 텍스트 배열 표시를 검색.
▷ CDC::GetTextCharacterExtra - 문자의 공간을 위한 현재 세팅을 검색.
▷ CDC::GetTextColor - 현재 텍스트 색을 검색.
▷ CDC::GetTextExtent - 출력 장치 문맥에 텍스트의 넓이와 높이를 계산.
▷ CDC::GetTextFace - 현재 폰트의 typeface명을 버퍼로 복사.
▷ CDC::GetTextMetrics - 속성 장치 문맥으로부터 현재 폰트를 위한 metric을 검색.
▷ CDC::GetViewportExt - x와 y 좌표를 검색.
▷ CDC::GetViewportOrg - 원점을 수정.
▷ CDC::GetWindowExt - x,y 확장을 검색.
▷ CDC::GetWindowOrg - 윈도우 원점의 x, y 좌표를 검색.
▷ CDC::GrayString - 비트멥을 회색(흐림)으로 함.
▷ CDC::IntersectClipRect - 새로운 clipping 영역을 생성.
▷ CDC::InvertRect - 네모의 내용을 변환.
▷ CDC::InvertRgn - 색을 영역으로 변환.
▷ CDC::LineTo - 라인을 그리지만 점을 포함하지 않음.
▷ CDC::LPtoDP - 논리적 포인터나 네모를 장치 포인터나 네모로 변환.
▷ CDC::MoveTo - 현재 위치를 이동.
▷ CDC::OffsetClipRgn - clipping 영역을 이동.
▷ CDC::OffsetViewportOrg - viewport 원점을 수정.
▷ CDC::OffsetWindowOrg - 윈도우 원점을 수정.
▷ CDC::PaintRgn - 선택된 브러쉬로 영역을 채움.
▷ CDC::PatBlt - 비트 패턴을 생성.
▷ CDC::Pie - pie 모양을 그림.
▷ CDC::PlayMetaFile - 특정한 metafile의 내용을 작동.
▷ CDC::Polygon - polygon을 그림.
▷ CDC::Polyline - 라인 세그먼트의 세트를 그림.
▷ CDC::PtVisible - 주어진 점이 clipping 영역 내에 있는지를 지정.
▷ CDC::QueryAbort - abort 기능을 부르고 인쇄가 종결될지를 조사.
▷ CDC::RealizePalette - 시스템 팔레트에 요소를 맵함.
▷ CDC::Rectangle - 현재 펜을 사용해 네모를 그림.
▷ CDC::RectVisible - 주어진 네모의 어떤 부분이 clipping 영역 내에 있는지를 결정.
▷ CDC::ReleaseAttribDC - m_hAttribDC를 해제.
▷ CDC::ResetDC - m_hAttribDC 장치 문맥을 갱신.
▷ CDC::RestoreDC - 장치 문맥을 재저장.
▷ CDC::RoundRect - 현재 둥근 코너의 네모를 그림.
▷ CDC::SaveDC - 현재 상태를 저장.
▷ CDC::ScaleViewportExt - viewport 확장을 수정.
▷ CDC::ScaleWindowExt - 현재 가치에 관련된 윈도우 확장을 수정.
▷ CDC::ScrollDC - 수직, 수평으로 비트맵의 네모를 스크롤.
▷ CDC::SelectClipRgn - 현재 clipping 영역과 같은 영역을 선택.
▷ CDC::SelectObject - 펜과 같은 GDI 드로잉 오브젝트를 선택.
▷ CDC::SelectPalette - 논리적 팔레트를 선택.
▷ CDC::SelectStockObject - 미리 정의된 펜, 브러쉬, 폰트의 하나를 선택.
▷ CDC::SetAbortProc - 프로그래머 제공의 callback 기능을 정함.
▷ CDC::SetAttribDC - m_hAttribDC를 지정.
▷ CDC::SetBkColor - 현재 배경색을 지정.
▷ CDC::SetBkMode - 배경 모드를 지정.
▷ CDC::SetBoundRect - bounding 네모의 정보의 축적을 제어.
▷ CDC::SetBrushOrg - 브러쉬를 위한 근원을 지정.
▷ CDC::SetMapMode - 현재의 mapping 모드를 지정.
▷ CDC::SetMapperFlags - 물리적 폰트에 논리적 폰트를 맵할 때 알고리즘을 바꿈.
▷ CDC::SetOutputDC - 출력 장치 문맥 m_hDC를 지정.
▷ CDC::SetPixel - 특정 점의 pixel을 특정한 색의 가장 근접한 것으로 지정.
▷ CDC::SetPolyFillMode - 현재 polygon 모드를 지정.
▷ CDC::SetROP2 - 현재 그리기 모드를 지정.
▷ CDC::SetStrectchBltMode - 현재 비트맵 스트레칭 모드를 지정.
▷ CDC::SetTextAlign - 텍스 배열 표시를 지정.
▷ CDC::SetTextColor - 현재 배경색을 지정.
▷ CDC::SetTextJustification - 스트링의 잘린 문자에 공간을 첨가.
▷ CDC::SetViewportExt - viewport의 x, y 확장을 지정.
▷ CDC::SetViewportOrg - 원점을 지정.
▷ CDC::SetWindowExt - 관련된 윈도우의 x, y 확장을 지정.
▷ CDC::SetWindowOrg - 장치 문맥의 윈도우의 원점을 지정.
▷ CDC::StartDoc - 새로운 인쇄 작업시 시작.
▷ CDC::StartPage - 시작 페이지.
▷ CDC::StretchBlt - 비트맵을 늘이거나 줄이는 이동.
▷ CDC::TabbedTextOut - tab을 확장하는 특정한 위치에 문자 스트링을 씀.
▷ CDC::TextOut - 특정 위치에 문자 스트링을 씀.
▷ CDC::UpdateColors - 현재 색을 시스템 팔레트에 매치시켜 갱신.


▷ CDC::m_hAttribDC - CDC 오브젝트에 의해 사용된 특정 장치 문맥.
▷ CDC::m_hDC - CDC 오브젝트에 의해 사용된 출력 장치 문맥


17. class CDialog : public CWnd


▷ CDialog::CDialog - CDialog 오브젝트를 건설.
▷ CDialog::Create - CDialog 오브젝트를 초기화.
▷ CDialog::CreateIndirect - 모드 없는 다이얼로그 박스를 생성.
▷ CDialog::DoModal - modal dialog box를 부름.
▷ CDialog::EndDialog - modal dialog box를 닫음.
▷ CDialog::InitModalIndirect - 다이얼로그 박스 템플릿으로부터 modal dialog box를 생성.
▷ CDialog::IsDialogMessage - 주어진 메시지의 모드 유무 결정.
▷ CDialog::MapDialogRect - 스크린 단위로 바꿈.
▷ CDialog::OnCancel - Cancel 버튼이나 ESC키 행위를 수행함.
▷ CDialog::OnInitDialog - 다이얼로그 박스 초기화를 증가시키기 위한 오버라이드.
▷ CDialog::OnOk - OK 버튼을 수행하기 위한 오버라이드.
▷ CDialog::OnSetFont - 사용할 폰트를 지정하기 위한 오버라이드.
▷ CDialog::SetDefID - 디폴트 푸시버튼 제어의 ID


18. class CDialogBar : public CControlBar


▷ CDialogBar::CDialogBar - CDialogBar 오브젝트를 생성.
▷ CDialogBar::Create - CDialogBar 오브젝트에 붙일 윈도우 다이얼로그 바를 생성.


19. class CDocItem : public CObject


▷ CDocItem::GetDocument - 항목을 포함하는 문서를 복귀.


20. class CDocTemplate : public CCmdTarget


▷ CDocTemplate::GetDocString - 문서 유형을 설명하는 스트링을 철회.


21. class CDocument : public CCmdTarget


▷ CDocument::AddView - View를 문서에 붙임.
▷ CDocument::CanCloseFrame - 프레임 윈도우를 닫기 전에 불려짐.
▷ CDocument::CDocument - CDocument 오브젝트를 생성.
▷ CDocument::DeleteContents - 문서의 cleanup을 수행하기 위함.
▷ CDocument::GetDocTemplate - 문서 템플릿의 포인터를 복귀.
▷ CDocument::GetFirstViewPosition - View 목록의 첫 번째 위치를 복귀.
▷ CDocument::GetNextView - 문서와 관련된 View 목록을 통해 반복.
▷ CDocument::OnChangedViewList - View가 첨가되거나 문서로부터 제거된 후 불려짐.
▷ CDocument::OnCloseDocument - 문서의 닫음.
▷ CDocument::OnNewDocument - 새로운 문서의 생성.
▷ CDocument::OnOpenDocument - 기존 문서의 열음.
▷ CDocument::OnSaveDocument - 문서의 저장.
▷ CDocument::RemoveView - 문서로부터 View를 분리.
▷ CDocument::SetPathName - 문서의 데이터 파일의 경로를 정함.
▷ CDocument::UpdateAllViews - 문서가 수정된 모든 View를 공시함.


22. class CDumpContext


▷ CDumpContext::CDumpContext - CDumpContext 오브젝트를 생성.
▷ CDumpContext::Flush - Dump 문맥 버퍼에 데이터를 Flush.
▷ CDumpContext::HexDump - 16진법 형식에 바이트를 Dump함.
▷ CDumpContext::SetDepth - Dump의 깊이를 지정.


23. class CDWordArray : public CObject


24. class CEdit : public CWnd


▷ CEdit::CanUndo - 편집 제어 조작의 Undo 결정.
▷ CEdit::CEdit - CEdit 제어 오브젝트를 생성.
▷ CEdit::Clear - 현재 선택을 지움.
▷ CEdit::Copy - 현재 선택을 복사.
▷ CEdit::Create - 윈도우 편집 제어를 생성하고 CEdit 오브젝트에 붙임.
▷ CEdit::Cut - 현제 선택을 자름.
▷ CEdit::EmptyUndoBuffer - Undo 표시를 제거함.
▷ CEdit::FmtLines - Linebreat 문자의 on/off를 지정.
▷ CEdit::GetHandle - 현재 할당된 메모리의 핸들을 검색.
▷ CEdit::GetLine - 라인의 숫자를 검색.
▷ CEdit::GetModify - 편집 제어의 내용이 수정되었는지를 결정.
▷ CEdit::GetSel - 시작과 끝 문자의 위치를 얻음.
▷ CEdit::LineFromChar - 라인 넘버를 검색.
▷ CEdit::LineIndex - 문자 색인을 검색.
▷ CEdit::LineLength - 라인의 길이를 검색.
▷ CEdit::LineScroll - 텍스트를 스크롤.
▷ CEdit::SetHandle - 메모리의 핸들을 지정.
▷ CEdit::SetPasswordChar - 암호 문자를 지정.
▷ CEdit::SetRect - 포맷 사각형의 지정과 제어의 갱신.
▷ CEdit::SetSel - 문자 범위를 선택.
▷ CEdit::SetTabStops - Tab-stop을 지정.
▷ CEdit::Undo - 마지막 편집 제어 조작으로 돌아감.


25. class CEditView : public CView


▷ CEditView::CEditView - CEditView 오브젝트를 생성.
▷ CEditView::FindText - 스트링을 찾음.
▷ CEditView::GetPrinterFont - 현재 프린터 폰트를 검색.
▷ CEditView::OnFindNext - 스트링의 다음을 찾음.
▷ CEditView::OnReplaceAll - 스트링의 모든 출현을 대신함.
▷ CEditView::OnTextNotFound - 찾기 조작의 실패.
▷ CEditView::PrintInsideRect - 사각형 내부에 구문을 놓음.
▷ CEditView::SetPrinterFont - 새로운 프린터 폰트를 정함.
▷ CEditView::SetTabStops - 인쇄를 위한 Tab-stop를 지정.


26. class CException : public CObject


27. class CFile : public CObject


▷CFile::CFile - CFile 오브젝트를 생성.
▷CFile::Close -파일을 닫음.
▷CFile::Duplicate - 중복 오브젝트를 생성.
▷CFile::Flush - 이미 쓰여진 데이터를 Flush.
▷CFile::GetStatus - 지정된 파일의 상태를 얻음.
▷CFile::Open - 파일을 연다.
▷CFile::Read - 데이터를 읽음.
▷CFile::Remove - 지정된 파일을 지움.
▷CFile::Rename - 지정된 파일을 재명명.
▷CFile::Seek - 현재 파일 포인터를 위치시킴.
▷CFile::SetStatus - 파일의 처음에 포인터를 위치시킴.
▷CFile::Write - 데이터를 씀.


▷CFile::m_hFile - 작동 시스템 파일 핸들을 포함.


28. class CFileDialog : public CDialog


▷ CFileDialog::CFileDialog - CFileDialog 오브젝트를 만듬.
▷ CFileDialog::DoModal - 다이얼로그 박스를 보이고 선택.
▷ CFileDialog::GetFileExt - 파일 확장자를 복귀.
▷ CFileDialog::GetFileName - 파일명을 복귀.
▷ CFileDialog::GetPathName - 완전한 경로를 복귀.
▷ CFileDialog::OnFileNameOK - 파일명을 타당화하기 위함.
▷ CFileDialog::OnLBSelChangedNotify - 목록 박스 선택이 바뀜.
▷ CFileDialog::OnShareViolation - 공유 위반이 생김.


▷ CFileDialog::m_ofn - 윈도우 OPENFILENAME 구조


29. class CFileException : public CException


▷ CFileException::CFileException - CFileException 오브젝트를 생성.
▷ CFileException::ErrnoToException - 실행 시간 에러 수에 상응하는 원인 코드를 반환.
▷ CFileException::OsErrorToException - MS-DOS 에러 수에 상응하는 원인 코드를 반환.
▷ CFileException::ThrowOsError - 파일 예외.


▷ CFileException::m_cause - 예외 원인.
▷ CFileException::m_IOsError - 운영 시스템 에러 수의 포함.


30. class CFindReplaceDialog : public CDialog


▷ CFindReplaceDialog::CFindReplaceDialog - 오브젝트의 구성.
▷ CFindReplaceDialog::Create - 오브젝트의 생성.
▷ CFindReplaceDialog::FindNext - 다음 스트링의 찾기.
▷ CFindReplaceDialog::GetFindString - 찾기 스트링을 되찾기 위함.
▷ CFindReplaceDialog::IsTerminating - 다이얼로그 박스의 끝남을 확인.
▷ CFindReplaceDialog::ReplaceAll - 스트링의 모드 발생의 치환.
▷ CFindReplaceDialog::SearchDown - 찾기가 아래 방향으로 진행되기를 원하는지의 결정.


▷ CFindReplaceDialog::m_fr - 오브젝트를 커스터마이즈하기 위함.


31. class CFont : public CGdiObject


▷ CFont::CFont - CFont 오브젝트를 생성.
▷ CFont::CreateCFont - CFont를 초기화.
▷ CFont::CreateFontIndirect - LOGFONT에서 주어진 특성으로 초기화.
▷ CFont::FromHandle - 포인터를 반환.


32. class CFontDialog : public CDialog


▷ CFontDialog::CFontDialog -CFontDialog 오브젝트를 생성.
▷ CFontDialog::DoModal - 다이얼로그 박스를 보여줌.
▷ CFontDialog::GetFaceName - Face 이름을 반환.
▷ CFontDialog::InUnderline - 밑줄의 유무.


▷ CFontDialog::m_cf - 커스터마이즈하기 위함.


33. class CFormView : public CScrollView


▷ CFormView::CFormView - CFormView의 구성.


34. class CFrameWnd : public CWnd


▷ CFrameWnd::ActivateFrame - 프레임의 이용 가능.
▷ CFrameWnd::CFrameWnd - CFrameWnd 오브젝트의 생성.
▷ CFrameWnd::Create - CFrameWnd 오브젝트를 초기화.
▷ CFrameWnd::GetActiveDocument - CDocument 오브젝트를 반환.
▷ CFrameWnd::GetaActiveView - CView 오브젝트를 반환.
▷ CFrameWnd::LoadAccelTable - 가속기표를 로드.
▷ CFrameWnd::LoadFrame - 프레임 윈도우의 로드.
▷ CFrameWnd::SetActiveView - CView 오브젝트를 지정.


▷ CFrameWnd::m_bAutoMenuEnable - 항목을 위한 가능/불가능한 기능화를 제어.
▷ CFrameWnd::rectDefault - 윈도우의 이니셜 크기와 위치를 선택.


35. class CGdiObject : public CObject


▷ CGdiObject::Attach - 오브젝트의 부착.
▷ CGdiObject::CGdiObject - CGdiObject 오브젝트를 생성.
▷ CGdiObject::CreateStockObject - 미리 정의한 핸들을 회복.
▷ CGdiObject:DeleteObject - 오브젝트의 제거.
▷ CGdiObject::Detach - 오브젝트의 분리.
▷ CGdiObject::GetObject - 버퍼의 채움.


▷ CGdiObject::m_hObject - 오브젝트에 부착된 핸들.


36. class CHEdit : public CEdit


▷ CHEdit::CHEdit - CHEdit 오브젝트를 생성.
▷ CHEdit::Create - CHEdit 제어를 만듦.
▷ CHEdit::StopInkMode - 잉크의 모음을 멈춤.

37. class CListBox : public CWnd


▷ CListBox::AddString -스트링을 리스트 박스에 더함.
▷ CListBox::CListBox - CListBox 오브젝트를 생성.
▷ CListBox::CompareItem - 새로운 항목의 위치를 결정.
▷ CListBox::Create - 리스트 박스를 생성.
▷ CListBox:: DeleteItem - 항목을 제거.
▷ CListBox::Dir - 파일명을 리스트에 더함.
▷ CListBox::FindString - 스트링을 찾음.
▷ CListBox::GetCaretIndex - 항목의 색인을 결정.
▷ CListBox::GetItemData - 32비트 값을 반환.
▷ CListBox::GetText - 항목을 버퍼로 복사.
▷ CListBox::GetTextLen - 항목의 길이를 반환.
▷ CListBox::SelectString - 스트링을 선택.
▷ CListBox::SetColumnWidth - 리스트 박스의 열폭을 지정.
▷ CListBox::SetTabStops - Tab-stop 위치를 지정.


38. class CMapPtrToPtr : public Cobject


39. class CMapPtrtoWord : public CObject


40. class CMapStringToOb : public CObject


▷ CMapStringToOb::CMapStringToOb - CString 가치를 CObject 포인터에 맵함.
▷ CMapStringToOb::GetNextAssoc - 반복을 위해 다음 내용을 얻음.
▷ CMapStringToOb::RemoveAll - 맵으로부터 모든 내용을 지움.
▷ CMapStringToOb::RemoveKey - 키에 의해 지정된 내용을 지움.
▷ CMapStringToOb::SetAt - Map에 내용을 삽입.


▷ CMapStringToOb::operator[] - Map에 내용을 삽입 - SetAt을 위한 Operator


41. class CMapStringToPtr : public CObject


42. class CMapStringToString : public CObject


43. class CMapWordToOb : public CObject


44. class CMapWordToPtr : public CObject


45. class CMDIChildWnd : public CFrameWnd


▷ CMDIChildWnd::CMDIChildWnd - CMDICChildWnd 오브젝트를 생성.
▷ CMDIChildWnd::Create - MDI Child 윈도우를 생성.
▷ CMDIChildWnd::GetMDIFrame - Parent MDI 프레임을 복귀.
▷ CMDIChildWnd::MDIActivate - MDI Child 윈도우를 활성화.
▷ CMDIChildWnd::MDIRestore - MDI Child 윈도우를 회복.


46. class CMDIFrameWnd : public CFrameWnd


▷ CMDIFrameWnd::CMDIFrameWnd - CMDIFrameWnd 오브젝트를 생성.
▷ CMDIFrameWnd::CreateClient - MDICLIENT 윈도우를 생성.
▷ CMDIFrameWnd::MDICascade - Cascade된 형식에 모든 윈도우를 배열.
▷ CMDIFrameWnd::MDIMaximize - MDI Child 윈도우를 최대화함.
▷ CMDIFrameWnd::MDISetMenu - MDI 프레임 윈도우의 메뉴.
▷ CMDIFrameWnd::MDITile - Tile된 형식에 모든 Child 윈도우를 배열.


47. class CMemFile : public CFile


▷ CMemFile::CMemFile - 메모리 파일을 생성.
▷ CMemFile::~CMemFile - 메모리 파일을 닫음.


48. class CMemoryException : public CException


▷ CMemoryException::CMemoryException - CMemoryException 오브젝트를 생성.


49. struct CMemoryState


▷ CMemoryState::Checkpoint - 현재 메모리 상태의 체크 포인터를 얻음.
▷ CMemoryState::Difference - CMemoryState 유형의 차이를 계산.
▷ CMemoryState::DumpStatistics - 메모리 할당 통계를 인쇄.


50. class CMenu : public CObject


▷ CMenu::AppendMenu - 새로운 항목을 메뉴 끝에 붙임.
▷ CMenu::Attach - 윈도우 메뉴 핸들을 CMenu 오브젝트에 붙임.
▷ CMenu::CheckMenuItem - 체크 마크를 놓거나 지움.
▷ CMenu::CMenu - CMenu 오브젝트를 생성.
▷ CMenu::CreateMenu - 메뉴를 생성하고 CMenu에 붙임.
▷ CMenu::CreatePopupMenu - Pop-up 메뉴를 생성.
▷ CMenu::DeleteMenu - 특정 항목을 지움.
▷ CMenu::DestoryMenu -메뉴를 파괴, 메모리를 해제.
▷ CMenu::Detach - 메뉴 핸들을 분리하고 핸들을 복귀.
▷ CMenu::EnableMenuItem - 메뉴 항목을 가능, 불가능하게 함.
▷ CMenu::GetMenuItemID - 특정 위치에 있는 메뉴 항목의 식별자를 얻음.
▷ CMenu::GetMenuState - 특정 메뉴 항목의 상태나 항목 수를 복귀.
▷ CMenu::GetMenuString - 지정된 메뉴 항목의 라벨을 검색.
▷ CMenu::InsertMenu - 새로운 메뉴 항목을 삽입.
▷ CMenu::LoadMenu - 메뉴 자원을 로드.
▷ CMenu::LoadMenuIndirect - 메뉴를 로드하고 CMenu에 붙임.
▷ CMenu::ModifyMenu - 기존 메뉴 항목을 바꿈.
▷ CMenu::RemoveMenu - 메뉴 항목을 제거.
▷ CMenu::SetMenuItemBitmaps - 비트맵을 메뉴 항목과 관련시킴.
▷ CMenu::TrackPopupMenu - 항목 선택을 트랙함.


▷ CMenu::m_hMenu - 메뉴의 핸들을 지정.


51. class CMetaFileDC : public CDC


▷ CMetaFileDC::Close - 장치 문맥을 닫고 메타 파일 핸들을 생성.
▷ CMetaFileDC::CMetaFileDC - CMetaFileDC 오브젝트를 생성.
▷ CMetaFileDC::Create - CMetaFile 장치 문맥을 생성.


52. class CMultiDocTemplate : public CDocTemplate


▷ CMultiDocTemplate::CMultiDocTemplate - CMultiDocTemplate 오브젝트를 생성.


53. class CNotSupportedException : public CException


▷ CNotSupportedException::CNotSupportedException - 지원되지 않은 특성을 위한 요구의 결과인 예외를 나타냄.


54. class CObArray : public CObject


▷ CobArray::Add - 배열 끝에 요소를 더함.
▷ CobArray::CObArray - 비어 있는 배열을 구성.
▷ CobArray::ElementAt - 배열내의 포인터로 참조를 반환.
▷ CobArray::GetAt - 색인에서 값들을 반환.
▷ CobArray::GetUpperBound - 타당한 색인을 반환.
▷ CobArray::InsertAt - 요소를 삽입.
▷ CobArray::RemoveAll - 모든 요소를 제거.
▷ CobArray::SetAt - 색인에 대한 값을 정함.
▷ CobArray::SetAtGrow - 색인에 대한 값을 정하고 배열을 키움.


▷ CobArray::operator[] - 색인에서 요소를 지정하거나 얻음.


55. class CObject


▷ CObject::AssertValid - 원래 모습을 타당하게 함.
▷ CObject::CObject - 디폴트 구성자.
▷ CObject::Dump - Dump을 생산.
▷ CObject::GetRuntimeClass - CRuntimeClass 구조를 반환.
▷ CObject::IsKindOf - 오브젝트의 관계를 테스트.
▷ CObject::Serialize - Archive에서 오브젝트를 로드하거나 기억.


▷ CObject::operator = - 할당 조작자.
▷ CObject::operator delete - 특별한 delete 조작자.
▷ CObject::opoerator new - 특별한 new 조작자.


56. class CObList : public CObject


▷ CObList::AddHead - 헤드로 요소를 더함.
▷ CObList::CObList - 비어 있는 리스트를 구성.
▷ CObList::GetAt - 주어진 위치에서 요소를 얻음.
▷ CObList::GetHead - 헤드 요소를 반환.
▷ CObList::GetNext - 반복을 위한 요소를 얻음.
▷ CObList::GetPrev - 이전의 요소를 얻음.
▷ CObList::IsEmpty - 빈 리스트 상태를 테스트함.
▷ CObList::RemoveAll - 모든 요소를 제거.
▷ CObList::RemoveAt - 한 요소를 제거.


57. class COleClientDoc : public ColeCDocument


▷ COleClientDoc::COleClientDoc - COleClientDoc 오브젝트를 생성.
▷ COleClientDoc::RegisterClientDoc - DLL로 문서를 등록.


58. class COleClientItem : public CDocItem


▷ COleClientItem::Activate - 조작을 위해 항목을 열고 실현.,
▷ COleClientItem::CreateFromClipboard - Clipboard로부터 항목을 생성.
▷ COleClientItem::CreateNewObject - 새로운 내포된 항목을 생성.
▷ COleClientItem::Delete - 항목을 지움.
▷ COleClientItem::GetData - 데이터를 얻음.
▷ COleClientItem::GetDocument - COleClientDoc 오브젝트를 복귀.
▷ COleClientItem::GetLineUpdateOptions - 갱신 모드를 복귀.
▷ COleClientItem::GetType - 항목의 유형을 복귀.
▷ COleClientItem::OnChange - 항목을 바꿈.
▷ COleClientItem::OnRenamed - 항목을 재명명.
▷ COleClientItem::SetBounds - 항목의 막혀진 사각형을 지정.
▷ COleClientItem::SetColorScheme - 항목의 색 구조를 정함.
▷ COleClientItem::SetLinkUpdateOptions - 갱신 모드를 지정.
▷ COleClientItem::SetTargetDevice - 목표 장치를 지정.


59. class COleDocument : public CDocument


▷ COleDocument::COleDocument - COleDocument 오브젝트를 생성.
▷ COleDocument::GetNextItem - 호출에 의해 지정된 POSITION 가치의 참조.
▷ COleDocument::GetStartPosition - 처음 항목의 위치를 얻음.
▷ COleDocument::RemoveItem - 항목을 지움.


60. class COleException : public CException


▷ COleException::COleException - COleException 오브젝트를 생성.


COleException::m_status - 예외의 이유를 가리키는 상태 코드를 보유


61. class COleServer : public CObject


▷ COleServer::BegibRevoke - 단계를 시작.
▷ COleServer::COleServer - COleServer 오브젝트를 생성.
▷ COleServer::OnCreateDoc - 새로운 항목이 생성.
▷ COleServer::OnEditDoc - 기존 내포된 항목을 편집.
▷ COleServer::OnOpenDoc - 항목을 연다.
▷ COleServer::Register - DLL로 Server를 등록.


62. class COleServerDoc : public COleDocument


▷ COleServerDoc::COleServerDoc - COleServerDoc 오브젝트를 생성.
▷ COleServerDoc::OnClose - server 문서가 닫힘.
▷ COleServerDoc::OnGetEmbeeddedItem - 내포된 항목을 생성, 편집.
▷ COleServerDoc::OnGetLinkedItem - 연결된 항목을 편집.
▷ COleServerDoc::OnSetColorScheme - Color Palette를 지정.
▷ COleServerDoc::RegisterServerDoc - DLL로 문서를 등록.


63. class ColeServerItem : public CDocItem


▷ ColeServerItem::COleServerItem - COleServerItem 오브젝트를 생성.
▷ ColeServerItem::CopyToClipboard - 항목을 Clipboard로 복사.
▷ ColeServerItem::OnDoVerb - ColeClientItem::Activate 기능이 불려질 떼 불려짐.
▷ ColeServerItem::OnDraw - 항목을 Metafile에 Render.
▷ ColeServerItem::OnGetData - 항목 내용을 철회.
▷ ColeServerItem::OnShow - 항목을 보이라고 지시.
▷ ColeServerItem::SetItemName - 항목명을 정함.


64. class COleTemplateServer : public COleServer


▷ COleTemplateServer::COleTemplateServer - 오브젝트를 생성.
▷ COleTemplateServer::RunEmbedded - DLL로 Server를 등록.


65. class CPaintDC : public CDC


▷ CPaintDC::CPaintDC - CPaintDC를 생성.


66. class CPalette : public CGdiObject


▷ CPalette::AnimatePalette - Palette 안에 입력을 대치.
▷ CPalette::CPalette - CPalette 오브젝트를 생성.
▷ CPalette::CreatePalette - Palette를 만들고 CPalette 오브젝트에 부착.
▷ CPalette::FromHandle - 오브젝트에 포인터를 반환.
▷ CPalette::ResizePalette - Palette의 크기를 바꿈.


67. class CPen : public CGdiObject


▷ CPen::CPen - CPen 오브젝트를 생성.
▷ CPen::CreatePen - Pen을 초기화.


68. class CPoint : public tagPOINT


▷ CPoint::CPoint - CPoint 오브젝트를 생성.
▷ CPoint::Offset - CPoint에 개별적 값을 대입.


69. class CPrintDialog : public CDialog


▷ CPrintDialog::CPrintDialog - CPrintDialog 오브젝트를 생성.
▷ CPrintDialog::DoModal - 사용자가 선택.
▷ CPrintDialog::PrintAll - 모든 페이지의 프린트 결정.


70. struct CPrintInfo


▷ CPrintInfo::GetFromPage - 프린트되는 첫 페이지 수를 반환.
▷ CPrintInfo::GetToPage - 프린트되는 마지막 페이지 수를 반환.


71. class CPtrArray : public CObject


72. class CPtrList : public CObject


73. class CRect : public tagRECT


▷ CRect::BottomRight - CRect의 아래 포인트로 참조를 반환.
▷ CRect::CRect - CRect 오브젝트를 생성.
▷ CRect::OffsetRect - 지정된 Offset로 CRect를 옮김.
▷ CRect::Width - CRect의 폭을 계산.


74. class CResourceExceptions : public CException


▷ CResourceExceptions::CResourceExceptions - 오브젝트를 구성.


75. class CRgn : public CGdiObject


▷ CRgn::CombineRgn - 두 개의 오브젝트를 지정.
▷ CRgn::CopyRgn - CRgn 오브젝트의 복사.
▷ CRgn::CreatePolygonRgn - 다각형의 지역으로 CRgn 오브젝트를 초기화.
▷ CRgn::CreateRectRgn - 사각형의 지역으로 CRgn 오브젝트를 초기화.
▷ CRgn::CreateRectRgnIndirect - 타원형의 지역으로 CRgn 오브젝트를 초기화.
▷ CRgn::CRgn - CRgn 오브젝트를 생성.
▷ CRgn::SetRectRgn - 지정된 사각형의 지역에 CRgn 오브젝트를 지정.


76. struct CRuntimeClass


77. class CScrollBar : public CWnd


▷ CScrollBar::Create - 스클롤 바를 만들고 CScrollBar에 부착.
▷ CScrollBar::CScrollBar - CScrollBar 오브젝트를 생성.
▷ CScrollBar::SetScrollPos - 스크롤 박스의 현 위치를 지정.


78. class CScrollView : public CView


▷ CScrollView::CScrollView - CScrollView 오브젝트를 생성.
▷ CScrollView::SetScrollSizes - 스크롤 양을 지정.


79. class CSingleDocTemplate : public CDocTemplate


▷ CSingleDocTemplate::CSingleDocTemplate - 오브젝트를 생성.


80. class CSize : public tagSIZE


▷ CSize::CSize - 오브젝트를 생성.


81. class CSplitterWnd : public Cwnd


▷ CSplitterWnd::Create - 동적 Splitter 윈도우를 생성.
▷ CSplitterWnd::CSplitterWnd - CSplitterWnd 오브젝트를 생성.
▷ CSplitterWnd::GetPane - 지정된 행과 열에 Pane을 복귀.


82. class CStatic : public CWnd


▷ CStatic::Create - 정적 제어를 생성하고 CStatic 오브젝트에 붙임.
▷ CStatic::CStatic - CStatic 오브젝트를 생성.


83. class CStatusBar : public CControlBar


▷ CStatusBar::Create - 상태바를 생성하고 오브젝트와 연결.
▷ CStatusBar::CStatusBar - StatusBar 오브젝트를 생성.


84. class CStdioFile : public CFile


▷ CStdioFile::CStdioFile - CStdioFile 오브젝트를 생성.


85. class CString


▷ CString::Compare - CString 오브젝트를 문자별로 비교.
▷ CString::CString - CString 오브젝트를 초기화.
▷ CString::GetBuffer - 내부 문자 버퍼의 포인터를 복귀.


86. class CStringArray : public CObject


87. class CStringList : public CObject


88. class CTime


89. class CTimeSpan


90. class CToolBar : public CConTrolBar


▷ CToolBar::Create - 툴바를 생성 오브젝트에 연결.
▷ CToolBar::CToolBar - CToolBar 오브젝트를 생성.
▷ CToolBar::LoadBitmap - 비트맵을 로드.
▷ CToolBar::SetButtons - 버튼의 명령ID, 유형 등을 지정.


91. class CUIntArray : public CObject


92. class CUserException : public CException


93. class CVBControl : public CWnd


▷ CVBControl::Create - 제어를 만듦.
▷ CVBControl::CVBControl - CVBControl 오브젝트를 구성.


94. class CView : public CWnd


▷ CView::OnDraw - 문서의 상을 주기 위함.
▷ CView::OnPrint - 문서를 프린트.


95. class CWinApp : public CCmdTarget


▷ CWinApp::CWinApp - CWinApp 오브젝트를 생성.
▷ CWinApp::LoadIcon - 아이콘 자원을 로드.
▷ CWinApp::LoadVBXFile - VBX 제어파일을 로드.
▷ CWinApp::OnContextHelp - Help를 조절.
▷ CWinApp:Run - 디폴트 메시지 루프를 실행.
▷ CWinApp:WinHelp - WinHelp 윈도우 기능을 부름.


96. class CWindowDC : public CDC


▷ CWindowDC::CWindowDC - CWindowDC 오브젝트를 생성.


97. class CWnd : public CCmdTarget


98. class CWordArray : public CObject
▶ 클래스의 요약

1. Root Class

Microsoft Foundation Class Libray의 대부분 클래스는 클래스 위계의 루트의 단일 Base class로부터 파생된다.
CObject는 매우 낮은 오버헤드를 가진 그것으로부터 파생된 모든 클래스에 많은 유용한 능력을 제공한다.

▷ CObject
모든 다른 클래스의 궁극적 Base class.
데이터를 시리얼아이즈(Serialize)하고 런타임 클래스 정보를 얻어내거나 디버깅시에 출력 진단의 역할을 한다.


2. 응용 건설 클래스 (Application Architecture Classes)

이 범주의 클래스는 구조 응용의 건설에 기여한다. 그것들은 Windows를 위해 쓰여진 대부분 응용에 일반적인 기능을 제공한다. 특정 응용 기능을 첨가하기 위해 구조를 채운다. 일반적으로 건설 클래스로부터 새로운 클래스를 파생하고 때때로 새로운 멤버를 첨가하거나 기존멤버 기능을 변경함으로써 그렇게 할 수 있다.

구조는 Windows의 응용으로서 기능의 작동 시간에 협동하는 클래스 오브젝트의 그룹으로 구성된다. 주요
오브젝트는 다음과 같다. :

․ CWinApp 클래스로부터 나온 응용 오브젝트.
․ CDocument 클래스로부터 나온 것과 윈도우와 관계된 하나나 그 이상의 문서 오브젝트.
․ 각각 문서에 붙여지거나 Window와 관련된 CView 클래스로부터 나온 하나나 그 이상의 View 오브젝트.

2-1. Window 응용 클래스

각 응용은 하나와 한 응용 오브젝트만을 가진다. :
이 오브젝트는 작동 프로그램의 다른 오브젝트와 코디네이트하고 CWinapp에서 파생된다.

▷ CWinApp
윈도 애플리케이션 오브젝트를 생성시키는 Base Class.
애플리케이션 프로그램을 초기화 시키고 실행하거나 종료하는 기능을 한다.

2-2. 명령 관련 클래스 (Command-Related Classes)

사용자가 마우스로 메뉴를 선택하거나 제어 바 버튼을 선택함으로써 응용과 대화할 때 응용은 적당한 명령
목표 오브젝트의 영향을 준 사용자 인터페이스 오브젝트로부터 메시지를 보내는데 그것은 CCmdTarget 클래스이다.
CCmdTarget으로부터 나온 명령 목표 클래스는 CWinApp, CWnd, CDocTemplate, CDocument, CView와 그것들로부터 나온 클래스를 포함한다. CCmdUI 클래스는 오브젝트의 상태를 갱신하기 위한 메뉴나 버튼같은 명령 사용자 인터페이스 오브젝트를 표시한다.

▷ CCmdTarget
메시지를 받고 응답할 수 있는 오브젝트의 모든 클래스의 Base class로서 Serve 한다.

▷ CCmdUI
메뉴 항목이나 제어 바 같은 버튼 같은 사용자 인터페이스 오브젝트를 갱신하기 위한 프로그램의 인터페이스를
제공한다. 명령 목표 오브젝트는 이 proxy 오브젝트로서 사용자 인터페이스 오브젝트를 가능, 불가능, 체크
또는 체크 하지 않는 등의 일을 한다.

2-3. 문서/뷰 클래스 (Document/View Classes)

문서 템플릿 오브젝트에 의해 생성된 문서 오브젝트는 응용의 데이터를 관리한다. View 오브젝트는 Window의 Client 영역을 표시하는데 문서의 데이터를 보이고 사용자가 그것과 대화하도록 허락한다.

▷ CDocTemplate
문서 템플릿을 위한 Base Class.
문서 템플릿은 문서, 뷰, 프레임 윈도우 오브젝트의 생성을 코디네이트한다.

▷ CSingleDocTemplate
단일 문서 인터페이스(SDI)의 문서를 위한 템플릿.
SDI 응용은 한 번에 한 개 열려진 문서만을 갖는다.

▷ CMultiDocTemplate
다중 문서 인터페이스(MDI)의 문서를 위한 템플릿.
MDI 응용은 한 번에 여러개(중복의) 열려진 문서를 가질 수 있다.

▷ CDocument
애플리케이션이 지정한 문서의 Base Class.
사용자의 문서들은 이 CDocument 클래스로부터 상속받아 마음대로 사용할 수 있다..

▷ CView
문서 안에 있는 데이터를 뷰를 통하여 화면에 보일수 있도록 하는 클래스.
View 데이터를 보이고 데이터를 편집하거나 선택하기 위해 사용자 입력을 취한다. 사용자들의 View들은 CView
로부터 상속받아 자기 나름대로 사용할 수 있다.

▷ CPointInfo
프린트나 프린트 사전 검사 업무에 대한 정보를 포함하는 구조체.
CView의 프린트 생성에 의해 사용된다.

▷ CCreateContext
문서, 뷰, 프레인 윈도, 문서 템플릿에 대한 포인터를 저장하고 있는 구조체이다.
이 구조체는 문서 템플릿에 의하여 윈도 생성 함수에 전해지게 된다.

3. Visual 오브젝트 클래스

시중에 있는 MFC 관련 책에 이 부분을 가상 오브젝트 클래스라고 번역하였는데, 이것은 오류이다. 왜냐하면 이 클래스는 윈도나 다이얼로그, 메뉴, 각종 컨트롤 등 다분히 시각적인 오브젝트들을 다루기 때문이다. 따라서 윈도의 획일화된 유저 인터페이스가 싫다고 자신만의 윈도 인터페이스를 만들려면 이러한 클래스를 반복해서 알아두어야 할 것이다.

이 범주의 클래스는 시각적인 사용자 인터페이스 오브젝트를 표시한다. :
윈도우, 다이얼로그 박스, 제어, 메뉴. 또한 포함된 것들은 윈도우의 내용을 렌더링하는데 고용된 오브젝트와 관계한다. :: 장치 문맥과 펜, 브러쉬 같은 드로잉 오브젝트

3-1. Window 클래스

혹시 윈도 API 함수들을 사용해 본 User들이 있는지는 모르겠다. 거기엔 HWND라는 윈도 핸들이 수시로 함수
파라미터로 전해지고, 내부에서 사용되어 매우 불편하였다. 그러나 MFC를 사용하게 되면 HWND라는 볼 수 없는데 그 이유는 바로 윈도 클래스가 HWND를 안보이도록 캡슐화(Encapsulation) 시켜 놓았기 때문이다. 이러한 캡슐화의 장점은 보다 쉽고 편하게 프로그램할 수 있는 환경을 제공해준다(물 필요한 경우 멤버 변수에 대한 접근이 가능하므로 기존의 API 함수들과 연결이 가능하다).

▷ CWnd
모든 윈도우를 위한 Base Class.
기본적인 SDK 함수들을 MFC에 맞도록 캡슐화시켜 놓았다. 아래의 파생 클래스를 사용한다. 또는 CWnd로
부터 직접 자신의 클래스를 끌어낸다.

▷ CFrameWnd
메인 프레임에 관한 윈도 클래스.
SDI 응용의 주요 프레임 윈도우를 위한 Base Class.

▷ CMDIFrameWnd
MDI 응용의 주요 프레임 윈도우를 위한 Base Class.

▷ CMDIChildWnd
MDI 응용의 문서 프레임 윈도우를 위한 Child Window Class

3-2. View 클래스

문서 안에 있는 내용을 윈도의 클라이언트 영역에 표시하고 나타내는 역할을 하는데 뷰의 종류도 특성에 따라 여러 가지가 존재한다.

▷ CView
문서 데이터의 특정응용 View를 위한 Base Class.
View는 데이터를 보이고, 데이터를 편집하거나 선택하기 위해 사용자 입력을 취한다. CView로부터 View
클래스를 파생하거나 자동 스크롤링을 위해 CScrollView를 사용한다.

▷ CScrollView
Scrolling 능력을 가진 View를 위한 Base Class.
자동 스크롤링을 위해 CScrollView로부터 View 클래스를 끌어낸다.

▷ CFormView
Dialog 자원에 정의된 레이아웃을 가진 Scroll View.
Dialog 자원에 기초한 사용자 인터페이스를 실현하기 위해 CFormView로부터 끌어 낸다.

▷ CEditView
구문, 편집, 조회, 스크롤링 능력을 가진 View.
문서에 구문에 기초한 사용자 인터페이스를 제공하기 위해 이 클래스를 사용한다.

3-3. Dialog 클래스

CDialog 클래스와 그 파생 클래스는 다이얼로그 박스 기능을 캡슐화한다. 다이얼로그 박스는 윈도우의 특정한 종류이기 때문에 Cdialog는 CWnd로부터 나온다. Cdialog로부터 다이얼로그 클래스를 끌어내거나 파일을 열거나 저장하고 프린트 폰트나 색의 선택 또는 조회하고 치환하는 작업을 초기화하는 것같은 다이얼로그 박스를 위한 보통의 Dialog Class의 하나이다.

▷ CDialog
다이얼로그 클래스들에 대한 Base Class.
다이얼로그의 종류는 반드시 그 다이얼로그에서 OK나 Cancel을 선택하기 전까지 제어권이 넘어가지 않은
Modal 다이얼로그와 다른 윈도로 제어권이 넘어가는 Modeless 다이얼로그 두 가지로 나뉘어진다. 일반적으로
MFC가 제공하는 기본 다이어로그들은 Modal 다이얼로그이다.

▷ CDataExchange
Dialog box를 위한 정보의 초기화와 타당화를 공급한다.

▷ CFileDialog
파일을 열거나 저장, 또는 디렉토리 찾아가기 등의 일을 하는 표준 다이얼로그 클래스.

▷ CPrintDialog
파일을 프린트하거나 여러 가지 프린트 옵션을 지정하는 다이얼로그 클래스.

▷ CFontDialog
폰트를 선택하거나 글자 크기와 속성을 지정하는 표준 다이얼로그 클래스.

▷ CColorDialog
색을 선택하는 표준의 다이얼로그 클래스.

▷ CFindReplaceDialog
문자를 검색하고 지정한 문자열로 치환하는 표준 다이얼로그 클래스.

3-4. 제어 클래스

제어 클래스는 Pen 계산, 제어 바, VBX custom 제어를 위한 Microsoft Windows의 비트맵, 편집 제어를 가진 버튼을 포함하는 새로운 제어뿐 아니라 버튼, 목록 박스, Combo box 같은 표준의 Windows 제어에 프로그램의 인터페이스를 제공한다.
VC++ AppStuio를 사용한다면 아래의 컨트롤들을 쉽게 다이얼로그에 포함시키며 비주얼한 작압을 할 수 있다.

▷ CStatic
정적-구문 제어 윈도우.
정적 제어는 라벨과 박스에 익숙하거나 다이얼로그 박스나 윈도우의 다른 제어를 나눈다.

▷ Button
다이얼로그 박스에서 흔히 볼 수 있는 체크 박스나 라디오 버튼.

⇨ CBitmapButton
비트맵을 포함시킬 수 있는 버튼 클래스.
구문 캡션이 이런 비트맵을 가진 버튼.

▷ CButton
버튼 제어 윈도우.
클래스는 다이얼로그 박스나 윈도우의 푸시 버튼, 체크박스 또는 라디오 버튼에 프로그램의 인터페이스를
제공한다.


▷ CEdit
편집 가능한 구문 제어 윈도우.
편집 제어는 사용자로부터 구문상 입력을 취한다.

⇨ CHEdit
사용자가 표준의 펜 편집을 사용하는 구문을 입력하고 수정할 수 있는 펜 편집 제어를 위한 윈도우.
이 클래스는 CEdit 특성 이외에 펜 컴퓨팅을 할 수 있도록 구현된 클래스인데 기본적인 키보드 중심의
에디터 컨트롤 이외에도 필기체를 인식할 수 있는 메커니즘이 포함되어 있다.
⇨ CBEdit
사용자가 표준의 펜 편집을 사용하는 구문을 입력하고 수정할 수 있는 펜 편집 제어를 위한 윈도우.
이 제어는 구문 요소를 인도하는 박스를 제공하는다는 점에서 CHEdit와 다르다.
CHedit의 특성 외에 필기체 인식의 정확성을 높이기 위하여 틀린 글자로 처리되었을 때 수정이 가능한
박스를 첨가시킨 클래스이다.

▷ CListBox
리스트 박스 제어 윈도우.
리스트 박스는 사용자가 보이고 선택할 수 있는 항목의 목록을 보인다.
여러 아이템을 박스 안에 나열해서 표현할 수 있고 한 아이템을 선택하는 것이 가능한 박스이다.

▷ CComboBox
Combo-Box 제어 윈도우.
Combo-Box는 편집 제어+목록 박스로 이루어진다.


▷ CControlBar
HWND에 기초한 Child 제어나 Toolbar 버튼같은 HWND에 기초하지 않는 제어를 포함하는 프레임 윈도우의
꼭대기나 바닥에 배열된 윈도우.
Toolbar와 Status bar 같은 제어 바를 위한 Base Class.

⇨ CStatusBar
Status bar 제어 윈도우를 위한 Base Class.
창 하단에 있는 상태바에 대한 클래스.
⇨ CToolbar
HWND에 기초하지 않은 비트맵 명령 버튼을 포함하는 툴 바 제어 윈도우.
창 상단에 기본적으로 위치한 작은 비트맵 버튼들의 연속된 집합(툴바)과 관련된 클래스.
⇨ CScrollbar
창의 우측이나 좌측에 있는 스크롤바에 대한 클래스.
클래스는 사용자가 범위내에 위치를 정할 수 있는 것을 통해 다이얼로그 박스나 윈도우의 제어처럼
사용자를 위한 스크롤 바의 기능을 제공한다.
⇨ CDialogBar
컨트롤바의 형태로된 Modeless 다이얼로그 박스에 관련된 클래스.

▷ CVBControl
비주얼베이식에서 사용되던 VBX를 제어할 수 있는 클래스.

▷ CSplitterWnd
여러개의 툴로 나뉘어질수 있는 창을 제어하는 클래스.

3-5. 메뉴 클래스

CMenu 클래스는 응용의 메뉴에 접근 하는 것으로써 인터페이스를 제공한다. 그것은 작동시간에 동적으로
메뉴를 조작하는데 유용하다. : 예를 들어, 문맥에 따라 메뉴 항목을 첨가하거나 지우기를 원할 수 있다.

▷ CMenu
응용의 메뉴 바와 팝업 메뉴의 HMENU handle을 캡슐화한다.

3-6. 장치 문맥 클래스 (Device-Context Class)

다음 클래스의 대부분은 Windows 장치 문맥의 handle을 캡슐화한다. 장치 문맥은 Display나 프린터 같은 장치의 속성을 드로잉하는데 대한 정보를 포함하는 Windows 오브젝트이다.

모든 드로잉 호출은 장치 문맥 오브젝트를 통해 만들어진다. CDC로부터 파생된 첨가의 클래스는 Windows의 metagile을 위해 제공을 포함하는 특정한 장치 문맥 기능을 캡슐화한다.

▷ CDC
장치 문맥을 위한 Base Class.
화면 출력과 프린터와 같은 비화면 출력을 다룰 수 있는 멤버 함수들이 있는 클래스이다.

⇨ CPaintDC
윈도우의 OnPaint 멤버 기능과 View의 OnDraw 멤버 기능에서 사용된 디스플레이 문맥.
이 클래스를 생성할 때 자동적으로 BeginPaint가 실행되고 소멸될 때 EndPaint가 실행되므로 프로그램
코드에 BeginPaint와 EndPaint를 포함 시킬 필요가 없다.
⇨ CClientDC
윈도의 클라이언트 영역에 화면 출력하기 위한 것이다.
예를 들면 마우스 포인트가 클라이언트 영역에 있을 때 이중 클릭 되었다. 이 때 원을 그리려는 프로
그램을 작성한다면 이 클래스를 사용한다.
⇨ CWindowDC
고객과 프레임 영역을 포함하는 전체 윈도우를 위한 디스플레이 문맥.
전체 윈도에 대한 화면 출력 클래스로써 클라이언트 영역뿐만 아니라 메임프레임 영역에도 적용 가능하다.
⇨ CMetaFileDC
Windows의 metafile을 위한 장치 문맥.
Windows Metafile은 이미지를 생성하기 위해 다시 Play될 수 있는 그래픽 장치 인터페이스(GDI) 명령의
배열을 포함한다. 이미지를 BMP나 PCX와 같이 통째로 저장하는 것이 아니고 그래픽 명령으로 저장되어
있기 때문에 metafile은 크기가 작을뿐더러 수정이 쉽다. CMetaFileDC의 멤버 기능에 만들어진 호출은
metafile에 기록된다.

3-7. 오브젝트 클래스의 드로잉

다음 클래스는 handle에 기초한 GDI 오브젝트를 캡슐화한다. 그것들은 C++ 구문을 가진 GDI 드로잉 오브젝트를 조작하도록 허락한다.

▷ CGdiObject
GDI 드로잉 툴을 위한 Base Class.

⇨ CBitmap
비트맵을 조작하는 인터페이스를 제공하는 GDI 비트맵을 캡슐화한다.
⇨ CBrush
장치 문맥의 현재 Brush로서 선택될 수 있는 GDI Brush를 캡슐화한다.
⇨ CFont
장치 문맥의 현재 Font로서 선택될 수 있는 GDI Font를 캡슐화한다.
⇨ CPalette
응용과 디스플레이 같은 색 출력 장치 사이의 인터페이스로서 사용자를 위해 GDI 색 팔레트를 캡슐화 한다.
⇨ CPen
장치 문맥에서 현재 Pen으로서 선택될 수 있는 GDI Pen을 캡슐화한다.
⇨ CRgn
윈도우내의 생략 또는 Polygonal 영역을 조작하기 위한 GDI 영역을 캡슐화한다.
CDC 클래스의 Clipping 멤버 기능을 가진 연결에 사용된다.


4. 일반 목표 클래스

이 범주의 클래스는 파일 I/O, 예외 조정같은 일반 목표 서비스의 다양함을 제공한다. 또한 포함된 것들은 데이터의 집합을 저장하는 배열과 같은 목록의 클래스이다.

4-1. 파일 클래스

만약 자신의 입출력 프로세서를 쓴다면 특별히 CArchive와 같은 CFile의 다음 클래스를 사용한다. 보통은 이런 클래스로부터 파생할 필요가 없다. 만약 응용구조를 사용한다면 File 메뉴의 Open과 Save 명령의 디폴트 실현은 문서가 그 내용을 직렬화하는 방법에 대한 세부사항으로 제공된 파일 I/O를(CArchive를 사용하는) 조정한다.

▷ CFile
이진수의 디스크 파일의 프로그램 인터페이스를 제공한다.

⇨ CMemFile
Memory를 파일처럼 쓸수 있도록 프로그램 인터페이스를 제공한다.
⇨ CStdioFile
Buffer된 strem disk file.
일반적인 텍스트 파일을 다룰 수 있는 프로그램 인터페이스를 제공한다.
⇨ CArchive
CFile과 같이 사용되어 데이터 객체에 대한 Serialization을 구현하는데 중요한 인터페이스 제공.

4-2. 진단 (Diagonstics)

프로그램을 디버깅하는 도중에 CDumpContext와 CMemoryState가 쓰이곤 하는데 이것은 메모리의 내용을
통째로 보일수 있게 하거나 메모리의 상태를 진단할 수 있도록 하는 클래스이다.

▷ CDumpContext
메모리의 내용을 통째로 뽀이도록 하는 클래스.
진단 Dump를 위한 목적지를 제공한다.

▷ CMemoryState
메모리 사용을 위한 Snapshot을 제공한다.
이 클래스는 또한 초기와 후기의 Snapshot을 비교하기 위해 사용된다.

▷ CRuntimeClass
작동 시간에 오브젝트의 정확한 클래스를 결정하기 위해 사용된다.

4-3. 예외 처리(Exception)

Class Libray는 CException 클래스에 기초한 예외 조정 메커니즘을 제공한다. 응용 구조는 그 코드의 예외를 사용한다. 또한 사용자 자신의 것에서 그것들을 사용할 수 있다.

▷ CException
여러 가지 예외 처리들에 대한 Base Class.

⇨ CArchiveException
데이터 기록에 대한 예외 처리 클래스.
⇨ CFileException
파일에 관련된 예외 처리 클래스.
⇨ CMemoryException
메모리 고장에 관한 예외 처리 클래스.
⇨ CNotSupportedException
지원되지 않은 특성의 호출하였을 때 발생하는 예외 처리.
⇨ CResourceException
Windows 자원을 로드하는데 대한 실패로부터 나온 예외 처리.
⇨ COleException
OLE 프로세싱의 실패로부터 생긴 예외.
이 클래스는 고객과 Server에 의해 사용된다.
⇨ CUserException
사용자가 초기화한 조작을 멈추는데 사용된 예외.
사용자는 전형적으로 이 예외가 생기기 전에 문제를 인식하게 된다.

4-4. 수집 (집합체(Collections) 관련) 클래스

데이터 집합체를 조정하기 위해 Class Libray는 수집 클래스의 그룹을 제공한다. - 배열 목록, Map - 그것들을 다양한 오브젝트와 미리 정의된 유형을 유지할 수 있다. 수집은 역동적으로 크기가 정해진다.
배열과 리스트, 데이터 오브젝트간의 매핑 클래스드로써 중요도는 떨어지지만 요긴하게 쓰이는 클래스 집합이다. 이 클래스들은 윈도 프로그램에 쓰일 수 있지만 도스 프로그램에서도 쓰일 수 있으며 이와 유사한 클래스를 필요로 할 때 이 클래스들로부터 파생시켜 만들 수 있다.


➡ 배열 관련 클래스
▷ CByteArray
배열에 BYTE 형태의 원소들을 배열로 저장.

▷ CDWordArray
배열에 더블 워드 형태의 원소들을 배열로 저장.

▷ CObArray
CObject에서 파생된 클래스들 또는 CObject 클래스 그 자체에 대한 포인터를 배열로 저장.

▷ CPtrArray
배열에 void(총칭 pointer)의 포인터를 저장한다.

▷ CStringArray
배열의 CString 오브젝트를 저장한다.

▷ CWordArray
WORD 형태의 원소들을 배열로 저장한다.

▷ CUIntArray
UNIT 형태의 원소들을 배열로 저장한다.

➡ 링크드 리스트 관련 클래스
▷ CObList
CObArray와는 달리 CObject에서 파생된 클래스들 또는 CObject 클래스 그 자체에 대한 포인터를 링크드
리스트 형태로 저장.

▷ CPtrList
링크된 목록에 void(총칭의 pointer)의 포인터를 링크드 리스트로 저장한다.

▷ CStringList
링크된 목록에 CString 오브젝트를 링크드 리스트로 저장한다.

➡ 오브젝트간 매핑 클래스
▷ CMapPtrToWord
WORD 유형의 데이터에 대한 void pointer를 사상(Map)한다. WORD 유형의 데이터를 찾기 위한 키로서 void
pointer를 사용한다.

▷ CMapPtrToPtr
void pointer의 void pointer map 한다. 다른 void pointer를 찾기 위한 키로서 void pointer를 사용한다.

▷ CMapStringToOb
CObject pointer에 대한 CString 오브젝트를 사상한다. CObject pointer를 찾기 위한 키로서 CString 오브젝트를 사용한다.

▷ CMapStringToPtr
void pointer에 대한 CString 오브젝트를 사상한다. 한다. void pointer를 찾기 위한 키로서 CString 오브젝트를
사용한다.

▷ CMapStringToString
CString에 대한 CString 오브젝트를 사상한다. 다른 CString 오브젝트를 찾기 위한 키로서 CString 오브젝트를
사용한다.

▷ CMapWordToOb
CObject pointer에 대한 WORD유형의 데이터를 사상한다. CObject pointer를 찾기 위해 WORD 유형의 데이터를
사용한다.

▷ CMapWordToPtr
void pointer에 대한 WORD유형의 데이터를 사상한다. void pointer를 찾기 위해 WORD 유형의 데이터를
사용한다.

4-5. 보조의 Support Classes

다음의 클래스는 C++ 구문의 편리한 사용을 허락하는 드로잉 좌표, 문자 스트링, 시간과 날짜 정보를 캡슐화한다. 이런 오브젝트는 Microsoft Foundation Class Library의 Windows 클래스의 멤버 기능에 대한 매개 변수로서 넓게 사용된다.

CPoint, CSize, CRect는 Windows Software Development Kit(SDK)에서 각각 POINT, SIZE, RECT 구조에 응답하기 때문에 이런 C 언어 구조를 사용할 수 있을 때마다 C++ 클래스의 오브젝트를 사용할 수 있다. 클래스는 그것들의 멤버 기능을 통해 유용한 인터페이스를 제공한다.

CString은 메우 융통적인 동적 문자 스트링을 제공한다. CTime과 CTimeSpan은 시간과 날짜 값을 표시한다.

▷ CPoint
좌표(x, y)쌍을 보유한다.

▷ CSize
거리, 관계된 위치, 또는 쌍의 가치를 보유한다.

▷ CRect
네모의 영역을 유지한다.

▷ CString
문자 String을 유지한다.

▷ Ctime
절대적인 시간과 날짜 가치를 보유한다.

▷ CTimeSpan
비교의 시간과 날짜를 보유한다.


5. OLE 클래스

Class Library는 OLE(Object Linking and Embeddind)을 지원하는 4개의 범주를 제공한다. : OLE base 클래스, OLE 고객 클래스, OLE server 클래스, OLE 예외 클래스

5-1. OLE Base 클래스

이 범주에 열거된 클래스는 다른 범주에 더 특정화된 OLE 클래스의 Base Class로서 Server 한다. 이런 클래스는
완전하기 위해 여기에 열거된다. 직접 그것들을 사용하지는 않는다.

▷ COleDocument
COleClientDoc와 COleServerDoc 클래스의 추상적 Base Class.
COleDocument는 CDocItem 유형의 항목을 위한 컨테이너이다.
COleClientDoc는 COleServerDoc가 COleServerItem 유형의 항목을 포함하는 동안 ColeCI ientItem 유형의
항목을 포함한다.

▷ CDocItem
문서의 부분인 항목.
COleClientItem과 ColeServerItem의 추상적 Base Class.

5-2. OLE Client Classes

Class Library는 OLE 고객 응용에서 사용을 위한 두 클래스를 제공한다. COleClientDoc는 고객 문서를 표시하는데, 이는 COleClientItem 유형의 항목의 수집을 유지한다. COleClienyItem은 내포되거나 링크된 OLE 항목의 고객 View를 표시한다. 이런 클래스는 보이는대로 추상적 Base Class로부터 나온다.

▷ COleClientDoc
고객 항목을 관리 하는 고객 문서 클래스.
OLE 고객 기능을 실현하기 위해 CDocument 대신 이 클래스로부터 문서를 파생해야 한다.

▷ COleClientItem
내포되거나 링크된 OLE 항목에 연결된 고객의 편을 표시하는 고객 항목 클래스.
이 클래스로부터 고객 항목을 파생해야 한다.

5-3. OLE Server 클래스

OLE Server 응용은 그것이 공급하는 문서 유형의 각각을 위한 Server 오브젝트를 가진다. Server는
CDocTemplate 오브젝트가 문서를 생성하고 유지하는 똑같은 방법으로 Server 문서를 생성하고 유지한다.

▷ COleServer
Server 문서를 생성하고 관리하는 Server 응용 클래스.
응용이 지원하는 각 Server 유형을 위해 이 클래스를 파생해야 한다.

▷ COleServerDoc
Server 항목을 생성하고 관리하는 Server 문서 클래스.
CDocument 대신 이 클래스로부터 Server 문서를 파생해야 한다.

▷ COleServerItem
내포되거나 연결된 OLE 항목의 연결의 Server 편을 표시하는 Server 항목 클래스.
이 클래스로부터 Server 항목을 파생해야 한다.

▷ COleTemplateServer
문서 템플릿을 사용하는 Server 문서를 관리하는 OLE Server 실현 클래스.
이 클래스는 COleServer로부터 파생하는 대신으로서 직접 사용될 수 있다.

5-4. OLE 예외 클래스

Class Library는 OLE 프로세싱동안 나타나는 예외의 상황을 위해 CException으로부터 나온 예외 클래스를 제공한다.

▷ COleException
OLE 프로세싱의 실패로부터 생긴 예외.
이 클래스는 고객과 Server에 의해 사용된다.


6. 매크로와 글로벌 변수들

가끔 MFC 예제 프로그램 코드를 보면 이상하고 야릇한 매크로나 글로벌 변수(함수)들을 보게 된다. 개발자의 의도는 좀 더 편리하게 사용하기 위해서 매크로를 사용하였겠지만 막상 사용자들은 매크로의 담긴 의미들을 알기 힘들어 오히려 난해하게 여겨졌던게 사실이다.
물론 이 부분은 클래스에 관련된 부분은 아니지만 MFC 코드를 이해하는데 필요한 요소이기 때문에 어떤
내용들이 포함되어 있는지 요약만 하도록 하겠다. 매크로와 데이터형이 어떻게 선언되었는지 궁금한 User는
mfcinclude 디렉토리에서 를 참조하기 바란다.

6-1. 데이터 형 (Data Type)

Window SDK 시절부터 데이터형을 새롭게 정의하였는데 일반적으로 많이 쓰이는 데이터형에 대해서는 알아둘 필요가 있을 것 같다.



이외에 두 개의 데이터 타입이 MFC에서 새롭게 정의 되었는데 그것은 다음과 같다.

․ POSITION : MFC의 Collection 클래스에서 사용되는 원소들의 위치 지정에 사용되는 데이터형.
․ LPCRECT : RECT 구조체에 대한 32bit 포인터.

6-2. 런타임 오브젝트 모델 서비스 (Run-Time Object Model Service)

CObject와 CRuntimClass등은 각 오브젝트들에 대한 몇 가지 서비스를 포함하고 있다. 예를 들면 천타임 시의 클래스 관련 정보, 계열화(Serialization), 동적인 오브젝트 생성등이 그러한 것인데 CObject로부터 파생된 모든 클래스들은 이러한 기능들을 상속받게 된다.

․ 매크로 : DECLARE_DYNAMIC, DECLARE_DYNCREATE, DECLARE_SERIAL, IMPLEMENT_DYNAMIC
IMPLEMENT_DYNCREATE, IMPLEMENT_SERIAL, RUNTIME_CLASS.

6-3. 진단 서비스 (Diagnostic Services)

MFC는 디버딩을 쉽게 할 수 있도록 여러 가지 진단 서비스를 갖추고 있다. 매크로뿐만 아니라, 글로벌 변수 및 함수들을 통하여 버그에 대한 진단을 내릴 수 있다. 진단 기능을 하는 것들은 다음과 같다. 여기서 글로벌
변수는 afx로 시작하고 글로벌 함수는 Afx로 시작하는 것을 주목하기 바란다.

․ 매크로 : ASSERT, ASSERT_VALID, DEBUG_NEW, TRACE, VERIFY.
․ 글로벌 변수 : afxDump, afxMemDF, afxTraceEnabled, afxTraceFlags.
․ 글로벌 함수 : AfxCheckMemory, AfxDump, AfxEnableMemoryTracking, AfxIsMemoryBl