API - 키보드 입력
소스코드
#include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
HINSTANCE g_hInst;
LPCTSTR lpszClass = TEXT("Key");
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_CROSS);
WndClass.hIcon = LoadIcon(NULL, IDI_ERROR);
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 | WS_VSCROLL | WS_HSCROLL,
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;
static TCHAR str[256];
int len;
switch (iMessage) {
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_CHAR:
len = lstrlen(str);
str[len] = (TCHAR) wParam;
str[len + 1] = 0;
InvalidateRect(hWnd, NULL, FALSE);
return 0;
case WM_PAINT:
hdc = BeginPaint(hWnd, & ps);
TextOut(hdc, 100, 100, str, lstrlen(str));
EndPaint(hWnd, & ps);
return 0;
}
return (DefWindowProc(hWnd, iMessage, wParam, lParam));
}
- static TCHAR str[256];
- case WM_CHAR: len=lstrlen(str); str[len]=(TCHAR)wParam; str[len+1]=0;
- InvalidateRect(hWnd,NULL,FALSE); return 0;
- case WM_PAINT: hdc=BeginPaint(hWnd, &ps); TextOut(hdc, 100, 100, str, lstrlen(str)); EndPaint(hWnd, &ps);
실행결과
migrated from https://boongubbang.tistory.com/3