Best click
-
[TIFF란?] TIFF 이미지 형식과 Libtiff 라이브러리 TIFF 가 뭔가요? 호환성이 뛰어나 매킨토시와 IBM PC에서 공통으로 사용할 수 있는 최초의 파일 포맷. RGB 및 CMYK 이미지를 24비트까지 지원하며 이미지 손상이 없는 LZW(Lempelziv welch)라는 압축 방식을 채택하고 있다. LZW 압축은 이미지의 질을 손상시키지 않는 '무손실 압축'으로 가장 좋은 압축률을 보인다. 포토숍 이미지를 이 포맷으로 저장을 하게 되면, 매킨토시에서 사용할 것인지 또는 IBM PC 호환 기종에서 읽어 들일 것인지를 선택해야 한다. [네이버 지식백과] TIFF [tagged image file format] LibTiff 이 TIFF 관련해서 http://www.libtiff.org/ 홈페이지에서 TIFF 파일을 생성하거나 TIFF 확장자 정보를 얻거나 하..
-
Android(11)_Python Server & Android Client Thread 우선 통신, 소켓 등에 대해 자세히 설명하자면 너무 길어지기 때문에 예제 위주로 기초적인 TCP 통신을 설명하고자 합니다. 서버-클라이언트 TCP 소켓 통신을 할 때 이 네트워크에서 디바이스와 디바이스가 어떻게 정보를 주고받는지에 대해 감이 안올 수 있기 때문에 다음 그림으로 설명할게요! 우선 Client가 Server의 위치를 어떻게 알고 가느냐? Server의 IP주소와 이 Server와 Client를 연결시킬 포트번호를 이용해서 찾아갑니다. 예를들어 IP주소는 집주소와 같습니다. 세상에서 하나밖에 없는 주소로, Client가 전 세계에 연결되어있는 네트워크에서 내가 원하는 서버를 찾기 위해서는 이 IP 주소를 이용해서 찾을 수 있습니다. 근데 여기서 포트번호는 왜 필요할까? 우리가 그럼 Naver의.. -
CWnd::Invalidate 함수 & static 에 글씨가 겹쳐서 보일 때 Static에 글씨가 겹쳐서 보일 때 조치법 CStatic 을 상속받은 재정의 클래스를 선언하고, OnPaint 함수에서 배경을 투명화하고 DrawText 하도록 해주었다. 그랬더니 Invalidate 함수를 호출할때마다 글자가 한겹씩 점점 더 진해지는게 아닌가! 이런 경우는 아래 URL 을 참고하여 해결하는 방법이 있다. 필자는 우선 이런 방식으로 해결은 하였다만, 또 다른 방법도 있어 소개하려고 한다. 1. 글씨를 출력하는 SetWindowsText 호출 전에 Invalidate(FALSE)를 호출하는 방법 https://itbrain.tistory.com/entry/MFCStatic-Control-%EB%B0%B0%EA%B2%BD-%ED%88%AC%EB%AA%85%ED%99%94-%EB%B0%8F-..
-
(2) MFC 초기화 함수 : InitInstance, OnInitDialog CMFCApplication1App::InitInstance 함수 InitInstance 함수는 이 프로세스의 초기화 함수 입니다. CMFCApplication1App이 상속받고 있는 CWinApp의 InitInstance 함수를 호출합니다. 이 프로세스의 초기화 루틴에서 해야할 동작들은 CWinApp의 InitInstance 함수에 이 프로세스의 초기화 루틴들이 이미 있어요. 내가 만드는 프로그램은 이 함수를 호출해주기만 하면 됩니다. 그리고나서 InitInstance 함수 밑에보시면 CMFCApplication1Dlg 의 인스턴스를 생성해서 아직까지 뭔지는 몰라도 DoModal이라는 함수를 호출해주고 있죠. 이 프로세스에서 윈도우를 생성해주는 부분이라고 생각하시면 됩니다. CMFCApplication..
MFC (Windows library)
-
[다이얼로그 배경색 지우기] OnEraseBkgnd 와 OnCtlColor 2020.08.08
-
(2) MFC 초기화 함수 : InitInstance, OnInitDialog 2020.08.08
-
(1) MFC 시작하기 2020.08.08
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