Study

Study/C#, Winform

[C#] 시간 관련 (DateTime, TimeSpan, Stopwatch)

DateTime (System.DateTime) C#에서 자주 사용하게 되는 시간 관련 구조체(Struct) 입니다. public DateTime(long ticks) public DateTime(long ticks, DateTimeKind kind) public DateTime(int year, int month, int day) public DateTime(int year, int month, int day, Calendar calendar) public DateTime(int year, int month, int day, int hour, int minute, int second) public DateTime(int year, int month, int day, int hour, int minute..

Study/MFC

[MFC] Combo Box 컨트롤 (콤보 박스)

콤보 박스란? 버튼(또는 박스)을 누르면 아래로 컨텍스트 메뉴가 제공되어 항목을 선택할 수 있게 해주는 컨트롤을 의미합니다. 콤보 박스 컨트롤 생성 도구 상자에서 Combo Box(이하 콤보 박스) 컨트롤을 하나 만듭니다. 콤보 박스 컨트롤에서 가장 많이 쓰이는 속성은 위의 2가지 입니다. 속성 (한글) 속성 (영어) 설명 정렬 Sort 항목이 추가되었을 때 자동으로 정렬할지 유무 (알파벳 순서) 형식 Type 콤보 박스 형식 (Simple, Dropdown, Drop List) 정렬 항목이 true인 경우에는 // AddString은 ComboBox에 항목을 추가하는 기능을 합니다. ctrlCBox->AddString(_T("Tomato")); ctrlCBox->AddString(_T("Apple"))..

Study/MFC

[MFC] Button 컨트롤 - 색상 변경

[MFC] Button 컨트롤 (버튼 컨트롤) Button 이란 말 그대로 무언가 눌러서 상호작용을 할 수 있는 컨트롤을 말합니다. 버튼 컨트롤 생성 도구 상자에서 Button 컨트롤을 하나 만듭니다. 버튼 컨트롤에서 가장 많이 쓰이는 속성은 위의 4 eskeptor.tistory.com 이번에는 Button 컨트롤에 색상을 넣는 법을 알아봅니다. Button의 경우에는 버튼이 속한 다이얼로그에서 "WM_DRAWITEM" 이라는 이벤트를 이용해서 Button을 손수 그려주어야합니다. "WM_DRAWITEM"의 경우에는 다이얼로그의 각 컨트롤 객체가 그려질 때 호출되는 이벤트입니다. 먼저 이벤트를 만들기 전에 Button의 속성중에서 "Style - Owner Draw(동작 - 소유자 그리기)"를 true..

Study/MFC

[MFC] Button 컨트롤 (버튼 컨트롤)

Button 이란 말 그대로 무언가 눌러서 상호작용을 할 수 있는 컨트롤을 말합니다. 버튼 컨트롤 생성 도구 상자에서 Button 컨트롤을 하나 만듭니다. 버튼 컨트롤에서 가장 많이 쓰이는 속성은 위의 4가지 입니다. 속성 (한글) 속성 (영어) 설명 가로 맞춤 Horizontal Alignment 캡션의 가로 정렬 방식 세로 맞춤 Vertical Alignment 캡션의 세로 정렬 방식 여러 줄 Multiline 개행 기호(\n)를 이용하여 여러줄의 캡션 사용 캡션 Caption 버튼에 표시되는 글자 아래의 사진을 보시면 대충 속성들이 어떤 역할을 하는지 알게 됩니다. 버튼 이벤트 사용 버튼에서 가장 많이 쓰이는 이벤트는 바로 클릭 이벤트 입니다. BN_CLICKED라는 이벤트 입니다. 버튼 클릭 이벤..

Study/MFC

[MFC] Tab 컨트롤

탭 컨트롤은 위의 저 부분을 뜻하지요. MFC 탭 컨트롤에 대해서 알아보겠습니다. MFC에서 탭은 "탭 컨트롤 + 탭 페이지" 로 구분됩니다. 여기서 탭 컨트롤은 도구 상자에서 끌어와서 탭이 위치할 자리를 잡아주고 탭 페이지는 다이얼로그를 만들어서 탭 위에 올려주게됩니다. 탭 컨트롤 생성 도구 상자에서 "Tab Control"을 끌어와서 하나 생성합니다. 생성함과 동시에 5개의 탭이 생성된 것처럼 보이지만 실은 아무것도 없습니다. 여기에 탭을 추가하여 넣어주어야합니다. Visual Studio 2022로 넘어오면서 속성까지 한글로 변해버렸다........ 일단 속성에서는 세로(Vertical), 여러 줄(MultiLine)이 가장 많이 쓰입니다. 세로는 탭을 세로줄에 추가할지 유무이며, 여러줄은 탭이 많..

Study/C++

[C++] Google 공룡 게임 만들어보기

크롬에서 인터넷이 끊겼을 때 할 수 있는 공룡 게임입니다. Flappy Bird 게임처럼 키 하나로 간단하게 즐길 수 있는 킬링 타임용 게임이죠. (위의 공룡 게임은 Space Bar 하나 만을 이용하여 진행합니다.) 공룡이 앞으로 전진(사실 배경과 장애물이 공룡에게 접근)하고 선인장을 피해서 점프하는 게임입니다. 이 공룡 게임을 C++(콘솔 프로젝트)을 이용하여 간단히 구현해보겠습니다. 프로젝트 생성 (C++ 빈 프로젝트) C++ 빈 프로젝트를 생성 합니다. 다른 파일 없이 메인 파일 하나로만 구현할 겁니다. 기능 나누기 구현할 기능들을 나누어봅시다. 메인 함수 (딱 메인만 있는 함수) 게임 관리 함수 키 입력 감지 함수 커서 위치 설정 함수 (콘솔이기 때문에 커서의 이동을 자주 사용하게 됩니다.) 커..

Study/MFC

[MFC, ATL]레지스트리 읽기, 쓰기 (CRegKey)

MFC나 ATL 환경에서 레지스트리키를 읽고 쓰는 것을 "CRegKey"를 사용하면 매우 간편하게 처리가 가능합니다. "CRegKey"를 사용하기 위해서는 프로젝트에 따라서 "atlbase.h"가 필요할 수 있습니다. 레지스트리 키 읽기 DWORD ReadRegDWORDValue(HKEY hKey, LPCTSTR strPathKey, LPCTSTR strValueKey) { ATL::CRegKey regKey; DWORD dwValue = -1; if (regKey.Open(hKey, strPathKey) == ERROR_SUCCESS) { regKey.QueryDWORDValue(strValueKey, dwValue); // DWORD값 읽어오기 } regKey.Close(); return dwValu..

Study/MFC

[MFC Active X] 글자를 출력하는 컨트롤 만들기

MFC에서 컨트롤처럼 사용할 수 있는 Active X를 만들어보는 연습입니다. 이 글에서는 글자를 출력하는 컨트롤을 만듭니다. ※ 컴파일 과정에서 OCX 파일을 등록하는 과정이 포함되어 있습니다. 그렇기 때문에 Visual Studio를 관리자 권한으로 실행하여야합니다. 프로젝트 생성 프로젝트는 "MFC ActiveX 컨트롤" 프로젝트로 생성합니다. MFC ActiveX 파일 구조 옅보기 Visual Studio 2019를 사용하여 MFC ActiveX 프로젝트를 생성하면 위와 같이 생성됩니다. (VS 버전을 표기한 이유는 버전에 따라서 생성하는 파일과 구조가 조금씩 달라집니다.) xxxxxxxxApp 최상단 앱 클래스(일반 MFC와 동일 개념) xxxxxxxxCtrl 주 처리 클래스(컨트롤의 주체) x..

Study/C++

[C++] 데이터 직렬화 라이브러리 씨리얼(Cereal)

Cereal은 C++ 11에서 데이터 직렬화를 쉽게 할 수 있게 하는 라이브러리이다. 특히 헤더파일만 포함시키면 바로 사용할 수 있는 간단한 라이브러리다. Cereal은 Binary Serialize, XML Serialize, JSON Serialize를 지원한다. cereal Docs - Serialization Archives Serialization Archives cereal comes with support for binary, XML, and JSON serialization. TLDR Version cereal comes with binary, XML, and JSON archives that allow loading and saving to these data types. Archives..

Study/C언어

처음하시는 분들을 위한 C언어 기초강의 시즌2 - 44 [정렬 알고리즘(셀 정렬, Shell sort)]

제 44강) 정렬 알고리즘 - 셀 정렬 오늘은 정렬 알고리즘의 마지막 시간으로 "셀 정렬(Shell sort)"에 대해서 알아봅니다. 셀 정렬은 삽입 알고리즘을 보완한 알고리즘입니다. 셀 정렬이란 (사진 출처 : 위키백과 - 셸 정렬) 셀 정렬은 "Donald Shell(도널드 셀)"이 고안해낸 알고리즘으로 삽입 정렬을 보완한 알고리즘입니다. 먼저 데이터를 여러 분류로 나누어 삽입정렬을 진행합니다. 요런식으로 일정 구간을 정하여 각각의 분류(그룹)를 만들어서 해당 분류 내에서 정렬을 시킵니다. 위에서 3개의 분류로 나뉜 값들을 각각 분류를 기준으로 정렬을 시켰습니다. 이렇게 정렬된 배열을 더 낮은 개수의 분류로 나눕니다. 이제 한 번 더 분류를 기준으로 정렬을 시킵니다. 이 정도까지 하면 대략 가장 큰 ..

Eskeptor
'Study' 카테고리의 글 목록 (4 Page)