분류 전체보기


DLL 함수를 사용하기에 앞서 아래 참고에서 작성된 내용을 기반으로 관련 내용을 정리했다. 자세한 내용은 아래 참고 블로그를 확인한다. 참고 [C++ DLL] 클래스를 MFC 확장 DLL로 만들고 사용하기 (예제 포함) (tistory.com) [C++ DLL] C++ 클래스를 DLL로 만들고 사용하기 (예제 포함) [C++ DLL] Visual Studio C++ 명시적 링크하기 (예제 포함) [C++ DLL] Visual Studio C++ 암시적 링크하기 (예제 포함) [C++ DLL] Visual Studio C++ DLL 생성하기 (예제 포함) 1. DLL이란? 코딩을 하다보면, 하나부터 열까지 모든 모듈을 개발하는 것은 어려운 일이다. 따라서 기존의 사람들이 잘 만들어놓은 모듈들을 가져다 쓰게..


MFC에서 시간을 측정하는 방법을 정리한다. 1. Listbox Control 추가 Listbox Control에 값을 추가하는 AddLog(...)에 대한 함수 정의는 아래를 참고한다. 2021.06.05 - [공부/MFC] - [MFC] Listbox Control에 현재시간 띄우기 [MFC] Listbox Control에 현재시간 띄우기 Listbox Control에 현재시간을 띄우는 방법을 간단하게 정리한다. 1. Listbox Control을 추가한 뒤, 변수를 추가 이 글에서는 변수명을 m_ctrlLbResult 으로 했다. 2. 코드 입력 CTime 클래스를 사용하여 아래 함. sungjini.tistory.com 2. 코드추가 아래 내용을 추가한다. void CTestDlg::OnBnCli..


Listbox Control에 현재시간을 띄우는 방법을 간단하게 정리한다. 1. Listbox Control을 추가한 뒤, 변수를 추가 2. 코드 입력 CTime 클래스를 사용하여 아래 함수를 추가하면 현재 시간을 받아올 수 있다. 아래 예시로 작성된 코드의 경우 버튼을 눌렀을 때 사용자 정의 함수인 AddLog()를 호출하여 Listbox Control에 현재 시간을 출력하는 것을 나타낸다. void CTestDlg::AddLog(CString strData) { CTime time = CTime::GetCurrentTime(); CString strLog; strLog.Format(_T("%04d-%02d-%02d %02d:%02d:%02d : %s"), time.GetYear(), time.GetM..

1. Mat 복사 [1] Mat을 복사하는 방법은 크게 2가지가 있다. 1.1 얕은 복사 (같은 메모리를 참조) Mat img1 = imread(...); //원본 이미지 Mat img2(img1); Mat img3 = Rect(0, 0, img1 .size().width, img1 .size().height) ); //ROI를 잡고자 할 때 유용해보인다. 1.2 깊은 복사 (별도의 메모리를 참조) Mat img1 = imread(...); //원본 이미지 Mat img2 = img1.clone(); Mat img3; img1.copyTo(img3); 2. Color to Gray 2.1 Color to Gray Mat img1 = imread(...); // 원본이미지 Mat grayImg; if(im..


환경을 세팅하던 중 아래와 같은 에러가 발생했다. [1]에서, 해결방법은 크게 2가지 라고 하는데, 나의 경우 플랫폼이 맞지 않아서 발생한 에러였다. 프로젝트 속성 - 일반에서 플랫폼을 맞춰주면 바로 해결된다. 아래 그림에서 빨간색으로 표시된 부분을 사용자의 환경에 맞게 설정해주면 된다. 참고 [1] 초징 :: [OpenCV]오류 C1083 포함 파일을 열 수 없습니다. 'opencv2/highgui/highgui.hpp': No such file or directory (tistory.com)

MFC 개발을 하면서 몇가지 유용한 내용들을 정리하였다. 1. CString 사용하기 1.1 변환 (CString -> Char*) CString strSample; LPSTR(LPCTSTR(strSample)) 1.2 변환 (int to CString) CString strSample; int val = 10; strSample.Format(_T("이 값은 %d 입니다."), val) 1.3 변환 (CString to int) CString strSample = _T("12345"); int val =_ttoi(strSample); 2. 부모와 자식 Dialog 2.1 부모에서 자식 Dialog에 접근하기 // 자식 다이얼로그가 한개인 경우 CWnd* pParent; CWnd* pChild = pPar..

MFC 프로그램을 하다보면, 쓰레드를 접하게 되는 경우가 많다. 프로젝트를 하면서 공부했던 쓰레드 동기화에 대한 개념을 이번 글에 정리한다. 1. 쓰레드란? 쓰레드를 알기 전에, 프로그램, 프로세스, 쓰레드에 개념 [1]을 알아야 한다. 프로그램: 개발자가 작성한 소스코드(.cpp, .h)를 컴파일하면, 실행파일 (.exe)이 만들어지는데, 이러한 실행파일 (.exe)을 프로그램이라 한다. 프로세스: 프로그램을 실행한 것이 프로세스이다. 쓰레드: 프로세스를 구성하고 있는 요소가 쓰레드이다. 따라서 하나의 프로세스에는 여러개의 쓰레드가 존재할 수 있다. *프로세스 VS 쓰레드 쓰레드를 여러개 구성 (멀티 쓰레드) 할 수 있는 것과 마찬가지로 프로세스 역시 여러개 (멀티 프로세스) 구성할 수 있다. 이 둘간..


MFC를 하기 위해선 기본적으로 이벤트 - 메시지 - 핸들러 함수 관계를 이해해야 한다. 1. 이벤트 MFC 프로그램과 사용자는 끊임없이 상호작용을 한다. 사용자는 MFC 프로그램에서 마우스를 클릭하거나, 키보드를 통해 문자를 입력하는 등의 일련의 활동을 하는데 이러한 활동을 통해 이벤트라고 한다. 이벤트를 통해 사용자는 MFC 프로그램과 상호작용을 할 수 있는 것이다. 2. 메시지 이벤트가 발생하면, MFC 프로그램은 이를 메시지로 변환한다. 예를 들어서, 마우스를 움직일 때 마다, MFC 프로그램에서는 이벤트가 발생하고, 이 이벤트에 상응하는 "WM_MOUSEMOVE"라는 메시지가 발생한다. 이러한 메시지를 관리는 "클래스 마법사"에서 수행한다. 클래스 마법사는 그림 1과 같이 "1. 리소스 뷰 ->..