[WinAPI] SetWindowPos

오늘은 SetWindowPos에 대해 알아보겠습니다. SetWindowPos는 HWND의 (X, Y) 좌표, 가로 세로 길이, 그리고 Z-Order를 변경할 수 있는 함수 입니다.함수 원형은 아래와 같습니다. HWND hWndInsertAfter에는 핸들 혹은 아래 값이 올 수 있습니다. 사용 값 의미 HWND_BOTTOM (HWND) 1 Z 순서의 맨 아래에 창을 놓습니다. 는 IF HWND의 매개 변수는 최상위 창을 식별, 창은 맨 위의 지위를 잃고 다른 모든 창 하단에 배치됩니다. HWND_NOTOPMOST (HWND) -2 맨 위가 아닌 모든 창 위에 (즉, 맨 위에있는 모든 창 뒤에) 창을 놓습니다. 윈도우가 이미 최상단이 아닌 윈도우 인 경우에는이 플래그가 적용되지 않습니다. HWND_TOP (HWND) 0 Z 순서의 맨 위에 창을 놓습니다. HWND_TOPMOST (HWND) -1 맨 위가 아닌 모든 창 위에 창을 놓습니다. 창은 비활성화되어 있어도 최상위 위치를 유지합니다. 마지막 인자 UINT uFlags에는 아래 값이 올 수 있습니다.(대표적인 것들만 … Read more

[MFC] 시간 얻기 – 2 , CTime, CTimeSpan

이전 글에 이어서 시간 얻기에 대해 알아보겠습니다. CTime과 CTimeSpan을 사용해서도 시간을 얻어올 수 있지만 이 두개의 클래스를 이용하면 시간계산과 차이를 빠르게 알 수 있습니다. 프로젝트를 하나 생성해주고 아래와 같이 Static Control과 버튼을 만들어줍니다. 1. 시간 얻기 “CTime” 버튼에 아래와 같이 코딩합니다. 그러면 아래와 같이 현재 시간을 표시합니다. 2. 시간과 시간 차이 계산하기 만약 올해 초(2020년 … Read more

[MFC] 시간 얻기 – 1 , SYSTEMTIME, GetSystemTime, GetLocalTime

안녕하세요, 오늘은 시간을 얻어오는 함수에 대해서 알아보도록 하겠습니다. SYSTEMTIME을 사용하여서 현재 시간을 알아와보도록 하겠습니다. 프로젝트를 하나 생성해 줍니다. 그리고 시간 표시를 위해 Static Control과 버튼을 만들어 줍니다. 그리고 “GetSystemTime” 버튼을 더블클릭 하셔서 아래와 같이 코딩합니다. 위 내용대로 코딩 한 뒤 실행하면 아래와 같이 표시됩니다. GetSystemTime 함수는 UTC 기준으로 시간을 가져오기 때문에 정확하지 않습니다. 그럴 경우 … Read more

[C++ STL] tuple 튜플

1. 튜플 생성 및 읽기 여러 개의 데이터 형을 하나의 컨테이너에 선언 생성 예시는 아래와 같다. 값을 읽기 위해 아래와 같이 get<>()을 사용하면 된다. 값 읽기 예시) 2. tie 함수 사용 tie 함수를 사용하여 tuple을 생성할 수 있다. tie는 참조로 반환하기 때문에 아래와 같이 사용하면, iNo, strKo, strEn 변수 값이 변경된다. 3. tuple_cat으로 두개의 tuple … Read more

[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