본문 바로가기

win32

MFC에 플래시(Flash) ActiveX 컨트롤 추가하기 최근 웹에서 플래시를 많이 걷어내는 추세입니다.보안 등 여러 문제가 많이 발생하기 때문에 최근에는 잘 사용하지 않는 방향으로 개발을 합니다.그래도 swf 파일 등을 MFC에서 출력하는 상황이 생깁니다.MFC에 Flash 컨트롤을 추가해서 swf 파일을 재생하는 방법입니다.Visual Studio 2015를 기준으로 설명하도록 하겠습니다.먼저 MFC 프로젝트를 생성합니다.간단하게 테스트하기 위해 다이얼로그 기반 프로젝트로 생성합니다. MFC 라이브러리를 static으로 사용하는 것 외에 다른 설정은 변경하지 않았습니다.리소스 뷰(Resource View)의 다이얼로그를 열고 ActiveX 컨트롤을 추가합니다. 다이얼로그 화면에서 마우스 오른쪽 클릭하면 메뉴가 표시됩니다.Insert ActiveX Contr.. 더보기
제어판의 전원 옵션 구현하기 제어판의 전원 옵션 메뉴에는 전원을 관리하기 위한 옵션들을 수정할 수 있습니다.기본적으로 균형 조정, 고성능, 절전의 옵션이 존재합니다. 일부 노트북이나 대기업 PC의 경우 다른 옵션이 있을 수도 있습니다.설정 변경에 들어가면 디스플레이 끄기 시간과 절전 모드로 진입하는 시간을 설정할 수 있습니다.그리고 고급 전원 관리 옵션 설정 변경(C)를 누르면 세부 설정이 가능합니다.이 설정을 직접 가져오고 수정할 수 있는 API가 제공됩니다.Power Management Reference는 아래 링크를 통해서 확인할 수 있습니다.https://msdn.microsoft.com/en-us/library/windows/desktop/aa373170(v=vs.85).aspx실제 값을 가져오기 위한 간단한 코드는 다음과.. 더보기
MFC에서 커스텀 리소스(Custom Resource) 사용 방법 MFC를 활용해서 개발할 경우 Resource View에서 리소스를 확인할 수 있습니다.비트맵이나 아이콘, 다이얼로그, 메뉴 등이 포함되어 있습니다.이런 타입은 MFC 자체에서 지원하는 리소스 형식입니다.지원하는 타입이 아닌 다른 타입의 리소스를 추가해서 사용하기 위해서는 커스텀 리소스를 사용해야 합니다.바이너리나 텍스트 파일 등을 추가해서 가져오는 것이 가능합니다.간단하게 텍스트 파일을 리소스에 추가하고 가져오는 방법입니다.먼저 Resource View로 이동해서 새로운 리소스를 추가합니다.프로젝트명.rc라고 되어 있는 부분에 마우스 오른쪽 클릭을 하면 Add resource 메뉴를 선택합니다.리소스를 추가할 수 있는 다이얼로그가 표시됩니다. 오른쪽에 있는 Import... 버튼을 클릭합니다.파일 선택.. 더보기
MFC에서 엔터(Enter), ESC 입력시 종료되는 문제 해결 방법 MFC에서 프로그램을 개발할 때 엔터나 ESC를 누를 경우 프로그램이 종료되는 문제가 존재합니다.개발을 MFC로 진행하면 누구나 한 번쯤은 경험하게 됩니다.이 문제를 해결하기 위해 다음과 같은 방법으로 처리하면 됩니다.1. PreTranslateMessage() 메소드 재정의(Override)다이얼로그 베이스의 프로젝트를 생성하면 해당 프로젝트명Dlg.cpp와 .h파일이 생성됩니다.해당 클래스의 PreTranslateMessage() 메소드를 오버라이딩하는 방법입니다.이 메소드는 메시지가 처리되기 전에 호출이 되는 함수입니다.여기서 키보드의 엔터와 ESC 메시지를 거르게 하면 됩니다.먼저 Class Wizard를 실행(Ctrl + Shift + X)합니다.Class name에는 Dlg가 뒤에 붙은 클래스.. 더보기
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 파일을 하나 추가해주시고 다음과 같은 코드.. 더보기
프로세스 목록 확인하기(작업 관리자) 작업 관리자는 현재 실행 중인 프로세스의 목록을 보여줍니다.작업 관리자와 유사한 형태로 현재 실행 중인 윈도우 목록을 보여주는 방법은 다음과 같습니다.군더더기 코드를 없애기 위해서 콘솔 프로젝트로 작성합니다.창의 타이틀, 파일명, PID 정도를 추출해서 출력하겠습니다.이것은 일단 EnumWindows()라는 API함수를 이용해서 가능합니다.이 함수는 현재 실행되는 윈도우들의 핸들값을 전부 하나씩 첫번째 인자인 함수에 보내줍니다.그리고 실제 처리는 EnumWindowsProc(이름은 바꿔도 됨)에서 해주게 됩니다. #include #include #include #include using namespace std; BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lPa.. 더보기
API, MFC에서 사용하는 변수형 API, MFC를 처음 공부하면 생소한 변수 타입을 자주 접하게 됩니다. API, MFC에서 주로 사용되는 변수 타입은 다음과 같습니다.BOOL기존의 bool(true, false의 값을 가짐)BSTR32비트 문자 포인터BYTE8비트 부호 없는(unsigned) 정수COLORREF색 지정에 사용되는 32비트값(RGB매크로 사용으로 생성 가능)DWORD32비트 부호 없는(unsigned) 정수, 세그먼트 어드레스 / 옵셋LONG32비트 부호 있는 정수LPARAM윈도우 프로시저 또는 콜백 함수의 인수로서 넘어가는 32비트 값LPCSTR문자열 32비트 포인터(const 속성)LPSTR문자열 32비트 포인터LPCTSTR정수문자열로의 32비트 포인터(Unicode 지원)LPTSTR문자열로의 32비트 포인터(Uni.. 더보기