-
[API]TextOutC/C++ 2015. 3. 12. 23:36
TextOut함수는 문자열을 출력해주는 함수이다.
BOOL TextOut(HDC hdc,int nXStart,int nYStart,LPCTSTR lpString, int cbString);
TextOut원형이다.
DC의 팬들인 hdc, 출력할 XY좌표, 출력할문자혹은 문자열, 출력할문자열의 길이
ex)TextOut(hdc,100,100,TEXT("HELLO WORLD"),11);
ex2)TCHAR *str = TEXT("HELLO WORLD");
TextOut(hdc,100,100,str,lstrlen(str));
이렇게하면 문자열의 길이를 신경쓰지않아도된다.
소스코드를 보자
#include <Windows.h> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); HINSTANCE g_hInst; LPCTSTR IpszClass = TEXT("First"); int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR IpszCmdParam, int nCmdShow) { HWND hWnd; WNDCLASS WndClass; MSG Message; 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 = IpszClass; WndClass.lpszMenuName = NULL; WndClass.style = CS_HREDRAW | CS_VREDRAW; RegisterClass(&WndClass); hWnd = CreateWindow(IpszClass, IpszClass, 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; switch (iMessage) { case WM_LBUTTONDOWN: hdc = GetDC(hWnd); TextOut(hdc, 100, 100, TEXT("HELLO WORLD"), 11); ReleaseDC(hWnd, hdc); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return (DefWindowProc(hWnd, iMessage, wParam, lParam)); }
WM_LBUTTONDOWN 메세지를 받아들이면 DC를구하고, 출력을시키는구조이다.
메세지루프에서 LBUTTON을 받아들이면 바로 출력된다.
처음엔 빈화면이지만 클릭이벤트를 주게되면 곧바로 출력이된다.
'C/C++' 카테고리의 다른 글
[API]MessageBox (0) 2015.03.12 [API]WM_PAINT (0) 2015.03.12 [API]WndProc (0) 2015.03.12 [API]Message Loop (0) 2015.03.12 API 기초(2) (0) 2015.03.12