Programming Language/Windows API24

caret 1. caret - 새로운 문자를 입력받기 위해 위치를 표시한 것을 말한다. 1) my.h 소스void my_rect(RECT *rt); void my_input(HWND hWnd, WPARAM wParam, LPTSTR lpString, int *cnt); void my_paint(HDC hdc, LPTSTR lpString, RECT *rect, int *cnt); 2) my.cpp 소스#include "stdafx.h" #include "caret.h" #include "my.h" void my_rect(RECT *rt) { rt->left = 0; rt->top = 20; rt->right = 1000; rt->bottom = 1000; } void my_input(HWND hWnd, WPARAM.. 2018. 8. 27.
keyboard[6] 1. 키보드 입력 시 문자열 입력 후 출력 1) my.h 소스void my_rect(RECT *rt); void my_input(HWND hWnd, WPARAM wParam, LPTSTR lpString, int *cnt); void my_draw(HDC hdc, LPTSTR lpString, RECT *rt, int *cnt); 2) my.cpp 소스#include "stdafx.h" #include "keyboard[6].h" #include "my.h" void my_rect(RECT *rt) { rt->left = 0; rt->top = 20; rt->right = 1000; rt->bottom = 1000; } void my_input(HWND hWnd, WPARAM wParam, LPTSTR .. 2018. 8. 27.
keyboard[5] 1. 키보드 입력 시 문자열 입력 후 출력 1) my.h 소스void my_input(HWND hWnd, WPARAM wParam, LPTSTR lpString, int *cnt); void my_paint(HDC hdc, TCHAR *lpString, int *cnt); 2) my.cpp 소스#include "stdafx.h" #include "keyboard[5].h" #include "my.h" void my_input(HWND hWnd, WPARAM wParam, LPTSTR lpString, int *cnt) { if (wParam == VK_BACK && *cnt >= 0) { //삭제가능한 문자가 존재할 때 backspace가 입력됬다면 --(*cnt); } else { lpString[(*.. 2018. 8. 27.
keyboard[4] 1. 키보드 입력 시 문자열 입력 후 출력 1) my.h 소스void my_initial(HDC hdc); void my_input(HWND hWnd, WPARAM wParam, LPTSTR lpString, int *cnt); void my_print(HDC hdc, LPTSTR lpString); 2) my.cpp 소스#include "stdafx.h" #include "keyboard[4].h" #include "my.h" //void my_initial(HDC hdc) { //TCHAR tmp[80]; // //_stprintf_s(tmp, _T("키보드로 입력하세요!!")); //TextOut(hdc, 0, 0, tmp, _tcslen(tmp)); //} void my_input(HWND hWn.. 2018. 8. 27.
keyboard[3] 1. 키보드 입력 시 문자열 입력 후 출력 1) my.h 소스void my_input(HDC hdc, WPARAM wParam, LPTSTR lpString, int *cnt); 2) my.cpp 소스#include "stdafx.h" #include "keyboard[3].h" #include "my.h" void my_input(HDC hdc, WPARAM wParam, LPTSTR lpString, int *cnt) { lpString[(*cnt)++] = wParam; lpString[*cnt] = NULL; TextOut(hdc, 0, 0, lpString, _tcslen(lpString)); } +) 소스설명 [1] LPTSTR lpString - Long Pointer 타입의 TCHAR St.. 2018. 8. 27.
keyboard[2] 1. 키보드에서 입력받은 값 1개 출력void myInput(HDC hdc, WPARAM wParam) { TCHAR str[100]; str[0] = wParam; //입력받은 값을 str[0]에 저장 str[1] = NULL; //문자열의 마지막을 나타내는 NULL TextOut(hdc, 0, 0, str, _tcslen(str)); } LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; HDC hdc; switch (message) { case WM_COMMAND: { int wmId = LOWORD(wParam); // 메뉴 선택을 구문 분석합니다. switch (wmId) .. 2018. 8. 27.
keyboard[1] 1. 키보드 입력 시 동작void inirect(RECT *rect) { rect->left = 200; rect->top = 200; rect->right = 400; rect->bottom = 400; } void myini(HDC hdc, RECT *rect) { TCHAR tmp[80]; _stprintf_s(tmp, _T("아무키나 입력하세요. ")); TextOut(hdc, 100, 10, tmp, _tcslen(tmp)); //DrawText(hdc, tmp, _tcslen(tmp), rect, DT_LEFT); } void myinput(HDC hdc, RECT *rect) { TCHAR tmp[80]; _stprintf_s(tmp, _T("짜잔!!! ")); TextOut(hdc, 100.. 2018. 8. 27.
키보드 메세지 처리 1. 키보드를 입력 시 - 윈도우 프로시저인 WinProc( )에 키보드 메세지, 가상키 값, 부가정보가 전달 - 참고 : WM 은 Window Message의 약자. 전달변수 전달내용 값 iMSG 키보드 메세지 WM_KEYDOWN WM_CHAR WM_KEYUP wParam 가상키 값 a, b, c ... 1, 2, 3 ... !, @, #, $ ... VK_BACK(Backspace) VK_RETURN(Enter) ... lParam 부가정보 키 반복횟수 확장 키 코드 이전 키 상태 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { PAINTSTRUCT ps; HDC hdc.. 2018. 8. 26.
TextOut(), DrawText() 1. 로또번호 출력 BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) { hInst = hInstance; // 인스턴스 핸들을 전역 변수에 저장합니다. HWND hWnd = CreateWindowW(szWindowClass, _T("최소화, 최대화가 없는 창입니다."), WS_OVERLAPPED | WS_SYSMENU | WS_THICKFRAME, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr); if (!hWnd) { return FALSE; } ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); return TRUE; } #include .. 2018. 8. 26.
기본구조 상세설명 // WindowsProject1.cpp: 응용 프로그램의 진입점을 정의합니다. // /* 윈도우프로그램의 기본구조 - 메인부분과 메세지 처리부분으로 나뉨 [WinMain(), WndProc()] - WinMain()은 윈도우 클래스 생성, 등록, 클래스를 기반으로 윈도우 생성 - 발생한 메세지는 큐에 저장, WndProc()에서 이 메세지를 하나씩 처리 - WinProc()은 처리할 메세지에 대해서만 작성, 나머지 메세지처리는 윈도우 커널에게 전달 - 문자열을 프로그램에서 사용할 때는 매크로_T( )를 이용하여 유니코드나 멀티바이트로 변환 */ #include "stdafx.h" #include "WindowsProject1.h" #include "PrintArea.h" #include "Keyboar.. 2018. 8. 25.
출력 #include "stdafx.h" #include "2A_demo1.h" #define MAX_LOADSTRING 100 // 전역 변수: HINSTANCE hInst; // 현재 인스턴스입니다. WCHAR szTitle[MAX_LOADSTRING]; // 제목 표시줄 텍스트입니다. WCHAR szWindowClass[MAX_LOADSTRING]; // 기본 창 클래스 이름입니다. // 이 코드 모듈에 들어 있는 함수의 정방향 선언입니다. ATOM MyRegisterClass(HINSTANCE hInstance); BOOL InitInstance(HINSTANCE, int); LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); INT_PTR CALLBACK .. 2018. 8. 25.
용어 1. hInstance(=handle instance) - 프로세스 ID (=프로그램을 일컫는 정수 값) - 프로그램 실행 시 시작되는 주소 값을 가직 있는 포인터 변수 2. hWnd(=handle window) - 윈도우의 핸들 번호를 저장해서 사용 - 하나의 프로그램에서 많은 양의 창을 띄울 수 있다. - 즉, 창의 번호(hWnd)로 구분하는 것이다. - 창의 번호는 캡션바, 버튼, 닫기, 최소화 등으로 구성되어 있다. 3. hdc(=handle device context) - device context : 모듈의 내용정보를 담고 있는 구조체 + 모듈은 하나의 윈도우(창)을 의미 + 내용정보는 폰트, 색상, 굵기, 무늬, 그리기, 시작위치 등을 의미 범주 - hInstance > hWnd > hdc .. 2018. 7. 14.