<div>#define _CRT_SECURE_NO_WARNINGS<br>#include <windows.h><br>#include <tchar.h><br>#include <stdio.h></div> <div><br>HINSTANCE g_hInst;<br>LPCTSTR lpszClass = TEXT("Window class Name");<br>LPCTSTR lpszWindowName = TEXT("windows program 2-1");</div> <div>LRESULT CALLBACK WndProc(HWND hWND, UINT Umsg, WPARAM wParam, LPARAM IParam);</div> <div>int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevlnstance, LPSTR lpszCmdParam, int nCmdShow)<br>{<br> HWND hWnd;<br> MSG Message;<br> WNDCLASSEX WndClass;<br> g_hInst = hInstance;</div> <div> WndClass.cbSize = sizeof(WndClass);<br> WndClass.style = CS_HREDRAW | CS_VREDRAW;<br> WndClass.lpfnWndProc = (WNDPROC)WndProc;<br> WndClass.cbClsExtra = 0;<br> WndClass.cbWndExtra = 0;<br> WndClass.hInstance = hInstance;<br> WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);<br> WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);<br> WndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);<br> WndClass.lpszMenuName = NULL;<br> WndClass.lpszClassName = lpszClass;<br> WndClass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);</div> <div> RegisterClassEx(&WndClass);</div> <div> hWnd = CreateWindow(lpszClass, lpszWindowName, WS_OVERLAPPED | WS_SYSMENU, 0, 0, 800, 600, NULL, (HMENU)NULL, hInstance, NULL);</div> <div> ShowWindow(hWnd, nCmdShow);<br> UpdateWindow(hWnd);</div> <div> while (GetMessage(&Message, 0, 0, 0)) {<br> TranslateMessage(&Message);<br> DispatchMessage(&Message);<br> }<br> return Message.wParam;<br>}</div> <div><br>LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {<br> PAINTSTRUCT ps;<br> HDC hDC;</div> <div> static SIZE size;<br> static char str[10][81];<br> static char temp[10][81];<br> static int count = 0;<br> static int yPos, xPos;<br> static int line;<br> static int temp_line, temp_count;<br> static int i = 0;<br> static int n = 0;<br> static int j = 0;<br><br> static int cxFont, cyFont;<br> switch (uMsg) {<br> case WM_CREATE:</div> <div> yPos = 0;<br> xPos = 0;<br> line = 0;<br> count = 0;<br> temp_line = 0;<br> temp_count = 0;<br> CreateCaret(hWnd, NULL, 3, 15);<br> ShowCaret(hWnd);</div> <div><br> break;<br> case WM_CHAR:<br> if (wParam == VK_BACK) {<br> if (count > 0)<br> count--;<br> else if (line > 0 && count == 0) {<br> line--;<br> count = strlen(str[line]);<br> yPos -= 20;<br> temp_line--;</div> <div> }<br> }<br> else if (wParam == VK_RETURN) {<br> if (line < 9) {<br> yPos += 20;<br> count = 0;<br> line++;</div> <div> temp_line++;<br> }<br> }<br> <br><br> else str[line][count++] = wParam;<br> str[line][count] = '\0';<br> InvalidateRect(hWnd, NULL, TRUE);<br> break;<br> case WM_KEYDOWN:<br> switch (wParam)<br> {<br> case VK_LEFT:<br> xPos -= 5;<br> break;<br> case VK_RIGHT:<br> xPos += 5;<br> break;<br> case VK_UP:<br> yPos -= 20;</div> <div> break;<br> case VK_DOWN:<br> yPos += 20;</div> <div> break;<br> case VK_DELETE:</div> <div> for (j = 0; j < 2; j++) {<br> for (i = 0; i < count; ++i) {<br> str[line - j][strlen(str[line - j]) + i] = str[line][i];<br> }<br> }<br> --line;<br> str[line][strlen(str[line])] = '\0';<br> count = strlen(str[line]);<br> yPos -= 20;<br> xPos -= count * 8;<br> <br> break;<br> }<br> InvalidateRect(hWnd, NULL, TRUE);<br> break;<br> case WM_PAINT:<br> hDC = BeginPaint(hWnd, &ps);<br> GetTextExtentPoint(hDC, str[line], strlen(str[line]), &size);<br> for (i = 0; i < line + 1; ++i)<br> TextOut(hDC, 0, i * 20, str[i], strlen(str[i]));</div> <div> SetCaretPos(xPos + size.cx, yPos);<br> EndPaint(hWnd, &ps);<br> break;</div> <div><br> case WM_DESTROY:<br> HideCaret(hWnd);<br> DestroyCaret();<br> PostQuitMessage(0);<br> break;<br> }<br> return DefWindowProc(hWnd, uMsg, wParam, lParam);<br>}</div> <div>여기서 방향키로 캐럿을 움직이면 캐럿 위치에 입력하는 글자가 나오게 하고싶은데 어떻게 해야되나요ㅠㅠ VK_UP,DOWN,LEFT,RIGHT에서 캐럿 움직이는건 했는데..입력하면 글자가 끝에서 부터 나오네요..</div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.