[WinAPI] HDC 3 – 더블 버퍼링(Double Buffering)

안녕하세요 오늘은 더블버퍼링에 대해 알아보겠습니다. 더블 버퍼링을 사용하는 이유와 개념은 이 사이트에서 설명을 잘 해놓았으니 참고해주시길 바랍니다. 더블버퍼링은 결국 화면에 실시간으로 그려지는 과정을 보는게 아니라메모리에 그려진 결과물을 통으로 copy하여 결과물만 보는 겁니다.그려야할 오브젝트가 많거나, 비트맵 이미지를 사용하는 경우 작업에 시간이 걸려 화면이 깜빡이므로 더블 버퍼링을 이용하는 경우가 많습니다. 이 글에서는 더블 버퍼링을 이용하여, 간단히 사각형을 그려보도록 하겠습니다. MFC … Read more

[WinAPI] 특정 색상 투명하게 처리(LWA_COLORKEY)

오늘은 대화상자의 특정 색을 투명하게 처리하겠습니다. 결론만 말씀 드리면 제일 핵심적인 코드는 아래와 같습니다. 이 속성을 설정 하면 RGB(0, 255, 0)은 표시하지 않고 투명하게 처리 됩니다.저는 이번 글에서 위 코드를 이용하여 게임 캐릭터가 걸어다니는 모습을 어떻게 표시하는지 알아보고자 합니다.일반적인 도트 게임에서는 게임 캐릭터의 움직임이 리소스로 모두 그려져 있습니다.아래와 같이 게임 캐릭터가 있다고 봅시다. 캐릭터가 정지해 … Read more

[WinAPI] Clipboard, 클립보드

오늘은 클립보드에 대해서 배워보겠습니다. 클립보드에대한 개념과 설명은 구글에서 찾아서 공부하세요. 이 글에서는 int형 변수의 값을 클립보드로 복사하고, 클립보드에서 다시 가져와서 표시하는 것만 해보겠습니다. 프로젝트를 하나 만들어 아래와 같이 Edit Control과 Static Control을 만들어 줍니다. 리소스의 컨트롤 변수를 아래와 같이 만들어 줍니다. Copy Clipboard 버튼을 더블클릭해서 아래와 같이 코딩합니다. Paste 버튼을 더블클릭해서 아래와 같이 코딩합니다. 실행 … Read more

[WinAPI] (파일첨부)WinSock2를 이용한 소켓 예제 ( 비동기 방식 – 클라이언트 )

서버를 만드는 방식은 여기를 참고해주세요 오늘은 클라이언트를 만들어 보도록 하겠습니다. MFC 프로젝트를 아래와 같이 하나 추가해 주세요. stdafx.h 맨 위에 아래와 같이 define을 해줍니다. 대화상자 헤더파일에 아래와 같이 SOCKET 변수를 추가합니다. 리소스 뷰에서 연결, 보내기, 종료 버튼을 생성 합니다. ( 더블 클릭하여 이벤트 처리 함수까지 생성하게 합니다. ) 연결 버튼 이벤트 함수에 아래와 같이 코딩합니다. 클라이언트가 접속을 완료하고 패킷을 … Read more

[WinAPI] WinSock2를 이용한 소켓 예제 ( 비동기 방식 – 서버 )

소켓 프로그래밍의 전반적인 개념은 이 블로그를 참고해주세요.동기 방식 소켓 프로그래밍은 여기를 참고해주시길 바랍니다. 오늘은 WinSock2를 이용해서 비동기 소켓 프로그래밍을 해보겠습니다. 비동기 방식은 객체 지향 프로그램에 적합하므로 이번에는 MFC로 만들어 보겠습니다. 서버를 만들기 위해 아래와 같이 MFC 프로젝트를 추가합니다. stdafx.h 맨 위에 아래와 같이 define을 해줍니다. 대화상자 헤더파일에 아래와 같이 SOCKET 변수를 추가합니다. 리소스 뷰에서 생성, 보내기, 종료 버튼을 생성 합니다. ( … Read more

[WinAPI] WinSock2를 이용한 소켓 예제 ( 동기 방식 )

소켓 프로그래밍의 전반적인 개념은 이 블로그를 참고해주세요. 오늘은 WinSock2를 이용해서 소켓 프로그래밍을 해보겠습니다.소켓 프로그래밍에 대한 개념은 위 링크를 보고 하시길 바랍니다. 찾아본 블로그 중에 제일 정리가 잘 되어 있습니다. 소켓 프로그래밍 방식에는 동기, 비동기 방식이 있습니다.동기(Synchronous) 방식은 요청과 결과가 동기된 방식이고, 비동기(Asynchronous) 방식은 요청과 결과가 동기되지 않은 방식입니다. 예를 들어 콜센터에서 일하는 직원으로 설명하겠습니다. 콜센터의 직원에게 … Read more

[WinAPI] HCURSOR 사용법

오늘은 마우스 커서를 바꾸는 방법을 알아보겠습니다. 을 알아보겠습니다. 우선 그전에 아래 Cursor.zip 파일을 다운받아서 압축 해제 후 res 폴더에 넣어주세요. 그리고 리소스 뷰에서 3개의 커서 파일을 추가해줍니다. 각 리소스의 아이디는 색에 맞게 IDC_CURSOR_RED, IDC_CURSOR_GREEN, IDC_CURSOR_BLUE로설정합니다. 1. 대화상자 내에서만 커서 바꾸는 법아래와 같이 버튼 하나를 만든 후 더블클릭으로 이벤트 처리 함수를 만들어줍니다. 헤더파일에 대화상자 내에 표시할 HCURSOR m_hCursorIn, 그리고 BOOL m_bMouseSet을 선언해 줍니다. OnInitDialog에 아래와 같이 … Read more

[WinAPI] CImage를 이용하여 Bitmap 이미지 표시

안녕하세요 오늘은 CImage를 이용하여 BITMAP 이미지를 대화상자에 표시하도록 해보겠습니다. 비트맵 이미지를 표시하는 방법은 위 두가지 방법 모두 알아보겠습니다. 그전에 아래와 같이 Static Control을 추가하여 ID를 IDC_STATIC_DISP로 설정하고 컨트롤 변수로 m_stDisp로 설정합니다. 저는 강아지 이미지로 해보겠습니다. 1. 이미지 파일을 읽어서 표시 확인 버튼을 더블 클릭하신 후 아래와 같이 코딩합니다. 저같은 경우 bmp 파일을 로드할때 상대 경로를 입력했지만 아래와 … Read more

[WinAPI] HDC 2 – HPEN, HBRUSH 사용하기

이전 글을 안보신 분들은 꼭 봐주세요. 오늘은 저번 글에 이어서, HPEN과 HBRUSH를 이용하여 도형의 선의 색, 굵기, 배경색을 변경해보도록 하겠습니다.도형의 선과 굵기, 색상을 변경하기 위해선 HEPN을 사용해야 합니다. 빨간색의 굵기가 3인 펜을 생성하기 위해 아래와 같이 HPEN을 생성 합니다. 이 펜을 DC에 사용하기 위해 아래와 같이 선택합니다. 펜을 다 사용했으면 기존의 HPEN을 선택 후 지워줍니다. 위의 과정을 … Read more

[WinAPI] HDC 1 – 사각형, 원, 다각형, 선 그리기

오늘은 HDC를 이용하여 사각형, 원, 다각형을 그려보도록 하겠습니다. 만들어보기 전에 윈도우에서 좌표 계산 방법은 아래와 같습니다.x좌표는 왼쪽에서 오른쪽으로 숫자가 증가하고,y좌표는 일반적인 2차원 좌표와 반대로 위에서 아래로 숫자가 증가하는 방식 입니다. 좌표를 유의해 주시고, 이제 만들어 보겠습니다. 프로젝트를 하나 생성해 주시고 아래 그림과 같이 Static Control을 만들어서 속성을 설정합니다. 그리고 확인 버튼을 더블클릭 한 후 아래와 같이 구현합니다. 위 … Read more