Win API/4. GDI
-
활용 - 그림판 만들기Win API/4. GDI 2021. 4. 2. 22:28
개발 환경은 Visual Studio 2008 아래의 내용에서 마우스를 이용해서 그림 그리는 내용을 가지고 와서 만들 것이다. designatedroom87.tistory.com/420?category=937044 MoveToEx & LineTo 함수를 이용한 선 그리기 개발 환경은 Visual Studio 2008 위의 두 함수를 이용해서 간단한 직선을 그려 보자. 프로그램 실행결과 소스 파일 이번에는 마우스를 활용해서 그림을 그려보자. 마우스가 눌려있는 상태에서 마우스 designatedroom87.tistory.com 아래와 같이 UI를 만들도록 하자. 왼쪽 영역은 그림을 그릴 공간이며, 오른쪽의 각 각의 폰트 정보 리스트 박스에서 목록을 선택하면 그에 맞게 폰트의 정보를 변경하면 된다. 프로그램 ..
-
활용 - 메모장 만들기 ( 자동 개행, 엔터 키, 백 스페이스 바 기능 )Win API/4. GDI 2021. 4. 2. 12:20
개발 환경은 Visual Studio 2008 메모장을 만들기 전에, 아래의 프로그램을 통해 구현의 방향을 잡아보자. 프로그램에 대한 분석은 밑에서 하도록 하자. 분석을 해보자. 이 프로그램의 핵심은 키보드로 부터 문자를 입력받아 화면으로 출력한다. 입력된 키는 str버퍼에 누적되며 누적된 문자열을 WM_PAINT에서 출력하도록 하기 위해 작업 영역을 무효화한다. 이전 입력된 문자열이 누적되어 계속 출력되므로 작업 영역을 지울 필요가 없어 bErase는 FALSE로 주었다. InvalidateRect 호출문을 삭제하면 키보드를 눌러도 화면으로 문자열이 출력되지 않는다. 실행 결과는 아래와 같이 키보드를 누를 때마다 작업 영역이 무효화되며 눌러진 키가 화면으로 출력된다. 내부적인 변화에 의해 화면이 다시 ..
-
OS로부터 실시간으로 현재 시각 얻어오기Win API/4. GDI 2021. 4. 2. 11:58
먼저, 운영체제로부터 현재 시각을 얻어 오는 프로그램을 작성해보자. 시각의 출력은 TextOut 함수를 이용하도록 하자. 소스 파일 그리고 우리는 실시간으로 계속 시간을 얻어와야 하는데, 위의 프로그램에서는 한 번만 시각을 얻어온다. 무언가 계속 동작하라고 하는 키워드가 필요한데, 이는 WM_TIMER라는 메시지를 이용해서 하면 된다. 우선 이 WM_TIMER에 대한 사용법을 알아보자. 예제로 만들어볼 내용은 1초당 WM_TIMER 메시지를 발생시켜 WM_TIMER 메시지의 호출 회수를 출력하는 것이다. 아래는 SetTimer 함수에 대한 설명이다. 아래는 KillTimer 함수에 대한 설명이다. 프로그램 실행결과 소스 파일 위의 내용을 바탕으로 OS로부터 실시간으로 현재 시각을 얻어오는 프로그램을 작성..
-
MoveToEx & LineTo 함수를 이용한 선 그리기Win API/4. GDI 2021. 4. 2. 10:58
개발 환경은 Visual Studio 2008 위의 두 함수를 이용해서 간단한 직선을 그려 보자. 아래는 MoveToEx함수와 LineTo 함수에 대한 설명이다. 프로그램 실행결과 소스 파일 이번에는 마우스를 활용해서 그림을 그려보자. 마우스가 눌려있는 상태에서 마우스를 움직이면 선이 그려지며, 마우스가 눌려있는 상태에서 떼지면 그림 그리는 동작이 끝난다. 쉽게 설명해서 마우스 좌클릭된 상태에서 그림이 그려지고 마우스 좌클릭이 해제되면 그림 그리기가 종료 된다. 여기서 마우스가 좌클릭 상태인지 좌클릭 해제가 된 상태인지를 판단할 변수가 하나 필요한데 bool 변수로 두면 된다. 마우스의 눌림 상태, 이동 상태, 떼짐 상태는 다음의 메시지를 이용하면 된다. WM_LBUTTONDOWN, WM_MOUSEMOV..
-
활용 - 체크박스의 상태에 따라 도형 출력하기Win API/4. GDI 2021. 4. 2. 10:35
개발 환경은 Visual Studio 2008 우리가 만드려는 프로그램의 기본 UI는 아래와 같다. 그리고 아래는 "Draw Ellipse?" 체크 박스의 상태에 따라 다른 도형들이 그려진다. 그리고"Good bye Message?" 체크 박스를 체크 상태로 두고 윈도우 창을 종료하면다음과 같은 메시지 창을 띄워 보자. 프로그램 설계 두 개의 체크 박스가 필요하다. 첫 번째 체크 박스의 상태에 따라 직사각형 혹은 타원이 그려져야 하므로 이를 기억할 변수가 하나 필요하다. 그리고 도형을 그리는 작업은 WM_PAINT 메시지에서 진행하면 된다. 윈도우 창이 종료될 때 메시지를 띄울 때는 WM_WM_DESTROY 메시지에서 처리를 하면 된다. 소스 파일
-
활용 - 정사각형들을 화면 크기에 맞게 배치하기Win API/4. GDI 2021. 4. 1. 21:12
SelectObject함수를 활용해서 각 정사각형들의 테두리 색과 채움색이 전부 다르다는 조건을 붙이자. 즉, 다음과 같은 실행결과가 나와야 한다. 사각형을 그리는 함수는 Rectangle 함수를 이용할 것이다. 이 함수의 매개변수는 렌더할 사각형의 좌측상단점과 우측하단점을 필요로 한다. 그렇기 때문에, 이 좌표들을 가지고 작업을 해야할 필요가 있다. 일단 정사각형을 여러 개를 그려야 하므로, 그리는 순서를 먼저 생각해보자. 위의 각 정사각형들을 하나의 이차원 배열로 생각하면 행을 기준으로 열을 탐색하는 방향으로 생각을 해서 그려보자. 좌표로 생각하면 초기위치를 ( 0, 0 )으로 잡고 정사각형의 변을 100으로 두면 첫 번째 정사각형의 렌더할 좌표는 좌측상단( 0,0) 우측하단( 0 + 100, 0 +..
-
TextOut - 문자열 출력 함수Win API/4. GDI 2021. 4. 1. 20:23
개발 환경은 Visual Studio 2008 TextOut 함수를 이용해서 아래와 같이 윈도우 창에 문자열을 출력해보자. 아래는 TextOut 함수에 대한 설명이다. 소스 파일 아래의 내용은 폰트를 만들어서 출력하는 내용이다. 아래는 CreateFont 함수에 대한 설명이다. 소스 파일 이번에는 아래와 같이 색상을 추가해보자. SetTextColor 함수와 SetBkColor 함수 SetBkMode 함수에 대한 설명은 아래와 같다. 소스 파일