728x90
반응형

코드 17

[MFC] 중국어 읽어오기 (unicode, utf-lf)

Unicode 유니코드는 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준이다. 이는 유니코드 협회가 제정한다. 현재 컴퓨터에서 널리 사용되는 거의 모든 문자를 포함하며 110만 개 이상의 코드 포인트를 지정할 수 있다. 제록스와 애플의 공동 작업이 시초라 알려져 있다. 이후 여러 기업이 참여한 임시 위원회가 구성되었고 IBM와 Microsoft를 비롯한 다수의 기업이 참가하여 1991년에 유니코드 컨소시엄을 설립하였고 현재 주도적인 여러 IT 기업이 여기에 참여하고 있다. Unicode 문서의 Header에 BOM(Byte Of Mark)을 확인하자 BOM은 Bye의 순서 표시다. Unicode의 파일이 시작되는 첫 부분에 보이지 않게, 2~3 Byte의 문자열을 추..

코드/MFC 2022.11.23

libjpeg 사용하기

jpeg format을 손 코드로 해보려다가 포기. 그냥 잘 만들어진 open source를 써야겠다는 생각이 들었다. 그중에서 가장 많이 쓰이는 것으로 보이는 libjpeg를 사용하기로 했다. libjpeg-turbo - Browse /2.1.4 at SourceForge.net Package signatures To ensure the integrity of the libjpeg-turbo binary packages, the RPM and DEB files and the source tarball are signed using the following key: http://www.libjpeg-turbo.org/key/LJT-GPG-KEY http://pool.sks-keyservers.net/pk..

코드/C++ 2022.08.23

[C++] 마우스 이벤트 후킹

Windows에서 후킹을 하기 위해서 제공하는 함수들이 있다. 이것들은 모두 DLL 환경에서 제작되어야 한다. 후킹을 위한 DLL 프로젝트와 테스트를 위한 MFC 프로젝트가 필요하다. DLL 프로젝트 일전에는 후킹을 위한 함수를 만들 때에 모두 전역 변수와 전역 함수를 사용하였지만 관리하기가 쉽지 않았다. 검색하다 보니 싱글톤 클래스 형식으로 정리된 자료가 있어서 해당 방식으로 구현했다. 전역으로 작업하는 것이 간단하기는 하나 클래스 형식으로 하는 것이 관리가 더 편하다. case DLL_PROCESS_ATTACH: if (hook_mouse_callback::instance()->attach(hModule)) cout

코드/C++ 2022.05.11

[MFC] 따라하기 05. 여러 개의 원 그리기

1. 프로젝트 예제에 사용되는 내용 구동하는 시스템 제어하기 여러 시스템 구동하기 [MFC] 따라하기 04. 원이 그려지는 동작 만들기 1. 프로젝트 예제에 사용되는 내용 원을 이루는 함수 구하기 ClientDC 2. CClientDC와 Ellipse()를 이용하여 원 그리기 Dialog Based 프로젝트를 만든 뒤, 버튼을 하나 추가하여 클릭으로 원을 그릴 수 있도록 stormpy.tistory.com 2. 시작, 일시정지, 정지 기능 만들기 '04. 원이 그려지는 동작 만들기' 프로젝트를 그대로 가져와서 버튼 3개를 만든다. 3개 모두 클릭 이벤트를 만들어 둔다. 그리기 : 원을 그리기를 처음부터 시작한다. 일시정지 : 원 그리기를 잠시 멈춘다. 정지 : 그리기를 멈춘다. 우선 그리기를 처음부터 하..

코드/MFC 2022.03.08

[MFC] 따라하기 04. 원이 그려지는 동작 만들기

1. 프로젝트 예제에 사용되는 내용 원을 이루는 함수 구하기 ClientDC 2. CClientDC와 Ellipse()를 이용하여 원 그리기 Dialog Based 프로젝트를 만든 뒤, 버튼을 하나 추가하여 클릭으로 원을 그릴 수 있도록 해보자. 위와 같이 원을 그리는 것은 어렵지 않다. Button Click 이벤트에 다음과 같이 작성하면 간단하게 작성할 수 있다. void CDrawCircleDlg::OnBnClickedDraw() { CClientDC dc(this); dc.Ellipse(10, 10, 100, 100); } CCleintDC는 window에서 device context를 가져온다. Ellipse()는 원을 그리는 함수다. OnInitDialog()에서는 CCleintDC을 이용해서..

코드/MFC 2022.03.08

[MFC] 따라하기 03. Edit box를 이용하여 여러 개의 사각형 그리기

1. 프로젝트 예제에 사용되는 내용 for문 사용 Edit box 사용법 [MFC] 따라하기 02. 버튼을 이용하여 사각형 그리기/지우기 1. 프로젝트 예제에 사용되는 내용 함수의 사용 버튼 사용의 이해 [MFC] 따라하기 01. 사각형 그리기 1. 프로젝트 예제에 사용되는 내용 Dialog Based 프로젝트 생성 방법 PaintDC()의 이해 2. 프로젝트 생 stormpy.tistory.com 2. for문과 이용하여 3 x 3 개수의 사각형 그리기 이전 글까지 진행하면 (10, 10)에서 (110, 110)에 이르는 100 x 100 pixel의 사각형을 그리게 된다. 이제부터는 똑같은 사각형을 3x3으로 9개를 그려보자. 사각형은 100 pixel의 변을 가지고 있기 때문에 10 pixel의 간..

코드/MFC 2022.03.02

[MFC] 따라하기 02. 버튼을 이용하여 사각형 그리기/지우기

1. 프로젝트 예제에 사용되는 내용 함수의 사용 버튼 사용의 이해 [MFC] 따라하기 01. 사각형 그리기 1. 프로젝트 예제에 사용되는 내용 Dialog Based 프로젝트 생성 방법 PaintDC()의 이해 2. 프로젝트 생성 MFC 응용프로그램 프로젝트를 만들기 위해서는 위 그림에 있는 버튼을 차례대로 누른다. File/New stormpy.tistory.com 2. 함수를 이용하여 사각형 그리기 사각형을 그리는 프로젝트에서 해당 기능을 떼어내어 함수로 옮겨보자. 함수의 이름은 DrawRectangle로 하며 반환 값은 없으므로 void로 선언하자. void CDrawRectDlg::DrawRectangle(CPaintDC& dc) { dc.MoveTo(10, 10); dc.LineTo(110, 1..

코드/MFC 2022.03.02

[MFC] 따라하기 01. 사각형 그리기

1. 프로젝트 예제에 사용되는 내용 Dialog Based 프로젝트 생성 방법 PaintDC()의 이해 2. 프로젝트 생성 MFC 응용프로그램 프로젝트를 만들기 위해서는 위 그림에 있는 버튼을 차례대로 누른다. File/New 메뉴를 선택한다. Project를 선택하면 Project 종류를 선택할 수 있다. Visual C++의 MFC 하위에 있는 'MFC Application'을 선택한다. 이때 하단의 Project 이름을 넣을 수 있다. ( Sample은 DrawRect이라고 정했다. ) MFC Application 프로젝트는 3가지를 선택할 수 있습니다. Single document : frame window가 있지만 child window가 아닌 프로젝트 Multiple document : fra..

코드/MFC 2022.03.02

[C++] XMLLite를 이용한 XML 파일 읽어오기

XML을 읽어오는 방법에는 여러 방법이 있다. 직접 코딩할 수도 있고, tinyXML 같은 오픈 api를 사용해도 된다. 여기서는 Visual Studio에서 제공하는 XMLLite를 이용하여 읽어 오도록 해보자. 우선 XML의 ELEMENT를 저장할 수 있는 구조체를 지정한 후 typedef struct XML_ATTRIBUTE_T { wstring name; wstring value; } XMLATTR; typedef vector XMLATTRV; typedef struct XML_ELEMENT_T { wstring title; XMLATTRV attribute; bool bSubElement; bool bSeperator; vector vElem; XML_ELEMENT_T() { bSubElemen..

코드/C++ 2021.11.08

[MFC] CEdit : 폰트와 텍스트 색깔 바꾸기 (예제)

CEdit는 기본적으로 부모의 폰트를 따라가게 된다. CEdit를 수정하는 것은 부모 창에서 조절하는 방법도 있지만 일괄로 나만의 스타일을 구축하기에는 번거롭다. 그래서 Subclassing하여 스타일을 만들어 놓으면 두고두고 쓸 수 있어 유용하다. CEdit를 Subclassing하는 CMxEdit를 만든다. 헤드 파일에 CFont 변수를 선언한 후, 생성자에 Font에 대한 데이터를 미리 넣어둔다. Set/Get 함수를 이용한 Font의 업데이트도 좋지만, 많이 사용하는 스타일로 미리 만들어 놓으면 사용 시 손이 덜가는 경우가 많다. 그리고 CEdit는 WM_CREATE 같은 이벤트가 발생하지 않기 때문에 초기화도 WM_PAINT나 WM_CTLCOLOR_REFLECT 같은 이벤트를 사용한다. Font..

코드/MFC 2021.05.19

[C++] 3점을 지나는 외접원의 중심점 구하기

3점을 지나는 원은 통상 삼각형의 외접원(CircumCircle)이라고변의 중심에서 내린 수선이 만나는 지점이다. 이때 넓이는 헤론(Heron)의 공식에 의해서 가 된다. 물론, 가정이 있다. 헤론의 공식으로 넓이를 구하면 사인(Sin) 법칙의 응용으로 외접원의 반지름을 구할 수 있다. 그렇다고 원의 중심을 구할 수 있는 것은 아니다. 결국 원의 중심을 구하기 위해서는 각 변의 중심을 잇는 수선을 구해서 교차점을 구해야 한다. // 외접원의 중심 구하기 double d, d2, yi; Point2D[] CenPoint = new Point2D[2]; for (int i = 0; i < 2; i++) CenPoint[i] = new Point2D(); // 각 변의 중심점 구하기 CenPoint[0].x ..

코드/C++ 2021.04.20
728x90
반응형