본문 바로가기

Programming

Vista 이후 OS에서 Mic, Speaker 볼륨 셋팅 Windows XP까지 사용하던 볼륨 조절 방법은 CMixer를 사용하는 방법입니다.CMixer를 통해서 볼륨 조절이 가능했습니다.Windows Vista와 Windows 7 이후는 CMixer로 볼륨 조절이 되지 않습니다.Vista부터 Endpoint Volume Controls라는 것이 추가되었습니다.MSDN의 예제를 통해서 볼륨을 조절하는 방법에 대해서 알아봤습니다. Visual Studio 2013을 열고 Win32 Project를 생성합니다.프로젝트 이름은 VolumeControl로 생성했습니다.Empty project 옵션에 체크하고 프로젝트를 생성합니다.먼저 관련된 모든 소스 파일은 아래 링크를 클릭하면 다운로드 받을 수 있습니다.Epvolume.h 파일을 하나 추가해주시고 다음과 같은 코드.. 더보기
파일명 변경하는 API 함수 목록 콘솔창을 연 상태에서 다음 명령어를 실행하면 다음과 같은 결과를 볼 수 있습니다. ren /? 간단하게 파일 이름을 변경할 수 있는 방법을 제공합니다.다음은 코드를 통해서 파일 이름을 변경하는 방법입니다.파일 이름을 변경하는 몇 가지 방법이 존재합니다.1. MFC의 CFile::Rename()을 활용하는 방법이 함수는 두 개의 LPCTSTR 타입의 인자를 전달받습니다.첫 번째는 lpszOldName이고, 두 번째가 lpszNewName입니다.사용법은 이전 파일 파일의 경로, 변경할 파일 경로를 전달하면 됩니다.이 메소드는 static 형식이기 때문에 클래스의 인스턴스가 필요하지 않습니다.다음과 같은 형태로 사용하면 됩니다. CFile::Rename(_T("OldName"), _T("NewName")); .. 더보기
Memory Mapped File(MMF)를 이용한 프로세스간 메모리 공유 Win32 이상의 환경에서는 프로세스의 주소 공간이 독립적으로 관리됩니다.프로세스의 주소 공간이 독립적이기 때문에 다른 프로세스의 주소 공간을 공유할 수 없습니다.A라는 프로세스의 0x1234라는 주소값은 B라는 프로세스의 0x1234와는 전혀 다른 공간입니다.이런 메모리 관리 구조는 OS를 좀 더 안정적이고 견고하게 만들었습니다.그렇지만 각각의 프로세스 사이에서 정보를 주고 받는 것이 어렵게 되었습니다.프로세스 사이에 정보를 공유하기 위해서 Memory Mapped File(MMF)이라는 방식을 사용합니다.이름 그대로 파일을 메모리에 맵핑하기 위해서 사용하는 기법입니다.간단하게 설명하자면, 파일을 열어서 해당 파일을 메모리에 맵핑시켜서 사용하는 것입니다.MMF를 이용해서 하드디스크의 파일을 프로세스의 .. 더보기
[DirectSound] 1. Wave 파일의 구조 DirectSound는 DirectX 중에서 음악의 재생 및 녹음과 같은 기능을 담당합니다.DirectSound를 하기 전에 기본적으로 wav 파일의 구조를 알아보겠습니다.간단하게 wav 파일은 헤더(Header) 정보 + PCM 데이터로 볼 수 있습니다.즉, 실제 소리에 대한 정보인 PCM에 헤더를 앞에 추가한 것입니다.역으로는 pcm 정보를 이용해서 wav를 만들 수도 있다는 의미입니다.그러기 위해서는 몇 가지 알아야할 사항이 있는데, Sampling Rate, 샘플당 바이트수, 채널 등의 정보가 필요합니다.이런 정보들이 wav 파일의 헤더에 들어가게 되는 겁니다.이런 정보들은 재생하는데 필요한 정보들입니다.CoolEdit나 Audition 등의 프로그램으로 wav를 열면 바로 열 수 있습니다.하지만.. 더보기
C++ REST SDK(Casablanca) 설치 방법 MS에서 제공하는 프로젝트의 하나인 REST SDK의 설치 방법입니다.Casablanca라는 코드명을 가진 프로젝트입니다.modern asynchronous C++ API 디자인을 사용하는 cloud-based client-server communication입니다.프로젝트에 대한 정보는 아래의 링크에서 확인이 가능합니다.https://casablanca.codeplex.com/이전 버전의 경우는 다운로드를 제공했지만 현재는 Nuget Package를 통해서 적용이 가능합니다.C++ REST SDK를 적용하는 방법입니다.먼저 Visual Studio 2013을 실행합니다.간단한 콘솔 프로젝트를 생성합니다.설정을 바꾸지 않고 프로젝트를 생성합니다.C++ REST SDK를 받기 위해서 임시로 생성하는 프로젝.. 더보기
특수한 폴더의 경로를 알아오기 Windows를 사용하다보면, 특수한 폴더들이 몇 군데 있습니다.일단 대표적인 게 Windows가 설치된 폴더, System 폴더가 있습니다.바탕화면 폴더, 폰트 폴더 등도 특수한 폴더에 속합니다.이러한 폴더 주소는 사용자마다 다를 수 있기 때문에 프로그래밍시에 직접 넣는 것은 위험할 수 있습니다.쉘 함수 중에 이런 특수한 폴더의 경로를 알아내는 함수가 존재합니다. HRESULT SHGetSpecialFolderLocation(HWND hwndOwner, int nFolder, PIDLIST_ABSOLUTE *ppidl) SHGetSpecialFolderLocation() 라는 함수입니다.첫 번째 인자는 미래를 위해서 예약된 인자이므로 NULL을 넣어줍니다.두 번째 인자가 가장 중요한 부분인데 원하는 폴.. 더보기
MFC 다이얼로그, SDI, MDI의 최소 크기(Size) 설정 MFC에서 프로젝트를 만들 때 SDI, MDI, 다이얼로그 중에 하나를 선택합니다.만들어진 창이 최소 크기나 최대 크기가 정해지면 좋을 때가 있습니다.버튼들이 배치가 되어있는데 창이 타이틀만 남겨놓고 줄어드는 것은 그리 좋아 보이지 않습니다.이 창들의 최소 크기를 정하는 방법을 알아보겠습니다.같은 방법으로 이 방법으로 최대 크기의 수정도 가능합니다.먼저 프로젝트를 생성하면 다음과 같이 MainFrm.h가 생깁니다.SDI, MDI에서는 MainFrm.h이지만 다이얼로그에서는 약간 다르게 생성이 됩니다.프로젝트명Dlg.h 라는 파일이 생기게 됩니다.각자 해당하는 파일을 엽니다.여기서는 SDI를 기준으로 설명하겠습니다.헤더 파일에 커서를 주면 좌측에 속성에 다음과 같이 나오게 됩니다.그럼 빨간색 네모 안의 아.. 더보기
파이썬(Python) 설치 방법 파이썬(Python)은 귀도 반 로섬이 발표한 언어입니다.쉽게 배울 수 있는 문법과 다양한 라이브러리가 존재하는 언어입니다.파이썬을 설치하는 방법은 다음과 같습니다.파이썬은 3 버전이 되면서 하위호환성을 지원하지 않기 때문에 2 버전을 설치하면 됩니다.2 버전으로 익힌 이후에 3 버전의 차이점을 익히면 됩니다.https://www.python.org/downloads/현재 다운로드가 가능한 2 버전은 2.7.10입니다.다운로드를 하고 설치를 진행합니다.Next를 누르고 원하는 경로를 선택합니다.python이 바로 실행이 되길 원하면 가장 하단으로 이동합니다. Add python.exe to Path의 X표시를 클릭해서 설치가 되게 합니다.Next를 누르면 설치가 진행됩니다.설치가 완료되면 python을 .. 더보기