쓰레드 쓰레드 구문 #include detach()는 결과값을 기다리지 않고 다음 코드를 실행시키는 함수이다. join은 다른 쓰레드들이 끝날 때까지 기다려서 합친 후 실행시킨다. 쓰레드 개념을 공부하기 위해 따로 정리해 보았다. [C++] 멀티 쓰레드, 프로세스, 쓰레드 이해하기, C++ 예제 쓰레드 공부 공부 출처: 모두의 코드 C++ 쓰레드 https://modoocode.com/269 씹어먹는 C ++ - 모두의 코드 씹어먹는 C ++ - 작성일 : 2019-04-01 이 글은 115087 번 읽혔습니다. 에 대해 다룹니다. 안녕하세요 여러 giveme-happyending.tistory.com 전체 코드 함수 인클루드 #include "Process.h" // 프로세스 정보를 가져옴 #inclu..
쓰레드 공부 공부 출처: 모두의 코드 C++ 쓰레드 https://modoocode.com/269 씹어먹는 C ++ - 모두의 코드 씹어먹는 C ++ - 작성일 : 2019-04-01 이 글은 115087 번 읽혔습니다. 에 대해 다룹니다. 안녕하세요 여러분! 이번 강좌에서는 여태까지 modoocode.com 이 페이지를 스스로 공부하기 위해 요약한 것입니다. 자세한 내용은 위 링크를 참고하세요. 멀티 쓰레드 프로그램 작업 관리자 프로그램에는 여러 프로세스들이 실행되고 있는 모습을 확인할 수 있다. 프로세스란, 운영체계에서 실행되는 프로그램의 최소 단위라고 보면 된다. 즉, 우리가 1개의 프로그램을 가리킬 때 보통 1개의 프로세스를 의미하는 경우가 많다. 이 프로세스들은 컴퓨터의 두뇌라고 하는 CPU의 ..
라인에딧 값을 가져와서 검은 원을 그리는 코드를 그리며 공부해 보았다. 전체 코드 using namespace std; void CProDrawCircleDlg::OnBnClickedButton1() { CClientDC dc(this); // 라인에딧 값 가져오기 = 원의 반지름 가져오기 CString mText; mEdit.GetWindowText(mText); int r = _wtoi(mText.GetBuffer()); // 반지름 mText.ReleaseBuffer(); cout 0730(목) 강좌 리뷰~ 함수 vs 매크로 함수 : 함수는 분기(call)가 일어나서 실행된다.매크로 : 매크로에 지정된 루틴이 매크로가 사용된 지점(inline 키워드 사용)에 치환된다. 성능차이 - Size : Sp..
chrono 헤더 사용하여 c++ 함수 측정 시간을 측정하기 다음은 간단한 예제이다. #include #include // 시간 관련 기능을 포함하는 헤더 void someFunction() { // 이 함수에서는 1초 동안 멈춥니다. 실제 코드에서는 당신의 함수 로직을 넣어주세요. std::this_thread::sleep_for(std::chrono::seconds(1)); } int main() { // 시작 시간 측정 auto start = std::chrono::high_resolution_clock::now(); // 함수 실행 someFunction(); // 종료 시간 측정 auto stop = std::chrono::high_resolution_clock::now(); // 경과 시간 계..
참고 링크: https://www.youtube.com/watch?v=e6ivB-FQo_k&list=PLlIX4lkC1JdMx-vfK8I-J3-L-GL7TbMf9&index=11&pp=iAQB 초기값 어둡게 하기 변경한 부분 0으로 변경 memset(fm, 0, nWidth * nHeight); 밝기 부분 255로 나눠주기 // 점찍기 for (int k = 0; k < 100; k++) { int x = rand() % nWidth; int y = rand() % nHeight; fm[y * nPitch + x] = rand()%0xff; // 각각의 밝기에 대해서 255(0xff)로 나눠준다. } 좌표의 픽셀 값이 0이 아닐 경우로 바꿔주기 if (fm[j * nPitch + i] != 0) // 찍..
이미지 오버레이로 그림 그리기 메모리 릭 제거하기 메모리 릭을 막기 위해 새로 생성한 m_pDlgImgResult 에 대해서도 생성 후 삭제를 해 준다. 안전하게 존재하는지 if문을 걸어 작성해 준다. // 메모리 릭을 막기 위해 생성된 void CgPrjDlg::OnDestroy() { CDialogEx::OnDestroy(); if(m_pDlgImage) delete m_pDlgImage; if(m_pDlgImgResult) delete m_pDlgImgResult; } 타원 그리기 자식 다이얼로그에 타원을 그리는 코드를 만들어 볼 것이다. 먼저 헤더 폴더에 함수를 drawData를 정의해 주고 선언만 해 줬으니 cpp 파일에서 정의를 해 준다. CDlgImage 클래스 안에 있어야 하니 CDlgIm..
참고 링크: https://youtu.be/EoXP_PH0xzA?list=PLlIX4lkC1JdMx-vfK8I-J3-L-GL7TbMf9 github에서 중간단계 파일 받기 위 영상 출처) github에서 gLim-main/mfcExam 검색 후 다운받기 새 다이얼로그 이미지 만들기 헤더 이동 단축키 Ctrl + O + K DlgImage.h 파일에서 이미지 변수를 만들어 준다. CImage m_Image; // 이미지 변수를 만든 것 그리고 변수만 선언을 해준것이기 때문에 cpp 파일에서 실체를 만들어줘야 한다. ctrl + K + O 로 다시 cpp 파일로 돌아가서 initial dialog를 생성해 준다. 다이얼로그가 생성될 때는 항상 initial dialog를 콜(호출)하기 때문에 이 부분이 선행..
공부 영상 출처: https://youtu.be/Rwu9BI6Jizs?list=PLlIX4lkC1JdMx-vfK8I-J3-L-GL7TbMf9 영상에 있는 소스코드를 다운받아 프로젝트를 현재 깃허브 프로젝트 하단에 넣었다. 모달리스 다이얼로그 추가하기 클래스 마법사 단축키 ctrl + shift + X 클래스 마법사 단축키 [ctrl + shift + X] 혹은 [프로젝트] → [클래스 마법사] 를 클릭하여 클래스 마법사로 들어간다. [클래스 추가] - [MFC 클래스]를 눌러 클래스를 추가해 준다. 클래스는 다이얼로그 형태로 띄울 것이니 CDialogEx로 선택, 클래스 이름은 CDlgImage로 작성해 주었다. [확인]을 눌러 클래스를 생성한다. 리소스 뷰에 IDD_DLGIMAGE로 생성된 항목이 존재..
.gitignore 파일이 필요한 이유 소스코드를 변경할 때 git을 사용하여 커밋을 할 수 있으나 github에 업로드하지 말아야 할 파일, 보안상 올리지 말아야 할 파일, 가상환경 파일들은 .gitignore 파일 내에 지정하여 git의 관리에서 무시하게 둘 수 있다. 즉, .gitignore 파일을 사용하면 Git에게 특정 파일이나 디렉토리를 무시하도록 지시할 수 있다. .gitignore 파일 생성 터미널에서 파일을 생성할 때는) touch .gitignore 명령어를 사용하여 파일을 생성할 수 있다. 중요한 점은 파일 이름이 마침표로 시작해야 하며, 프로젝트 폴더의 루트에 있어야 한다. touch .gitignore git desktop을 사용하면) 상단의 [Repository] → [Repos..
프로젝트 이름은 mfcBitmapBtn으로 생성했다. 그림 리소스 추가 방법 1. 프로젝트 - 우클릭 - [리소스 추가]를 클릭한다. 2. 왼쪽에서 [Bitmap]을 클릭한 뒤 [새로 만들기]를 누른다. 3. 우측 하단 속성 탭에서 이름과 파일 이름을 변경해 준다. 같은 파일을 복사 - 붙여넣기 해서 Off 파일도 만들어 줬다. 저장된 파일을 확인해 보자. 상단의 [빌드] → [솔루션 빌드] 버튼을 누른 후 프로젝트 리소스 파일에 들어가면 경로상에서 리소스 파일이 이름대로 저장된 모습을 확인할 수 있다. 버튼 이미지 다운로드 이미지 출처 https://www.figma.com/community/file/1027548517256824848 Toggle Buttons 3D | Figma Community F..