Best click
-
C++ 11 : 일급 함수 (1)다른 함수의 매개변수로 함수 전달
std::function 은 호출 가능한 함수, 람다 표현식, 또는 다른 함수 객체, 멤버 함수에 대한 포인터, 멤버 변수에 대한 포인터 등을 저장, 복사, 호출할 때 사용한다. typedef 키워드는 다른 타입이나 함수에 대한 별칭을 정의할 때 사용한다. // ConsoleApplication1.cpp : 이 파일에는 'main' 함수가 포함됩니다. 거기서 프로그램 실행이 시작되고 종료됩니다. // #include "pch.h" #include #include #include #include // 0) return x / y; else return -1; } /* 함수 포인터를 매개변수로 받는 함수 정의 */ void PassingFunc(FuncType fn, int x, int y) { cout
2020.08.08
-
(1) MFC 시작하기
MFC 가 뭔지는 모르겠지만 윈도우에서 UI가 있는 프로그램을 만들기 위해 이 글을 읽고 계실거라 생각합니다. MFC 란 무엇인지? 에 대해서는 구글링하면 정의가 아주 많이 나와있어요. 이 글을 보고 있는 분들은 MFC가 무엇인지 보다는, MFC 라이브러리를 이용해서 프로그램을 어떻게 만드는지, Visual Studio로 MFC 프로젝트 생성은 했는데 도대체 여기 있는 소스들이 뭘 의미하는지, 어디서부터 뭘 해야할지 모르겠어서 찾아보는 분들일 거라 추측합니다. (제가 그랬거든요) 각설하고, 짧고 굵게 본론만 설명합니다. 더보기 참고로 Visual Studio 안깔려 있으시면 이 글을 참조하시면 됩니다. C++ 개발자를 위한 Visual Studio 설치하는 방법 2020/08/08 - [Dev Notes..
2020.08.08
-
Dialog에서 툴바 생성
설명 출처 블로그에 들어가면 자세하게 나와있지만MFC에서 ToolBar(도구모음)를 생성하는 방법은 Frame 기반 MFC 프로젝트에서와 Dialog 기반 MFC 프로젝트에서 다르다. 나는 다이얼로그 기반에서 ToolBar를 생성해서 붙여줬다. 툴바를 붙이고자하는 Dlg.cpp의 OnInitDialog에서 InitToolBar() 를 호출 BOOL CTest2Dlg::OnInitDialog(){CDialog::OnInitDialog();// Add "About..." menu item to system menu.// IDM_ABOUTBOX must be in the system command range.ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(ID..
2017.08.23
-
[Widget] CreateProcess & 프로세스 중복 방지
이전 글에서 MFC Dialog로 위젯을 만들어서 버튼 클릭하면 메모장 실행되는 소스를 만들었다. ShellExecute 함수를 CreateProcess로 바꿨고, 버튼을 클릭해서 메모장을 실행하고나서 또 버튼을 클릭하면 이미 실행되고 있다고 메세지 박스를 띄우는 소스이다. 1. 다이얼로그 >> 버튼 >> 더블클릭 해서 자동생성된 메소드 ( 이전 글에서 ShellExecute 함수 썼던 곳 ) void CwTest4Dlg::OnBnClickedNotepad() { HANDLE hEvent; hEvent = CreateEvent(NULL, FALSE, TRUE, AfxGetAppName()); // 프로세스가 이미 실행중인지 검사 if(GetLastError() == ERROR_ALREADY_EXISTS)..
2016.12.21
MFC (Windows library)
more
Basic Modern C++
-
C++ 11 : default, delete 키워드
default 컴파일러가 함수를 자동으로 생성하도록 명시적으로 지정 delete 컴파일러가 함수를 자동으로 생성하지 않도록 명시적으로 지정 class TEST { public: TEST() = default; TEST(const TEST&) = default; ~TEST() = default; TEST & operator=(const TEST) = delete; void* operator new(size_t) = delete; // new로 할당하지 못하게 방지 }; Q. 멤버 변수를 기본 타입이 아닌 사용자가 정의한 클래스 타입으로 멤버변수를 갖고있는 클래스이면 위에 처럼 TEST( const TEST& ) = default; 로 선언해도 깊은 복사가 이루어질까? 안될거같은데?
2020.08.08
-
C++ 11 : 지연 평가
컴퓨터 프로그래밍에서 느긋한 계산법(Lazy evaluation)은 계산의 결과값이 필요할 때까지 계산을 늦추는 기법이다. (개념적인 부분) 느긋하게 계산하면 필요없는 계산을 하지 않으므로 실행을 더 빠르게 할 수 있고, 복합 수식을 계산할 때 오류 상태를 피할 수 있고, 무한 자료 구조를 쓸 수 있고, 미리 정의된 것을 이용하지 않고 보통 함수로 제어 구조를 정의할 수 있다. 이렇게 얘기하면 무슨말인지 와닿지 않을 것이다. 앞에 얘기는 다 까먹고 그냥 새롭게 얘기를 해보자. Effective C++ 에서는 '변수 정의는 최대한 늦출 수 있을때까지 늦춰라' 라는 말이 있는데, 보통 우리는 변수 선언은 함수의 최상단에 몰아놓는 경향이 있다. 코드의 가독성 때문이기도 하는데, ( 내 생각엔 학교에서 프로그래..
2020.08.08
-
C++ 11 : 일급 함수 (1)다른 함수의 매개변수로 함수 전달
std::function 은 호출 가능한 함수, 람다 표현식, 또는 다른 함수 객체, 멤버 함수에 대한 포인터, 멤버 변수에 대한 포인터 등을 저장, 복사, 호출할 때 사용한다. typedef 키워드는 다른 타입이나 함수에 대한 별칭을 정의할 때 사용한다. // ConsoleApplication1.cpp : 이 파일에는 'main' 함수가 포함됩니다. 거기서 프로그램 실행이 시작되고 종료됩니다. // #include "pch.h" #include #include #include #include // 0) return x / y; else return -1; } /* 함수 포인터를 매개변수로 받는 함수 정의 */ void PassingFunc(FuncType fn, int x, int y) { cout
2020.08.08