본문 바로가기

프로그래밍/C, C++20

Visual C++ Template와 STL Template 차이점 Visual C++의 템플릿 클래스와 STL의 템플릿 클래스는 모두 C++의 템플릿 기능을 활용하여 작성된 클래스입니다. 그러나 두 클래스의 차이점은 다음과 같습니다. 제공되는 기능의 차이점 Visual C++의 템플릿 클래스는 MFC(Microsoft Foundation Classes) 라이브러리에 속하는 클래스로, 다양한 기능을 제공합니다. 예를 들어, CArray 클래스는 동적 배열을 처리하는 기능을 제공하며, CMap 클래스는 키-값 쌍 데이터를 저장하는 기능을 제공합니다. 반면에 STL(Standard Template Library)의 템플릿 클래스는 C++ 표준 라이브러리에 포함되어 있으며, 다양한 기능을 제공합니다. STL의 템플릿 클래스 중 몇 가지는 vector, list, map, qu.. 2023. 3. 13.
Visual C++ 윈도우 키 막기 전체 화면으로 게임을 하거나, 작업 중에 "Win 키"가 눌리면서 화면이 아래로 내려가서 방해가 되는 경우가 있습니다. 이를 방지하기 위한 게임 및 애플리케이션 개발 시 사용할 수 있는 소스를 공개합니다. 아래의 소스는 Windows hook이라는 기술을 이용한 방법입니다. (Hook 이란 "가로채기"라는 뜻으로써, 시스템에 전달되는 이벤트를 먼저 가로채는 기술입니다. 보통은 가로챈 이벤트의 처리가 끝나면 반드시 CallNextHookEx함수를 호출하여 시스템에 전달 될 수 있도록 해야합니다.) 핵심 소스 부분 아래와 같이 "왼쪽 Windows 키"나 "오른쪽 Windows 키"가 눌린 경우 "CallNextHookEx(...)"함수를 호출하여 시스템으로 넘겨 해당 키에 대한 이벤트 처리를 하도록 넘기지.. 2022. 7. 18.
C, C++ 를 웹에서 실행 C, C++를 공부하거나 간단한 구문을 테스트하려면, 언어적인 제약으로 Visual Studio 혹은 gcc 같은 컴파일러가 있는 환경에서만 가능했었지만, 이제 온라인(웹)에서 실행할 수 있게 되었습니다. 바로 Programiz라는 사이트인데요. 아래와 같이 웹상에서 바로 코드를 작성하고 "Run"을 실행하면 결과창을 볼 수 있습니다. 이뿐만 아니라 실행 시 오류 메시지도 gcc컴파일 환경과 동일하게 출력해 주무로 간단 구문 테스트나, 공부하기에 정말 좋은 환경이라고 생각이 듭니다. 이 사이트에서는 "C"언어뿐만 아니라 "C++", "Python", "Java", "C#", "Javascript", "SQL" 언어도 지원해 주니, 더욱 유용하게 사용할 수 있을 것 같습니다. 아래는 해당 사이트의 C C.. 2022. 7. 13.
MFC - Drag and Drop 구현 DragAcceptFiles()함수와 WM_DROPFILES메세지를 이용해서 드래그앤드랍을 구현 할 수 있습니다. 다이얼로그 베이스 프로젝트에서 아래와 같이 헤더와 소스파일에서 구현하면 됩니다. CMFCDropFilesDlg.h protected: afx_msg void OnDropFiles(HDROP dropInfo); DECLARE_MESSAGE_MAP() CMFCDropFilesDlg.cpp BEGIN_MESSAGE_MAP(CMFCDropFilesDlg, CDialogEx) ON_WM_DROPFILES() END_MESSAGE_MAP() BOOL CMFCDropFilesDlg::OnInitDialog() { DragAcceptFiles(); // entire dialog list.DragAccept.. 2019. 4. 28.
크로스 플랫폼 개발 시 define문으로 구분하는 방법 크로스 플랫폼 개발 시 사용되는 define문 #ifdef _WIN32 // 윈도우 개발환경 #ifdef _WIN64 // 윈도우 64bit #else // 윈도우 32bit #endif #elif __APPLE__ // 애플 개발환경 #include "TargetConditionals.h" #if TARGET_IPHONE_SIMULATOR // iOS 시뮬레이터 #elif TARGET_OS_IPHONE // iOS 장치 #elif TARGET_OS_MAC // Mac OS #else # error "Unknown Apple platform" #endif #elif __linux__ // 리눅스 개발환경 #elif __unix__ // all unices not caught above // 유닉스 개발환.. 2019. 4. 17.
C, C++ - 구조체 생성자를 사용하여 초기화 일반적인 구조체 선언 후 초기화 구조체 정의 typedef struct _MY_STRUCT { char c; int i; char sz[100]; } MY_STRUCT; 구조체 정의 및 초기화 MY_STRUCT st; // 구조체 변수 정의 memset(&st, 0x0, sizeof(st)); // 구조체 초기화 2019. 2. 19.
반응형