본문 바로가기

프로그래밍/API

문자열 출력



 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