[C++ STL] Vector 사용 예제

1. vector 컨테이너 표준 시퀀스 컨테이너 : 원소가 자신만의 insert 위치(순서)를 가지는 컨테이너 (선형) ( vector, deque, list ) 배열 기반 컨테이너 : 데이터 여러 개가 하나의 메모리 단위에 저장 ( vector, deque ) 노드 기반 컨테이너 : 각각의 데이터를 메모리 단위에 저장 ( list, set, multiset, map, multimap ) 표준 연관 컨테이너 : 저장되는 원소가 삽입 순서와 달라도 특정 정렬 기준에 의해 … Read more

[C++ STL] list 컨테이너

1. 들어가기 앞서.. 컨테이너는 같은 타입을 관리할 목적으로 만들어진 클래스 2. list 컨테이너 표준 시퀀스 컨테이너 : 원소가 자신만의 insert 위치(순서)를 가지는 컨테이너 (선형) ( vector, deque, list ) 노드 기반 컨테이너 : 각각의 데이터를 메모리 단위에 저장 ( list, set, multiset, map, multimap ) 표준 연관 컨테이너 : 저장되는 원소가 삽입 순서와 달라도 특정 정렬 기준에 의해 자동 정렬(비선형) … Read more

[C++ STL] Lambda, 람다

1. 람다(Lambda), 이름없는 함수 기존에는 find_if, sort 등의 STL의 알고리즘 사용 시, 함수 객체를 정의해야 했는데 함수 객체 정의를 할 필요가 없어졌음 2. 람다의 기본 사용 방법 3. 람다 기본 사용 예시 4. 파라미터 예시 람다는 일반 함수 처럼 파라미터를 정의할 수 있음 5. 반환값 예시 람다는 반환값을 넘길 수 있음, 명시적, 암묵적 둘 다 … Read more

[C++ STL] auto

이번 글에서는 auto에 대해 설명 드리겠습니다. 1. 컴파일 시, 형을 결정하는 ‘auto’ auto는 변수를 초기화 할때 값에 따라서 자동으로 형을 결정.auto는 지역 변수로만 가능, 멤버 변수, 전역 변수, 인자로 사용 불가능. 당연히 포인터나 참조 변수도 가능 구조체 또한 가능 클래스 또한 가능(옳은 코드는 아님) 2. auto 요약 3. 전체 코드

[WinAPI] SetWindowsHookEx, UnhookWindowsHookEx 키보드 마우스 후킹

오늘은 Callback 함수를 이용하여 키보드 마우스를 후킹하는 방법을 알아보도록 하겠습니다.후킹 개념은 여기를 참고해주시기 바랍니다. 간단하게 설명하자면 A->B의 순서로 호출되는 함수를 A->C->B로 만드는 겁니다. 저는 윈도우에서 제공하는 후킹 함수로, 키보드 마우스를 후킹을 해볼겁니다. 프로젝트 하나 생성해주시고, 헤더파일에 아래와 같이 변수와 함수를 선언해주세요. SetHook에는 아래와 같이 코딩해주세요 SetWindowsHookEx에 후킹할 콜백 함수들을 등록합니다. UnHook에는 아래와 같이 코딩해주세요. 후킹을 … Read more

[MFC] 대화상자 메뉴 만들기

오늘은 아래 그림과 같이 mfc 대화상자에 메뉴를 만들어 보겠습니다. 대화상자 프로젝트를 만들어 주시고, 아래와 같이 리소스를 추가하여 메뉴를 만들어 줍니다. 위 작업을 하시면 보시는 것과 같이 메뉴가 추가됩니다. 메뉴도 추가 해보고 메뉴 아이디도 바꿔봅니다. 각각의 메뉴에도 아이디를 입력해 줍니다. 그리고 대화상자 속성에서 Menu에 방금 만들어준 메뉴 리소스의 ID를 입력합니다. 이 상태로 실행 시켜 보면 대화상자에 메뉴가 … Read more

[WinAPI] EnumWindows, 응용프로그램 목록 얻기

윈도우에서는 수많은 응용프로그램들이 실행 되어 있습니다. 사용자가 조작하는 프로그램 말고도, 백그라운드에서 작업하고 있는 프로세스들도 많이 있죠. 현재 실행 되어 있는 프로세스의 목록을, 작업 표시줄을 보면 알 수 있습니다. 위와 똑같이는 아니더라도 응용프로그램 목록을 얻어오려면 어떻게 해야할까요??EnumWindows 함수를 사용하시면 됩니다. EnumWindows 사용하기 전 Callback 함수를 선언합니다. TRUE를 반환하면 그 다음 HWND를 검색하고, FALSE을 반환하면 Callback 함수 … Read more

[WinAPI] EnumDisplayMonitors, 다중 모니터 정보 얻기.

원래 Callback 함수에 대해 글을 쓰려했는데, 공부 스타일이 예제를 먼저 보고 이해하는게 좋을 것 같아 Callback 예제 함수를 소개하고자 합니다.간단한 Callback 개념은 여기를 참고해주세요. Callback 함수를 아래와 같이 정의 합니다. 그리고 아래와 같이 EnumDisplayMonitors함수에 콜백함수를 인자로 전달하여 호출합니다. 제 PC의 모니터는 2대 이므로 EnumDisplayMonitors를 호출하면 MonitorEnumProc 함수가 2회 호출 됩니다.GetMonitorInfo를 사용하면 콜백된 모니터의 핸들에서 정보를 얻을 수 있습니다.MonitorEnumProc에 … Read more

[MFC] WM_COPYDATA

저번에 SendMessage와 PostMessage에 대해 글을 썼었습니다. 몇 번 사용해보시면 알겠지만 사용자 메시지를 정의하여 SendMessage와 PostMessage로는 많고 다양한 데이터를 보낼 수 없습니다. 그럴 때는 WM_COPYDATA를 사용하여 구조체를 전송하면 프로세스간 통신에서 데이터를 쉽게 보낼 수 있습니다. 대화 상자를 하나 생성해 주시고 아래와 같이 Static과 Edit Control을 만들어 줍니다. Static Control은 m_stMyHwnd로, Edit Control은 m_edTargetHwnd로 선언해줍니다. 그리고 OnInitDialog에 … Read more

[WinAPI] MFC를 이용한 Registry 코딩

안녕하세요 저번 글에서 프로그램에서 설정을 ini로 저장하는 방법을 해봤었는데, 이번엔 레지스트리를 만들어보는 것을 해보겠습니다. 윈도우 + R키를 눌러 Regedit를 입력하여 레지스트리 편집기를 실행시켜 봅니다. 아래 이미지처럼 실행 되면 됩니다. 이번 글에서는 제일 많이 사용하고 기본적인 HKEY_LOCAL_MACHINE에 TEST_REG를 만들어 보겠습니다. 프로젝트 하나 생성해 주셔서 프로젝트 속성을 아래와 같이 설정합니다. 리소스 뷰에서 아래와 같이 만들어 줍니다. 헤더파일에 아래 값을 선언합니다. … Read more