728x90

Application 177

[MFC] 프로젝트 속성에서 DPI 인식 설정하는 방법

MFC에서는 매니페스트 파일을 직접 수정하지 않아도Visual Studio의 프로젝트 속성 페이지에서 DPI 인식 여부를 설정할 수 있다.설정 경로프로젝트 속성 → 구성 속성 → 매니페스트 도구 → 입력 및 출력 → DPI 인식 사용 여기서 아니요로 설정하면해당 MFC 프로그램은 DPI 미인식 애플리케이션으로 동작한다.DPI 인식 사용 = 아니요의 의미이 설정을 아니요로 두면 다음과 같은 특징을 갖는다.애플리케이션은 96 DPI 기준 UI로 동작고해상도 환경에서는Windows가 자동으로 UI를 스케일링UI는 깨지지 않지만 흐릿해질 수 있음기존 레거시 MFC 프로젝트와 동작 호환성이 높음👉 즉,“UI 틀어짐은 피하고 싶고, DPI 대응까지는 아직 부담되는 경우”에임시 대응으로 많이 ..

Application/MFC 2026.02.24

[C++] 캐스트 이해하기 (4) - dynamic_cast

1. 들어가기static_cast랑 reinterpret_cast, const_cast까지 정리해 놓고 나면마지막으로 자연스럽게 떠오르는 친구가 dynamic_cast다이름만 보면“런타임에 뭔가 확인해 준다는데 정확히 뭐가 다른지”“언제 static_cast 대신 써야 하는지”헷갈릴 때가 많다 이 글에서는dynamic_cast가 정확히 무슨 일을 하는지언제 static_cast보다 dynamic_cast가 더 어울리는지실무에서 자주 보게 되는 패턴과 주의할 점을 한 번에 정리해 본다2. dynamic_cast가 하는 일한 줄로 요약하면런타임에 실제 타입을 확인하면서상속 관계 안에서 안전하게 캐스트해 주는 도구 라고 보면 된다 조금 더 풀어서 말하면다형성 기반 클래스를 가리키는 포인터나 레퍼런스에서실제 객..

Application/C++ 2025.12.11

[C++] 캐스트 이해하기 (3) - const_cast

1. 들어가기static_cast랑 reinterpret_cast까지 정리해 놓고 나면캐스트 시리즈에서 자연스럽게 다음으로 떠오르는 친구가 const_cast다이름만 보면“const를 없애 버리는 무서운 캐스트인가…” 싶은데실제로는잘 쓰면 레거시 코드와 최신 코드를 이어 주는 어댑터 역할도 하고잘못 쓰면 설계 전체를 꼬이게 만드는 양날의 검 같은 존재에 가깝다 이번 글에서는const_cast가 정확히 무슨 일을 하는지실무에서 실제로 어디쯤에서 등장하는지절대 쓰면 안 되는 패턴은 뭐가 있는지를 정리해 본다2. const_cast가 하는 일한 줄로 요약하면타입의 const / volatile 수식자를 붙이거나 떼어 내는 캐스트 라고 보면 된다 조금 더 풀어서 말하면포인터나 레퍼런스 타입에서const / vo..

Application/C++ 2025.12.10

[C++] 캐스트 이해하기 (2) - reinterpret_cast

1. 들어가기C 스타일 캐스트를 오래 쓰다 보면어느 순간부터 reinterpret_cast라는 친구가 눈에 들어온다이름부터 뭔가 살벌한 느낌이라검색해 보면 하나같이 위험하다고만 하고정작 언젠 쓰는지 감이 잘 안 올 때가 많다이 글에서는reinterpret_cast가 정확히 어떤 캐스트인지실제로 어떤 상황에서 쓰는지왜 조심해서 써야 하는지를 정리해 본다2. reinterpret_cast가 하는 일한 줄로 요약하면메모리의 비트 패턴을 그대로 둔 채다른 타입으로 다시 읽게 만드는 캐스트 라고 할 수 있다 다른 캐스트와 비교하면 느낌이 좀 다르다static_cast타입이 논리적으로 맞는지 컴파일러가 최대한 체크dynamic_cast런타임까지 끌고 가서 타입을 확인reinterpret_cast비트만 맞으면 어떻게..

Application/C++ 2025.12.09

[C++] 캐스트 이해하기 (1) - static_cast

1. 들어가기C++로 개발하다 보면 가장 자주 보는 캐스트가 static_cast다그런데 막상 “언제 정확히 써야 하는지”를 설명해 보라고 하면대충 “타입 맞을 때 쓰는 거” 정도로 흐리게 넘어갈 때가 많다이 글에서는static_cast가 정확히 어떤 캐스트인지C 스타일 캐스트와 뭐가 다른지실무 코드에서 자주 쓰는 패턴을 정리해 본다2. static_cast가 하는 일한 줄로 요약하면컴파일러가 타당하다고 판단할 수 있는 범위 안에서타입 변환을 수행하는 캐스트 주로 이런 상황에서 사용된다정수 ↔ 실수 변환int → double, double → int상속 관계에서 업캐스트Derived* → Base*void* → 구체적인 포인터 타입enum ↔ 정수형 변환static_cast는 논리적으로 말이 되는 변환만..

Application/C++ 2025.12.08

[C# (WinForm)] 암호화 및 복호화 (AES)

1. 참조 및 전역 변수using System.Security.Cryptography;using System.Text;string m_strKey = "Sample Cryptography Key"; 2. 암호화private string EncryptStringAES(string plainText, string keyString){ byte[] szDatas = Encoding.UTF8.GetBytes(keyString); // 키를 바이트 배열로 변환 byte[] key = new byte[32]; Array.Copy(Encoding.UTF8.GetBytes("12345678901234567890123456789012"), key, key.Length); // key 초기화 if ..

[정보] FPS / GPU / CPU / 지연시간 오버레이 없애기

화면 오른쪽 상단에 갑자기 FPS / GPU / CPU / 지연시간이 표시되는 현상이 발생되었습니다 곰곰이 생각해 보니 어제 그래픽 드라이버를 최신으로 업데이트 후 발생한 문제로 파악되어 NVIDIA 의 새로운 프로그램 검색 NVIDIA Control Panel 프로그램과 NVIDIA App 프로그램을 발견했습니다 그중 NVIDIA App 프로그램을 실행하여 왼쪽 메뉴의 설정탭을 선택 그리고 상단 기능 선택 후 오버레이 메뉴에서 NVIDIA 오버레이를 비 활성화 하니 기능이 비활성화되는 것을 확인했습니다 이렇게 활성화가 되어 있는 설정을 비활성화하니 오버레이 되던 문구가 사라졌습니다 제 글이 도움이 되셨다면 댓글 & 공감 부탁드려요 😀

Application/정보 2025.04.15

[정보] 크롬에서 긁어오기 & 우클릭 제한 해제하기 (자바 스크립트 중지)

특정 블로그나 웹 페이지에서 글을 긁어 가거나 우클릭을 제한하는 곳이 존재합니다 크롬에서 해당 제한을 해제하려면 크롬을 띄우고 해당 페이지로 접근 후 F12 키를 눌러서 개발자 도구를 활성화합니다 이후 상단 오른쪽 톱니 모양을 눌러서 설정으로 들어갑니다  이후 메뉴에서 환경설정을 선택하고 아래로 쭉 내리면 디버거 속성 설정이 나옵니다 해당 내용에서 자바스크립트 사용 중지 설정을 활성화하시면 됩니다  위의 설정값을 체크하시면 기존에 웹 페이지에서 사용하던 자바스크립트 사용을 중지하여 긁어오기나 우클릭이 가능하게 됩니다  제 글이 도움이 되셨다면 댓글 & 공감 부탁드려요 😀

Application/정보 2025.04.07

[MFC] 코드에서 Menu caption(string, text) 변경

MFC 코드상에서 Caption을 변경하려면 아래와 같은 코드를 작성하면 됩니다 // 첫번째 메뉴AfxGetMainWnd()->GetMenu()->ModifyMenu(0, MF_STRING | MF_BYPOSITION, 0, _T("첫번째 메뉴"));// 첫번째 메뉴의 하위 메뉴// ID의 경우 메뉴 리소스의 메뉴 ID를 참조AfxGetMainWnd()->GetMenu()->GetSubMenu(0)->ModifyMenu(0, MF_STRING | MF_BYPOSITION, ID_30001, _T("첫번째 메뉴 하위 첫번째 메뉴"));AfxGetMainWnd()->GetMenu()->GetSubMenu(0)->ModifyMenu(1, MF_STRING | MF_BYPOSITION, ID_30002, _T..

Application/MFC 2025.02.07

[MFC] 파일 생성 (CreateFile)

CreateFile을 이용한 간단한 파일 생성 후 읽고 쓰기 예제입니다  HANDLE hFile = CreateFile(_T("C:\\TestFile.txt"), GENERIC_READ | GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);if(hFile == INVALID_HANDLE_VALUE){ return FALSE;}DWORD dwWrite;DWORD dwRead;WCHAR szData[1024];wsprintf(szData, _T("테스트"));if(WriteFile(hFile, szData, (DWORD)strlen(szData), &dwWrite, 0) == FALSE){ //쓰기 실패 CloseHandle(hFile); h..

Application/MFC 2024.11.24
728x90
반응형