본문 바로가기

분류 전체보기

(59)
Progress Bar Color Progress bar 색상은 사용하는 window theme에 따라 변경 방법이 다르다. 현재 확인된 것은 2가지이다. 1. windows classic 2. Aero windows classic의 경우는 2가지 방법으로 색상 변경이 가능하다. 1. SendMessage(PBM_SETBARCOLOR, 0, RGB(R, G, B)) 2. SetBarColor(RGB(R, G, B)) Aero의 경우는 상태 변경을 통해 색상변경이 가능하다. 총 3가지의 상태가 존재한다. 1. normal : 초록 2. paused : 노랑 3. error : 빨강 상태 변경 함수는 아래와 같다. SetState(int iState) 하지만 paused, error상태의 경우 progress bar 컨트롤이 정상 동작 되지..
Skin MFC 작업을 하다보면 Dialog 혹은 Control의 디자인을 변경할 일이 있다. 크게 3가지 방법이 있다고 한다. 1. 직접 제작 2. 상용 라이브러 사용 3. manifest 파일 추가 및 변경 본문은 2번째 방법에 대한 글이다. 우선 codejock은 상용 라이브러리로써 무료버전은 30일을 지원한다. codejock는 MFC의 다양한 컴포넌트를 지원한다. 필자는 MFC에 Skin을 입히기 위해 Research를 진행했었다. codejock에서 지원하는 Skin Theme는 7가지이다. Codejock Skin, Office 2007 Style, Office 2010 Style, Windows 10, Windows Vista Style, Windows XP Luna Style, Windows XP..
Video Codec SDK 사용 시 주의점 Nvidia에서 제공해주는 Video Codec SDK는 크게 2가지를 제공한다. Encoding에 사용되는 NVENCODE API Decoding에 사용되는 NVDECODE API NVDEC를 통해 카메라 혹은 비디오로 취득 된 영상은 YUV 4:2:0 형식(Format)임을 주의하자. 기존에 OpenCV에서 제공하는 cv::VideoCapture()를 이용할 경우 RGB 형식(Format)임으로 기존의 형식일 것이라고 생각하고 처리할 경우 정상 처리가 되지 않는다. NVDEC를 이용하여 영상을 취득하고 기존의 형식으로 처리할 경우 변환과정을 꼭 진행하기 바란다. 참고 자료 1 : developer.nvidia.com/nvidia-video-codec-sdk#NVDECFeatures NVIDIA VID..
IP Camera의 연결 여부 확인 OpenCV에서 IP Camera로부터 영상을 가져오는 방법은 cv::VideoCapture() 혹은 cv::cudacodec::createVideoReader() 를 이용하는 것이다. 하지만 IP Camera가 연결이 되어 있지 않은 상태에서 해당 객체를 통해 영상을 가져오려고 한다면 어떻게 될까? 두 방법 모두 Exception이 발생하고 프로그램은 중단 될 것이다. Exception 발생을 방지 하기 위해서는 다양한 방법이 있겠지만 필자는 Socket 통신을 이용하여 먼저 확인하는 것을 추천한다. IP Camera 설정 Page에 가면 통신 가능한 port 번호를 확인 할 수 있다. Socket 연결이 정상이라면 IP Camera가 정상적으로 연결 되어 있는 것을 확인 할 수 있다. 참고 자료 1 ..
배열 크기 확인 최근에 배열 크기에 관한 issue가 있어서 정리한다. 프로그램을 실행시키면 운영체제는 프로그램을 위해 메모리공간을 할당한다. 메모리공간은 아래 그림과 같이 Data, Heap, Stack으로 나뉘며 각 영역에는 목적에 맞는 변수들이 위치하게 된다. Data, Stack영역에는 sizeof()함수를 이용하여 크기를 쉽게 확인할 수 있다. sizeof 함수의 원형은 아래와 같다. 하지만 Heap영역에서는 동적으로 크기가 결정되므로 sizeof()함수로 크기를 확인 할 수 없다. windows에서는 _msize() 함수를 이용한다. 함수 원형은 아래와 같다. Linux에서는 malloc_usable_size()함수를 이용한다. 함수 원형은 아래와 같다. 아래 그림은 확인용 예제이다. Example Resul..
OnNcPaint( ) vs OnPaint( ) OnNcPaint는 비 작업 영역에 대한 처리를 하는데 사용된다. 비 작업 영역이란 프로그래머에게 프로그래밍 대상이되지 않는 부분으로 운영체제에서 관리되도록 되어 있는 부분을 뜻한다. 위 그림에서 파란색 점선 밖에 영역을 의미한다. OnPaint는 작업 영역에 대한 처리를 하는데 사용된다. 작업 영역이란 프로그래머에게 프로그래밍 대상이 되는 부분을 뜻한다. 위 그림에서 파란색 점석 안에 영역을 의미한다. 모든 컨트롤들은 작업 영역내에 위치 하므로 OnPaint를 대부분 사용하지만 Menu Bar, Title Bar, Border와 같은 부분은 OnNcPaint를 이용해야한다.
strftime() 시간이나 날짜를 문자열로 표현하는 함수를 소개하고자한다. C : #include C++ : #include Function Name : strftime 3번째 인자인 Format은 아래와 같다. 마지막으로 사용 예시이다. 참고 자료 1 : https://modoocode.com/122 C 언어 레퍼런스 - strftime 함수 modoocode.com
마크업 언어(markup language) 마크업 언어 란? 태그 등을 이용하여 문서나 데이터의 구조를 명기하는 언어의 한가지 일반적으로 데이터를 기술하는 정도로만 사용되므로 프로그래밍 언어와는 구별된다. 대표적인 예시로는 XML, HTML 등이 있다. 마크업 언어의 종류 1. 표현적 마크업 (Presentational markup) 문서의 형태를 표현하기 위한 마크업 , ex) HTML의 style 태그 2. 절차적 마크업 (Procedural markup) 프로그램이 문서를 처리하는 방법을 서술한 마크업, ex) LaTeX 3. 기술적 마크업 (Descriptive markup) 문서가 표현하는 내용을 기술하는 데에 사용하며 표현적 마크업과 절차적 마크업의 요소를 어느정도 포함하고 있어 범용적 마크업이라고도 한다, ex) HTML, 마크다운 ..