본문 바로가기

프로그래머의 꿈54

MFC05. RESOURCE ResourceDemo라는 이름으로 Multiple documents를 설정하여 프로젝트를 생성(MakeProgram에서 설명했듯이 Project style을 MFC standard로 Resource language는 한국어로 바꾸어 설정)하고 Workspace에서 Resource View 탭을 선택하면 다음과 같이 화면에 나타납니다. Resource View 탭이 화면에 없으면 View의 부메뉴 Other Windows의 Resource View를 선택하면 화면에 나타납니다. 각 항목들의 기능을 살펴 보면 다음과 같습니다. Accelerator : Ctrl키와 함께 S키를 누르면 저장되도록 설정등 메뉴와 연결되는 핫키를 설정합니다. Dialog : 대화 상자 설계시 사용합니다. Icon : Icon 모.. 2022. 3. 7.
MFC04. GUI(Graphic User Interface) GUI는 화면상에 출력하는 부분으로 텍스트 출력, 선 출력, 사각형 출력 등 여러 가지가 있습니다. 도스 프로그램을 하던 사람이 윈도우 프로그램을 할 경우 이 부분에서 버그를 많이 만들고 또한 이 경우 디버깅도 어렵습니다. 따라서 필자는 GUI용 클래스를 만들어 제공합니다. 작성한 클래스는 두가지로 텍스트 출력용 클래스(CText) 및 그래픽 출력용 클래스(CDrawTools)입니다. MFC에서 GUI 함수는 CDC를 기반으로 화면뿐만 아니라 프린터에 출력합니다. CDC는 OnDraw함수의 인자로 OS가 넘겨 줍니다. CText 사용가능 함수 CSize DrawText(CDC *pDC, int x, int y, LPCTSTR strText, COLORREF Color, LOGFONT *pLogFont =.. 2022. 3. 7.
MFC03. ClassView 사용법 기본 프로그램 제작에서도 잠깐 설명했듯이 윈도우 시스템은 메시지 방식(메시지 큐를 통하여 전달)을 이용하여 프로그램이 원하는 기능을 수행합니다. 키보드를 누르면 키보드가 눌러 졌다는 메시지(WM_KEYDOWN)가 발생하고 마우스를 움직이면 마우스가 움직였다는 메시지(WM_MOUSEMOVE)가 발생하고..... 프로그램에서는 이 메시지들을 처리해 주면 됩니다. ClassView는 이 메시지로부터 유도되는 함수를 제작해 주는(다른 기능도 많이 있다) 역할을 합니다. 즉 메시지가 발생했을 때 실행될 함수를 생성합니다. Classview는 Visual Studio 프로그램의 View 메뉴의 부메뉴 ClassView를 선택하면 다음과 같이 툴바 형태로 나타납니다. ClassView에서 메시지를 삽입하고자 하는 C.. 2022. 3. 7.
MFC02. 기본프로그램 제작 일반적으로 C를 이용하여 도스용 프로그램 제작시 가장 먼저 만들어 보는 프로그램이 다음과 같을 것입니다. void main() { printf("MFC 프로그램 테스트\n"); } 이 프로그램은 단지 화면에 'MFC 프로그램 테스트'라는 스트링을 표시합니다. 이곳에서는 이 기능을 하는 프로그램을 윈도우에서 작성하는 방법을 설명합니다. 또한 도스 프로그램과 윈도우 프로그램의 차이를 간단히 설명합니다. 여기서는 모든 내용을 자세히 설명하지는 않고 자주 사용하는 내용, 꼭 알아야 할 내용을 위주로 설명합니다. Visual Studio를 설치한 후 실행하면 다음 그림과 같습니다.. File 메뉴의 부메뉴 New의 Project(Ctrl+Shift+N)를 선택하면 다음과 같은 대화 상자가 생성됩니다. 좌측 Tre.. 2022. 3. 7.
MFC01. 프로그래밍에 대하여 필자는 92년부터 프로그램을 하기 시작하였고, 96년부터는 프로그래밍이 나의 밥줄이 되어 현재에 이르고 있습니다. 어셈블리어부터 Turbo C, Borland C, 각종 Firmware, SDK 프로그래밍(Boralnd C, Visual C), MFC(Visual C)프로그래밍 등 개발 툴을 바꾸면서 프로그램을 하였습니다. 근 9년동안 프로그램을 작성하면서 정말 시행착오도 많았고 어려움도 많았습니다. 이러는 동안 미약하나마 프로그램을 하는 여러분에게 노하우라고 하긴 그렇고 느낀 점들을 이야기하고자 합니다. 1. 프로그래밍은 공부가 아닙니다.   프로그램을 하는 많은 사람들이 중도 포기할 수 있는 가장 빠른 지름길이 공부처럼 프로그래밍 공부(약간 어패가 있나?)를 하는 것입니다. 물론 처음 시작하는 사람들.. 2022. 3. 7.
QT07. 메모리 및 마우스 처리 이제 지금까지 만든 GraphicEditor에 마우스를 이용하여 객체를 그리는 기능을 추가해보겠습니다.객체를 그리는 방법은 mspaint 처럼 Image에 직접 그림을 그려 그 그림을 저장하는 형태와 일러스트 처럼 각 그리기 객체를 내부적으로 메모리를 관리하는 형태(Vector형태로 관리) 두가지가 있습니다. 여기서는 내부적으로 메모리를 관리하는 형태로 구성해보도록 하겠습니다.필자가 처음 프로그램을 시작할때 그래픽 편집기를 만들기 위해, 선그리기, 사각 그리기 등을 화면에 그리는 루틴들을 열심히 작성했습니다. 그 당시 DOS 시절이다 보니 개별 알고리즘으로 하나씩 직접 구현해야 해서 많은 시간을 들여 구현했으며, 마우스 처리 등 그래픽 편집기에서 필요한 거의 대부분의 기능을 구현하고 마지막으로 파일로 저.. 2022. 3. 6.