BOOL Textout(HDC hdc,int nXstart,int nYstart,LPCTSTR lpString,int cbString);
화면에 출력하는 모든 함수들의 첫 번째 인수는 항상 hdc
(nXstart, nYstart) : 출력될 좌표.
lpString : 출력할 문자열을 담고 있는 문자열 포인터.
cbString : 출력할 문자열 길이.
cf)Textout 함수는 널 종료 문자열을 인식하지 않으므로 출력할 문자열의 길이를 인수로 밝혀야함. 그래서 문자 출력 할때마다 기찮으므로 lstrlen 함수를 함께 사용
TCHAR *str=TEXT("Beautiful Korea");
Textout(hdc,100,100,str,lstrlen(str));
--------------------또 다른 방법-------------
void MyTextOut(HDC hdc,int x,int y,LPCTSTR Text)
{
TextOut(hdc,x,y,Text,lstrlen(Text));
}
문자열 정렬 함수 SetTextAlign
UINT SetTextAlign(HDC hdc,UINT fmode);
fMode 값에 따라 hdc의 정렬상태가 변경 두개이상 플래그 가능(OR)
TA_TOP : 지정한 좌표가 상단 좌표가 된다.
TA_BOTTOM : 지정한 좌표가 하단 좌표가 된다.
TA_CENTER : 지정한 좌표가 수평 중앙 좌표가 된다.
TA_LEFT : 지정한 좌표가 수평 왼쪽 좌표가 된다.
TA_RIGHT : 지정한 좌표가 수평 오른쪽 좌표가 된다.
TA_UPDATECP : 지정한 좌표대신 CP를 사용하며 문자열 출력 후에 CP를 변경.
TA_NOUPDATECP : CP를 사용하지 않고 지정한 좌표를 사용하며 CP를 변경하지 않음.
ex)중앙 정렬
-------------------------------------
#include <windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HINSTANCE g_hInst;
LPCTSTR lpszClass=TEXT("First");
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance
,LPSTR lpszCmdParam,int nCmdShow)
{
HWND hWnd;
MSG Message;
WNDCLASS WndClass;
g_hInst=hInstance;
WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
WndClass.hInstance=hInstance;
WndClass.lpfnWndProc=WndProc;
WndClass.lpszClassName=lpszClass;
WndClass.lpszMenuName=NULL;
WndClass.style=CS_HREDRAW | CS_VREDRAW;
RegisterClass(&WndClass);
hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
NULL,(HMENU)NULL,hInstance,NULL);
ShowWindow(hWnd,nCmdShow);
while (GetMessage(&Message,NULL,0,0)) {
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return (int)Message.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{ HDC hdc;
PAINTSTRUCT ps;
switch (iMessage) {
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_PAINT:
hdc=BeginPaint(hWnd,&ps);
SetTextAlign(hdc,TA_CENTER);
TextOut(hdc,650,280,TEXT("first-reverse"),13);
TextOut(hdc,650,300,TEXT("first"),5);
TextOut(hdc,650,320,TEXT("reverse"),7);
EndPaint(hWnd,&ps);
return 0;
}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
-------------------------------------
cf) TextOut출력문은 오로지 문자열만 다루므로 정수나 실수를 출력하고 싶으면
sprintf ,wsprintf 를 이용
wsprintf : 실수를 서식화 할 수 없음
sprintf : 실수 가능
ex)
-------------------------------------
TCHAR str[128];
int a=85;
wsprintf(str,TEXT("%d"),a);
TextOut(hdc,10,10,str,lstrlen(str));
-------------------------------------
'프로그래밍 > API' 카테고리의 다른 글
WM_PAINT 메시지 (0) | 2011.01.09 |
---|---|
DC란?? (0) | 2011.01.09 |
FirstWindow (0) | 2011.01.09 |
기초중기초(윈도우 스타일) (0) | 2011.01.09 |
기초중기초(윈도우의 위치와 크기) (0) | 2011.01.09 |