'DrawText'에 해당되는 글 2건

320x100

[CDC] DrawText 옵션 정리

Posted on 2013. 4. 23. 11:22
Filed Under Visual C++



DT_WORDBREAK ; 한글인경우 글자단위로 개행영문, 숫자인경우 단어단위로 개행

DT_EDITCONTROL : DT_WORDBREAK에 OR해주면 영문,한글,숫자 모두 글자단위로 개행

DT_NOFULLWIDTHCHARBREAK : 단어단위로 개행

DT_END_ELLIPSIS : 글자가 범위를 넘어가면 끝 부분을 '...'로 표시



UINT nFormat = DT_VCENTER|DT_CENTER|DT_SINGLELINE|DT_END_ELLIPSIS;

_pDC->DrawText((LPCTSTR)strText, &rectText, nFormat);


반응형

[펌]문자열 출력 함수 (TextOut, DrawText)

Posted on 2009. 9. 22. 13:16
Filed Under Visual C++

[펌]문자열 출력 함수
2007/01/10 15:33

복사 http://blog.naver.com/iperfume/100032988161

문자열 출력 함수.

BOOL TextOut(HDC hdc, int nXStart, int nYStart, LPCTSTR lpString, int cbString);

 

▶hdc:DC핸들

▶nXStart:문자열을 출력할 X좌표

▶nYStart:문자열을 출력할 Y좌표

▶lpString:출력할 문자열

▶cbString:문자열의 길이. 널 종료 문자열을 인식하지 않으므로 반드시 길이를 밝혀 주어야 한다.

 

 

 

문자열의 정렬 방법을 변경하는 함수

UINT SetTextAlign(HDC hdc, UINT fMode);

▶fMode:정렬 방식과 CP사용 여부 등의 플래그를 지정한다. 정렬 방식은 수평, 수직에 대해 각각 한 종류만 선택할 수 있다.

플래그 설명
TA_BLASELINE 텍스트의 기준선에 정렬
TA_BOTTOM 수직 하단 정렬
TA_TOP 수직 상단 정렬
TA_CENTER 수평 중앙 정렬
TA_LEFT 수평 왼쪽 정렬
TA_RIGHT 수평 오른쪽 정렬
TA_NOUPATECP 문자열이 출력된 후 CP는 변경되지 않는다.
TA_RTLREADING 문자열을 오른쪽에서 왼쪽으로 출력한다. 한글 윈도우즈에서는 의미가 없다.
TA_UPDATECP 문자열 출력 좌표 CP를 사용하며 문자열 출력 후 CP를 갱신한다.

 

 

 

 

사각영역을 정의하여 영역 안에 문자열을 출력할수 있다.

int DrawText(HDC hDC, LPCTSTR lpString, int nCount, LPRECT lpRect, UINT uFormat);

 

 

▶hDC:DC핸들

▶lpString:출력할 문자열. nCount가 -1이면 널 종료 문자열이어야 한다.

▶nCount:문자열을 길이. -1일 경우 널 종료 문자까지를 문자열 길이로 계산한다.

▶lpRect:문자열을 출력할 시각영역

▶uFormat:출력 옵션.

플레그 설명
DT_BOTTOM 텍스트를 사각 영역의 바닥에 출력한다. DT_SINGLELINE 플레그가 설정되어 있을 때만 사용할 수 있다.
DT_CALCRECT 문자열을 출력할 수 있는 사각 영역을 계산한다. 문자열이 여러줄로 되어 있으면 사각 영역의 바닥(bottom)을 확장하여 모든 문자열이 다 포함되도록 하며 문자열이 한줄로 되어 있으면 사각 영역의 오른쪽(right)을 확장한다. 이 플레그가 주어지면 실제 문자열은 출력되지 않고 계산만 해 준다.
DT_CENTER 수평 중앙 정렬
DT_EDITCONTROL 멀티 라인 에디트 컨트롤과 같은 방식으로 문자열을 출력한다. 문자의 수평폭을 계산하는 방법이 에디트 컨트롤과 동일하며 마지막 줄의 일부가 보이지 않을 경우 출력하지 않는다.
DT_END_ELLIPSIS 문자열 끝이 사각 영역을 넘을 경우 문자열은 자르고 생략 기호(...)을 대신 보여준다. 단어가 잘릴 경우는 생략 기호를 붙이지 않는다.
DT_EXPANDTABS 탭 문자를 확장하여 8문자 너비로 만든다.
DT_EXTERNALLEADING 일반적으로 폰트 높이에 External Leading은 제외되는데 이 플레그가 주어지면 폰트 높이에 External Leading을 포함시킨다.
DT_HIDEPREFIX 2000이상:&문자를 무시하며 &다음 문자에 밑줄이 그어지지 않는다.
DT_INTERNAL 시스템 폰트를 사용하여 텍스트 메트릭을 계산한다.
DT_LEFT 수평 왼쪽 정렬
DT_MODIFYSTRING 문자열을 출력된 모양대로 변경한다. DT_END_ELLIPSIS, DT_PATH_ELLIPSIS 플레그와 함꼐 사용되며 그 외의 경우는 아무런 효과가 없다.
DT_NOCLIP 클리핑없이 문자열을 출력한다. 그래서 문자열이 사각형 밖으로 벗어나도 자르지 않고 그냥 출력된다.
DT_NOFULLWIDTHCHARBREAK DBCS환경에서 자동 개행 방법을 SBCS와 동일하게 설정한다.
DT_NOPREFIX &문자를 그대로 출력한다.
DT_PATH_ELLIPSIS 문자열 끝이 사각 영역을 넘을 경우 문자열의 중간을 생략 기호로 바꾸어 사각 영역에 맞게 조정한다. 문자열 내부에 \문자가 있을 경우 마지막 \이후의 문자를 최대한 보존해 준다.
DT_PREFIXONLY 2000이상:&문자가 있는 위치에 밑줄만 출력한다. 텍스트는 출력되지 않는다.
DT_RIGHT 수평 오른쪽 정렬
DT_RTLREADING hdc에 선택된 폰트가 Hebrew 또는 Arabic 폰트인 경우 오른쪽에서 왼쪽으로 문자열을 출력한다.
DT_SINGLELINE 문자열을 무조건 한줄로만 출력한다. CR, LF코드가 있어도 개행되지 않는다.
DT_TABSTOP 탭 정지점을 설정한다. uFormat인수의 8~15비트(하위 워드의 상위 바이트)가 탭 정지점 설정에 사용되며 디폴트를 8문자이다.
DT_TOP 텍스트를 사각 영역의 윗쪽에 출력한다.
DT_VCENTER 수직 중앙 정렬한다.
DT_WORDBREAK 단어가 사각형의 오른쪽 변에 닿았을 경우 자동 개행한다. CR/LF 조합은 강제로 개행시킨다.
DT_WORD_ELLIPSIS 사각 영역을 넘을 경우 단어를 자르고 생략 기호를 붙인다.

 

 

 

 

 

그래픽 출력

COLORREF SetPixel(HDC hdc, int X, int Y, COLORREF crColor);

BOOL MoveToEx(HDC hdc, int X, int Y, LPPOINT lpPoint);

BOOL LineTo(HDC hdc, int nXEnd, int nYEnd);

BOOL Rectangle(HDC hdc, int nLeftRect, int nTopRect, int nRightRect, int nBottomRect);

BOOL Ellipse(HDC hdc, int nLeftRect, int nTopRect, int nRightRect, int nBottomRect);

 

 

LineTo함수는 CP(현재 좌표)에서부터 지정한 좌표까지 선을 그으며 CP를 끝점으로 이동시켜 준다.

MoveToEx는 CP를 지정한 좌표(x,y)로 이동시켜준다.  이동전의 CP좌표를 lpPoint에 대입해주는데 이전 CP값이 필요치 않는 경우 lpPoint에 NULL을 넘겨주면 된다.

 

(a,b) ~ (c,d) 까지 선을 긋고 싶다면

MoveToEx(hdc, a, b, NULL);

LineTo(hdc,c,d);

 

 

 

case WM_PAINT:
 hdc=BeginPaint(hWnd,&ps);
 MoveToEx(hdc,150,150,NULL);
 LineTo(hdc,180,200);
 Rectangle(hdc,200,100,250,180);
 Ellipse(hdc,200,200,250,280);
 EndPaint(hWnd,&ps);
 return 0;

 

메시지 박스는 조그만 별도의 윈도우를 열어서 사용자에게 정보를 전달해 주거나 질문을 하는 장치.

 

int MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);

 

▶hWnd : 부모 윈도우의 핸들. 메시지 박스의 이 윈도우의 모달 대화상자로 열린다. 부모 윈도우가 없을 경우 NULL로 지정할 수 있다.

▶lpText : 메시지 내용을 나타내는 널 종료 문자열. 이 문자열은 ANSI 문자열일 수도 있고 유니코드 문자열일 수도 있는데 어떤 포맷이라도 메시지 출력이 가능하다.

▶lpCaption : 메시지 박스의 타이틀 바에 나타날 문자열. NULL일 경우 디폴트로 Error(한글 윈도우즈에서는 오류)가 표시된다.

▶uType : 메시지 박스에 나타날 버튼의 종류와 아이콘 모양, 동작 방식을 지정한다. 다음 여러 그룹의 플래그 조합을 지정할 수 있다.

 

 

 


반응형

About

by 쑤기c

반응형