[WinAPI] GetPrivateProfileString, WritePrivateProfileString

윈도우 프로그램에서 설정값을 저장하기 위한 방법으로 많이 쓰였던 방법 중에 INI파일에 설정 값을 저장하는 방법이 있습니다. 요새는 자주 사용하지 않는다고 하는데, 오래된 회사거나 하나의 솔루션을 오래 사용하고 있는 회사에서는 아직도 많이 쓰이는 방법입니다. 우선 코딩을 하기전에 메모장을 실행하여 아래와 같이 입력합니다. 이렇게 만들어준 메모장을 Set.ini, 유니코드로 우선 바탕화면에 저장합니다. 그리고 프로젝트 하나 생성 해주시고 Edit Box … Read more

[WinAPI] WaitForSingleObject, 쓰레드 동기화

Windows 운영체제에 의해 생성되는 커널 오브젝트의 상태는 두가지로 결정이 됩니다.Non-Signal과 Signal 상태가 있는데 프로세스가 생성 되면 Non-Signal이였다가 프로세스가 종료 되면 Signal로 변하게 되는 것입니다. 윈도우에서는 여러가지 핸들이 존재하는데 이를 이용하여 핸들의 커널 오브젝트 상태를 보고, 프로세스가 실행 중인지, 종료 중인지 판단 할 수 있습니다. 커널 오브젝트 상태를 확인하는 함수는 WaitForSingleObject이며 사용법은 아래와 같습니다. 프로젝트 하나 생성해 … Read more

[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] 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