본문 바로가기
반응형

MFC7

[C++ / MFC] 트레이 아이콘 만들기 예제 트레이 아이콘(Tray Icon)이란? 윈도우 작업표시줄 우측 아이콘 트레이에 표시되는 아이콘을 의미합니다.  ※ 트레이 아이콘 추가 / 수정 / 삭제// ---------- 추가 ----------m_tnd.cbSize = sizeof(NOTIFYICONDATA);m_tnd.hWnd = GetSafeHwnd();m_tnd.uID = 0;m_tnd.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;m_tnd.uCallbackMessage = WM_TRAY_NOTIFY;_tcscpy(m_tnd.szTip, _T("TrayIcon")); // 툴팁 텍스트 설정m_pIconList = pList; // 아이콘 리스트 지정m_tnd.hIcon = m_pIconList[0]; .. 2025. 1. 9.
[C++ / MFC] Py_Initialize() 호출 시 에러 / Fatal Python error: failed to get the Python codec of the filesystem encoding Fatal Python error: failed to get the Python codec of the filesystem encoding 위 에러는 파이썬의 코덱을 찾지 못하는 에러로 환경 설정이 제대로 안된 경우 발생할 수 있는 에러입니다. 비주얼 스튜디오에서 파이썬 인터프리터를 호출하는 Py_Initialize()함수 실행 시 위 에러가 뜨면서 프로그램이 종료되는 경우 다음 사항을 체크해보세요. 우선 Anaconda를 통해 설치했든, Python 자체를 설치했든 환경변수가 제대로 설정되어 있는지 확인해봅니다. 시스템 환경 변수 편집 > 시스템 변수 > Path 편집으로 들어가서 Python.exe가 설치된 경로가 환경 변수에 포함되어 있는지 확인합니다. 저는 아나콘다로 설치했기 때문에 아래 경로로 .. 2023. 3. 10.
[C++ / MFC] 이미지 관리 툴 ImageMagick 사용 방법 1. ImageMagick 다운로드 및 설치 ImageMagick Create, Edit, Compose, or Convert Digital Images legacy.imagemagick.org 이미지매직 사이트에 들어가보면 운영체제, 정밀도, bit 등을 나눠서 여러가지 버전들을 제공하고 있는데 용도와 환경에 맞게 원하는 설치파일을 다운받습니다. Q8은 픽셀당 8비트, Q16은 픽셀당 16비트이고 HDRI는 High-dynamic-range의 약자로 밝은 곳과 어두운 곳을 잘 구분하여 나타나게 하는 기술이라고 합니다. 당연한 얘기지만 고화질로 갈수록 리소스가 더 많이 필요하게 됩니다. 저는 Windows Q8 64비트 static 버전으로 설치해보겠습니다. I accept the agreement를 선.. 2023. 1. 11.
[MFC] 프로세스간 통신 (Inter Process Communication, IPC) 방법 설명 프로세스간 통신 (Inter Process Communication, IPC) 란? 서로 다른 프로세스에서 정해진 규칙에 의해서 데이터를 주고 받는 행위를 의미합니다. IPC 방법은 여러 가지가 있지만 가장 많이 사용하는 [SendMessage / PostMessage], [WM_COPYDATA], [Memory Mapped File] 3가지 방식에 대해서 설명 드리겠습니다. 1. SendMessage / PostMessage ■ 송신측 (Send) # cpp file static const UINT regMsg = ::RegisterWindowMessage(_T("SendMessageTest")); int nMsg = 100; ::SendMessage(HWND_BROADCAST, regMsg, (WPA.. 2022. 9. 27.
[MFC] 재배포 패키지 없이 프로그램 배포하는 방법 MFC로 프로그램을 만들어서 배포했을 때 해당 PC에 mfc dll이 없거나 재배포패키지가 설치되어 있지 않다면 아래와 같은 에러메세지가 출력되면서 실행할 수 없게됩니다. 여기서 mfc140u.dll의 의미는 140은 vs버전, u는 유니코드 버전이라는 의미입니다. 빌드한 버전에 따라 mfc110.dll mfc100.dll.. 등의 오류가 발생할 수 있겠죠. 🔽 프로그램을 다시 빌드할 수 없다면 아래 MS사이트에서 재배포패키지 다운 받아 문제 있는 PC에 설치하면 해결됩니다. 지원되는 최신 Visual C++ 재배포 가능 패키지 다운로드 이 문서에서는 최신 버전의 Visual C++ 재배포 가능 패키지 패키지에 대한 다운로드 링크를 나열합니다. docs.microsoft.com 🔽 다시 빌드가 가능하다면.. 2022. 8. 29.
[C++ / MFC] 실행중인 프로세스 찾기 / 종료시키기 ■ 실행중인 프로세스 찾기 (CreateToolhelp32Snapshot) #include "tlhelp32.h"// for CreateToolhelp32Snapshot HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); PROCESSENTRY32 processEntry32; processEntry32.dwSize = sizeof(PROCESSENTRY32); if (!Process32First(hProcessSnap, &processEntry32)) CloseHandle(hProcessSnap); CString sProcessName = _T("notepad.exe"); // 메모장 찾기 while (Process32Next(h.. 2022. 8. 9.
[C++ / MFC] 레지스트리 값 저장, 불러오기 (RegCreateKeyEx) 레지스트리 키 생성 ■ RegCreateKeyEx 레지스트리 키를 만들거나 키가 이미 있는 경우 값을 읽을 수 있도록 키를 여는 함수입니다. 🔽 함수 형식 및 파라미터 참고 https://docs.microsoft.com/en-us/windows/win32/api/winreg/nf-winreg-regcreatekeyexw ※ Sample Code HKEY hKey = NULL; DWORD dwDisposition; if (RegCreateKeyEx(HKEY_CURRENT_USER,// 키 _T("SOFTWARE\\Dev"), // 경로 0, NULL, REG_OPTION_NON_VOLATILE,// 비휘발성, 재부팅해도 값 보존 KEY_WRITE, NULL, &hKey, &dwDisposition) ==.. 2022. 8. 6.
반응형