Win API
-
활용 - 체크박스의 상태에 따라 도형 출력하기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 함수에 대한 설명은 아래와 같다. 소스 파일
-
GDI ObjectWin API/4. GDI 2021. 4. 1. 19:43
GDI오브젝트에는 펜, 브러시, 폰트, 비트맵, 팔레트, 리전이 있다. GDI오브젝트는 모두 핸들로 관리되므로, 우리는 다만 GDI 오브젝트를 생성하는 함수를 부르고, 이 함수가 리턴하는 핸들을 받아서 사용하기만 하면 된다. GDI오브젝트를 만들 때 핸들을 발급받으며, 선택하거나 삭제할 때는 이 핸들만 가지고 GDI오브젝트를 사용한다. GDI오브젝트란 그래픽 출력에 사용되는 도구를 뜻함. 선을 그을 때는 펜으로 그리며, 면은 브러시로 채우고 문자열을 출력할 때는 폰트를 사용한다. GDI오브젝트를 모아 놓은 것이 DC이며 GDI는 현재 DC에 선택되어 있는 GDI 오브젝트를 사용한다. 그래서 사용자는 그래픽을 그리기 전에 DC에 적절한 오브젝트를 선택함으로써 원하는 모양과 속성으로 그래픽을 출력할 수 있다..
-
WM_PAINTWin API/4. GDI 2021. 4. 1. 18:53
WM_PAINT 메시지를 이용해서 직사각형을 그려보자. 직사각형을 그릴 때는 Rectangle 함수를 이용해서 그리면 된다. 운영체제는 개별 윈도우의 화면을 보관해 주지는 않지만, 대신 윈도우의 일부가 지워졌다는 사실을 프로그램으로 즉각 알리며, 그 방법은 WM_PAINT 메시지를 보내주는 것이다. WM_PAINT메시지는 "너의 작업영역이 일부 지워졌으니까 빨리 다시 그려라" 라는 의미이다. 프로그램을 실행하고 드래그로 윈도우 창을 늘렸을 때, 크기가 변경하는데 크기가 변경됨에 따라서 다시 그려줘야 한다. 그럴 경우 WM_PAINT메시지가 발생한다. 화면으로 출력을 하기 위해서는 반드시 DC가 있어야 하며, DC를 얻는 방법에는 BeginPaint함수를 통해 얻을 수 있다. DC는 주로 하나의 윈도우와 ..
-
컨트롤의 활용 - 1인 채팅방 만들기 ( 엔터 키, 탭 키, 스크롤 기능 )Win API/3. Control 2021. 4. 1. 10:56
개발 환경은 Visual Studio 2008 이번 글에서 만들어볼 내용은 컨트롤의 기본적인 내용을 가지고 1인 채팅방을 만들어 볼 것이다. 아래는 이 프로그램의 완성된 내용의 결과 화면이다. 1. 기본 기능 만들기 소스 파일 위의 프로그램을 실행시키고, 글을 계속 입력하다보면 불편한 점이 나타난다. 스크롤에 관련한 것인데, 아래의 그림을 보자. 2. 스크롤 기능 만들기 위의 창을 보면 채팅창의 화면( 리스트 박스 )에서 입력한 글의 수가 채팅창 화면의 크기를 넘어서면, 스크롤의 기능이 활성화 되면 좋겠다. 위의 채팅창의 화면에서 18줄을 넘어서면, 스크롤의 기능이 활성화 되야 한다. 스크롤 기능을 만들기 위해서는 아래의 SetScrollPos 함수를 이용해야 한다. 아래 [그림 1]에서는 스크롤 바에서..