본문 바로가기

c++

(48)
[FLTK] Fl_RGB_Image 로 부터 회전된 이미지 얻기. FLTK 는 여러 플랫폼에서 간단하면서 깔끔한 UI 를 만들기에 매우 좋은 GUI library 입니다만, 기본 기능에만 기준을 두고 있다 보니 이미지 처리 ( 리사이즈나 회전 등 ) 는 없는 것이 아쉬운 부분 입니다. 이번의 경우는 이미지를 회전 시켜 표시 해야 하는 경우 (위 이미지 처럼 뭔가 열심히 일 하고 있으니 기다려 주십사~ 하는) 기본으로 그리는 수준으로는 깔끔한 이미지를 얻기 힘듭니다. 이를 개선 하기 위해 구글링 중 CodeGuru 에서 이미지 회전에 관한 글 을 찾았습니다. 그리고 이를 응용하여 다음과 같은 API 를 만들어 보았습니다. #include #ifndef M_PI #define M_PI 3.141592654 #endif ⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄..
CPU 사용율을 알아 오는 소스 (C++) 이 소스코드는 MinGW 32/64bit 모두에서 동작을 하는 CPU 사용을 확인을 위한 C++ 소스 코드 입니다. cpuu.h 와 cpuu.cpp 파일 내에 CPUUages 라는 Class 가 정의 되어 있으며, 이 Class 에서 CPU 사용율을 얻어 올 수 있도록 만들어 져 있습니다. 이미 많은 부분들에서 이 방법들을 사용하고 있긴 합니다만, MinGW 에서는 제대로 동작하거나 빌드 되지 않아서 이 부분을 다시 재정의 하여 만들었습니다. CPU 가 평균 특정 Percentage 이하로 내려 가야 동작하게 한다거나, 반대로 특정 사용율 이상 일때 뭔가 하도록 하는 방법을 찾으신다면 첨부된 소스를 참조 해 보시기 바랍니다. 별거 아닌 소스 이기 때문에 별다른 정보를 기재 하지는 않겠습니다. * Open..
EnCypher tool (AES256, BASE64) C++ library w/ Sample. EnCypher 라고 이름은 거창 하긴 합니다만, 단지 AES-256 과 BASE-64 를 이용하는 Front-end c++ class library 에 막 가져다 붙인 이름 입니다. 용도는 AES-256 으로 암호화 한 정보를 다시 BASE-64 로 인코딩 한 문자열을 만들거나, 반대로 처리 하는걸 만들수 있습니다. 사용하려는 C++ 코드 위에 #inlcude "endetool.h" 를 추가 해 준 다음, EnDeTool class 를 할당해서 쓰면 됩니다. 여러 기능을 제공하고 있는데 주된 기능은 다음과 같습니다.문자열을 AES-256 과 BASE-64 로 암호화 또는 복호화 단순 데이터를 AES-256 으로 암호화 또는 복호화 아래의 소스코드는 바이너리 데이터를 암호/복호화 하는 것만 들어 있긴 합..
Porcess ID 로 해당 윈도우의 HWND 를 얻고 BMP 로 저장. 윈도우 프로그래밍을 하다보면 가끔 다른 윈도우의 화면을 갈무리 해야 하는 경우가 생깁니다. (Capture 처럼) 이럴때 아래의 코드 중 HWND GetHandleFromPID(DWORD pid); 함수를 사용하면 간단히 해당 프로그램의 HWND 를 얻을 수 있습니다. #include #include "winproc.h" typedef struct _ProcessCallbackData { DWORD m_pid; HWND m_hwnd; } ProcessCallbackData; BOOL CALLBACK EnumProc(HWND hwnd, LPARAM lParam) { DWORD pid = 0; ProcessCallbackData *pcbd = (ProcessCallbackData *)lParam; if ( ..
Windows 에서 HDD 의 제조 번호와 Volume serial 을 알아 오는 소스 ( MinGW 호환 ) PC 내에서 고유한 ID 정보를 가져 오는 방법중 하나를 들라면 보통 LAN 카드의 MAC 주소나 HDD 의 제조사 모델 정보와 고유 제조번호를 선택 할 수 있습니다. LAN 카드나 HDD 는 교체가 쉽게 가능하나, OS 를 설치 해야 하는 조건을 생각하면 오히려 HDD 가 좀 더 unique 한 정보를 만들수 있어 보이길래 만든 유틸리티 소스 입니다. MinGW 에서도 빌드 될수 있도록 만든 것이라 NTDDDISK.H 가 없어도 되도록 만들었습니다만, 조건이 컴파일시 (또는 프로젝트 매니저에) -DNO_NTDDDISK_H 를 지정해야 합니다. 해당 소스는 완전 공개이며, Code::Blocks 프로젝트로 만들어진 예제까지 포함 입니다. 경우에 따라서는 VisualStudio 에서 수정해서 쓰시는데 지장..
Windows API, 윈도우 에서 Drag Drop 으로 파일 목록 받기. 간단히 Windows 에서 파일을 Drag&Drop 으로 받는 방법들을 쓰는 프로그램들이 더러 있습니다. 이를 Windows API 로만 처리 하려면 다음과 같은 코드가 필요 합니다. 먼저, DragAcceptFiles() API 로 이벤트를 받을 Windows Handle 을 등록 합니다. DragAcceptFiles( hWindow, TRUE ); 이는 최초 WM_CREATE 부분에서 처리하는 방법을 써도 되나, 부분적으로 해당 이벤트를 받지 않고 싶을때 FALSE 대입으로 처리 할 수도 있습니다. 해당 이벤트는 WinMain() 에서 WM_DROPFILES 로 넘어 오게 됩니다. 이때 취해야 하는 인자는 wParam 으로 다음과 같이 처리 할 수 있습니다. BOOL CALLBACK DialogPro..
RageDCMV , Free DCM read/write library for standard C++ DCM 파일을 읽고 쓰는 라이브러리를 공개 합니다. 이 소스 코드는 제가 직접 만든 것이며, 누구나 사용하고 활용 할 수 있되, 이 코드에 대한 저작권만 지켜 주신다면 아무런 제한없이 사용할 수 있습니다. 단, 저작권을 벗어난 권리행사 외에는 어떠한 책임을 지지 않으며, 본 소스코드로 제작하신 바이너리나 코드에 대해서는 일절 support 가 가능하지 않음을 먼저 알립니다. source code 는 gcc 에서 빌드 되도록 만들어 졌으며, CodeBlocks 10.05 에서 project 파일이 생성 되었습니다. 32bit, 64bit, MBCS, Unicode 모두 감안하여 만들어 졌습니다. 사용법이나, 활용에 대해서는 main.cpp 를 참조하시기 바라며, 개선하거나 변경 한 소스에 대해서는 반드시 ..
Cygwin+GCC/G++ 에서 POSIX path 지정 오류 발생. (원인) 우분투에서 개발이 좀 어려운 면이 있어, console application 개발용으로 Cygwin 과 g++ 를 CodeBlocks 10.05 에서 사용 중 이었습니다만, 구 버젼 cygwin 의 gcc 가 3.4.4 인 관계로 wstring 과 wostream, wistream 등에서 문제가 발생 했습니다. 그래서 gcc 4.5.1 을 쓰는 마지막 cygwin version 을 사용 했더니, 여전히 위와 같이 컴파일 하면 아무런 동작을 하지 않습니다. 혹시나 해서 cygwin shell 에서 컴파일을 해 보니, nodosfilewarning 을 지정하라는 말이 나옵니다. 아무래도 DOS 형태의 지정은 POSIX 에 위배 되는 행우 이겠죠. 일단, 이 nodosfilewarning 이란 오류를 안보기 ..