[WinAPI] MailSlot, 메일 슬롯 사용법

오늘은 프로세스간 통신 방법인 메일 슬롯 사용법에 대해서 알아보겠습니다. 메일 슬롯에 대해 약간의 설명을 하자면, 우체통과 비슷하다고 볼 수 있습니다.아래 그림과 같이 A가 B에게 편지를 보낸다고 할 때, A는 편지를 우체통에 넣고, B는 우체통에서 편지를 찾아가면 됩니다. 이 방식은 매우 편리해서 아래와 같이 A는 우체통에 편지를 여러번 집어 넣을 수 있고, B가 나중에 한번에 찾아갈 … Read more

[WinAPI] CreateMutex, 대화상자 중복 실행 방지

오늘은 간단하게 CreateMutex를 사용하여 중복 실행 방지를 알아보도록 하겠습니다.뮤텍스는 공유된 자원에 하나의 쓰레드만 접근할 수 있게 다른 쓰레드의 접근을 막는 방식중 하나입니다.이 방식을 사용하여 보통 중복 실행을 방지하는 기능으로 많이 만듭니다.MFC를 예제로 사용하는 방법을 알아보겠습니다. 프로젝트 생성 후 아래와 같이 “프로젝트명칭”App::IInitInstance()에 코딩해주세요 실행해 보시면 아래와 같이 중복 실행이 방지됩니다.

[WinAPI, Visual C++] DC 프린터에 출력하기, CPrintDialog, StartDoc, StartPage, EndPage, EndDoc

이 글을 보시기 전에 DC 그리기 모르시는 분들은 여기를 먼저 보시기 바랍니다. 이번 글에선 DC로 프린터 출력 하기를 해보겠습니다. 우선 MFC 프로젝트 생성후 버튼 하나 만들어주세요.DC를 프린트 하기전에 우선 출력할 프린터를 선택해야 합니다. CPrintDialog를 사용하면 출력할 프린터를 쉽게 선택할 수 있습니다.CPrintDialog를 사용하는 방법은 아래와 같습니다. 위 코드를 실행해 보면 아래와 같이 프린터를 선택할 수 있습니다. … Read more

[WinAPI] AlphaBlend, 투명 출력

오늘 알아볼 AlphaBlend 함수는 투명도를 출력하여 출력하는 함수 입니다.함수 원형은 아래와 같습니다. BLENDFUNCTION 구조체는 선언하여 아래와 같이 사용합니다. 예제 코드는 아래와 같습니다.CImage를 이용하여 Temp HDC에 저장하고, AlphaBlend를 이용하여 투명도를 조절하여 HDC에 출력합니다. 이미지를 출력하는 테스트 예제로 제가 좋아하는 가수, 아이유 사진으로 해봤습니다. 일반적인 BitBlt를 사용하면 아래와 같이 출력합니다. 하지만 BLENDFUNCTION에 투명도를 입력해서 AlphaBlend를 사용하면 아래와 … Read more

[WinAPI] 작업표시줄 아이콘 제거, 프로그램 투명하게 하기, GetWindowLong, SetWindowLong, SetLayeredWindowAttributes 활용

안녕하세요, 오늘은 작업표시줄의 아이콘을 제거하고, 프로그램을 투명하게 하는 방법을 알아보겠습니다.예제는 MFC로 하겠습니다. 1. 작업표시줄 아이콘 제거 MFC 프로젝트를 생성해주시고 확인 버튼을 더블 클릭 하신 뒤 아래와 같이 코딩합니다. 같이 코드를 짜서 실행하면 아래와 같이 작동합니다. 보시는 것처럼 좌측 하단에 MFC 아이콘이 작업표시줄에서는 사라집니다.저는 전/후 비교를 위해서 확인 버튼에 구현했지만, OnInitDialog에 하시면 대화상자가 생성되면서 아이콘이 제거 됩니다. 2. … Read more

[WinAPI] GetBitmapBits, SetBitmapBits 사용 예제

오늘은 GetBitmapBits과 SetBitmapBits을 알아보겠습니다. Bitmap에 실제 데이터를 읽어오고 데이터로 Bitmap을 설정하는 함수 입니다. HBITMAP에 대해 잘 모르시는 분들은 HBITMAP에 대한 개념을 익히시고 생성하는 법까지 알고 보시는 것을 추천합니다. 1. GetBitmapBits GetBitmapBits 함수가 성공하면 리턴 값은 버퍼에 복사 된 바이트 수입니다.  GetBitmapBits 함수가 실패하면 리턴 값은 0입니다. 2. SetBitmapBits SetBitmapBits 함수가 성공하면 리턴 값은 비트 맵 비트 설정에 사용 된 바이트 수입니다. SetBitmapBits 함수가 실패하면 리턴 값은 0입니다. … Read more

[WinAPI] 시리얼 통신 클래스

Visual C++에서 사용할 수 있는 시리얼 클래스  예전 회사에 입사했을 때, 인터넷에서 긁어서 처음 만들어본 클래스입니다. 너무 오래되서 어떻게 만들었는지 모르겠습니다.부모 윈도우 핸들을 넘겨서 메시지로 표시하는 방식입니다. 아래는 헤더 파일입니다. 아래는 cpp 파일 입니다. 옛날 소스라 stdafx.h가 포함되어 있네요. 2019에서는 pch.h로 하셔야 할겁니다.

[WinAPI] 특정 색 제외하고 표시 – TransparentBlt

해당 글을 보시기 전에 BitBlt에 대해 모르시면 이 글 읽어보시길 바랍니다. 오늘은 TransparentBlt에 대해 알아보겠습니다.보통 비트맵을 읽어 표시를 할 때 BitBlt를 많이 사용합니다. 해당 함수는 비트맵을 그대로 표시하기 때문에 대화상자에 표시할 때 아래와 같이 표시 됩니다. 비트맵을 표시를 할 때 특정 색을 표시하고 싶지 않은 경우가 있는데 위의 경우가 그렇습니다.그럴때 TransparentBlt를 사용하시면 됩니다. 아래의 비트맵을 다운받으셔서 리소스에 추가합니다. … Read more

[WinAPI] MFC, .wav 파일 재생하기

오늘은 간단하게 .wav 재생하는 방법을 알아보겠습니다.우선 여기에서 test.wav를 다운받아 줍니다. 아래와 같이 라이브러리와 헤더파일을 코딩합니다. 재생, 반복재생, 정지 코드는 아래와 같습니다.