반응형

프로그래밍 기술 604

1.2 자료 형식 [Windows API]

1.2 자료 형식Win32 API에서는 다양한 시스템 형식을 제공하고 있습니다. 여러분이 C언어나 C++언어와 Win32 API를 이용한다면 프로그래밍 언어에서 제공하는 형식과 Win32 API에서 제공하는 형식을 모두 사용할 수 있습니다. 그리고 이들 형식 사이에는 공통적인 부분이 있어 상호 호환성을 제공하는 형식들이 있습니다. C언어나 C++언어로 Win32 API를 사용할 때 포함해야 할 여러가지 헤더파일이 있는데 개발 편의를 위해 기본적인 Win32 API를 이용할 때 windows.h 파일만 포함해서 사용할 수 있게 여러 헤더 파일을 windows.h 파일에 포함하고 있습니다. 그리고 windows.h 파일에 포함하는 헤더 파일 중에 대부분의 형식은 windef.h 파일에 정의하고 있습니다. 다..

1.1 Windows 커널의 핵심 모듈 [Windows API]

1.1 Windows 커널의 핵심 모듈윈도우즈 운영체제는 여러 개의 모듈로 구성하여 모듈 간의 상호 작용에 의해 동작하는 마이크로 커널입니다. Unix와 Linux는 단일 커널로 운영체제의 기능을 추가하거나 변경 등을 하려면 새로운 커널로 교체해야 합니다. 하지만 윈도우즈 운영체제는 해당 모듈을 추가하거나 삭제, 변경할 수 있습니다.윈도우즈 운영체제를 구성하는 여러 모듈에서 가장 핵심적인 모듈은 User, GDI, Kernel입니다. User 모듈에서 제공하는 대표적인 것은 윈도우 개체이며 발급한 핸들은 시스템 전역에서 사용 가능합니다. GDI 모듈에서는 펜이나 브러쉬 등과 같이 그리기에 관한 개체들을 발급하는데 이들은 해당 응용 내에서만 사용 가능합니다. Kernel 모듈에서는 파일이나 프로세스, 쓰레..

1. Windows API 소개

1. Windows API 소개Windows API는 Microsoft 사의 Windows 운영체제에서 제공하는 자료 형식과 기능을 포함하는 시스템 라이브러리입니다.Windows는 윈도우즈 운영체제를 의미하며 API는 Applicataion Program Interface의 약어로 응용 프로그램 인터페이스를 뜻합니다. 인터페이스가 특정 기능을 제공함을 약속하는 것이므로 API는 응용 프로그램을 작성할 때 사용하는 기능입니다. 따라서 Windows API는 응용 프로그램을 개발할 때 사용할 수 있게 Windows 운영체제에서 제공하는 라이브러리입니다.운영체제에서 제공하는 라이브러리에는 기능과 함께 다양한 형식들을 제공하고 있습니다. 특히 운영체제에서 제공하는 기능을 시스템 호출이라고 부릅니다. 일반적으로 ..

4. 4 폼 구현 [Windows Forms 응용 프로그램]

4. 4 폼 구현 이제 사용자와 상호작용하는 폼을 구현합시다. 4.4.1 RegForm 프로젝트에 RegForm을 추가하고 자식 컨트롤을 배치합니다. 정보를 표시하는 Label 컨트롤을 제외하고 9개의 컨트롤을 배치합니다. 일련 번호를 표시할 Label, 제목과 내용을 입력할 TextBox, 제출과 취소와 이미지 선택을 위한 버튼, 선택한 이미지를 표시할 PictureBox, 날짜를 선택하는 DateTimePicker와 MonthCalendar입니다. [그림 4.6] RegForm 자식 컨트롤 배치 using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; namespace MyReadin..

4.3 엔진 개발 [Windows Forms 응용 프로그램]

4.3 엔진 개발 이제 도서 관리자 응용의 엔진을 개발합시다. 폼을 제외한 나머지 부분을 여기에서는 엔진이라고 부를게요. 4.3.1 BookStory 도서 정보는 BookStory 클래스로 정의합시다. BookStory 클래스는 차후에 라이브러리 형태로 만들어 제공할 수 있는 형식입니다. 접근 지정을 public 으로 설정한 부분은 라이브러리 형태로 만들 때 외부 프로젝트에서 접근할 수 있게 설정한 것입니다.public class BookStory{ 도서의 일련 번호는 읽기 전용 멤버로 선언합니다. readonly int seqno;//도서 일련 번호도서 일련 번호를 가져오기 할 수 있는 속성을 제공합니다. public int No { get { return seqno; } } 도서 제목을 가져오기 할 ..

4. 폼과 폼 사이에 상호 작용 [Windows Forms 응용 프로그램]

4. 폼과 폼 사이에 상호 작용 이번에는 하나의 윈도우즈 Forms 응용 프로그램에서 서로 다른 폼 사이에 상호작용에 관해 알아봅시다. 윈도우즈 Forms 응용 프로그램을 만들다 보면 여러 개의 폼에 의해 데이터를 관리하는 것은 매우 흔한 일입니다. 이와 같은 프로그램을 작성할 때 요구자에 의해 제공해야 할 폼과 폼 내부의 컨트롤 배치는 자주 바뀔 수 있으며 이는 전체 개발 비용에 많은 부분을 차지할 수 있습니다. 이번 장에서는 여러 개의 폼에 의해 데이터를 관리하는 프로그램을 만들때 폼과 폼 사이의 관계를 느슨하게 만들어 요구자의 요구 사항이 바뀌어도 수정해야 할 부분을 줄이는 방법을 알아봅시다. 4. 1 실습할 내용(도서 관리자) 이번 장에서는 도서 관리자 응용 프로그램을 만드는 실습을 통해 폼과 폼..

3. 2 실습: 다른 프로젝트에서 만든 컨트롤 사용하기 [Windows Forms 응용 프로그램]

3. 2 실습: 다른 프로젝트에서 만든 컨트롤 사용하기 3.2.1 같은 솔루션에서 사용하기 이번에는 다른 프로젝트에서 만든 컨트롤 라이브러리를 참조하여 사용하는 방법을 알아봅시다. 먼저 3.1에서 만든 솔루션에 ColorSelectorControlLib 프로젝트를 추가하세요. 프로젝트 템플릿은 WIndows Forms 컨트롤 라이브러리를 선택합니다. [그림 3.7] 컨트롤 라이브러리 프로젝트 추가 여기에서는 3.1 실습에서 만든 ColorSelectorControl을 라이브러리 형태로 만들 것입니다. 새로 생성한 프로젝트에 기본으로 만들어진 UserControl1 은 제거하세요. 3.1 실습에서 사용자 정의 컨트롤을 추가하여 하나 하나 작성할 수 있지만 여기에서는 이미 만들었던 것을 가지고 실습하기로 할..

3.1.3 Form1 구현 [Windows Forms 응용 프로그램]

3.1.3 Form1 구현 이제 작성한 ColorSelectorControl을 사용하는 Form1 을 구현합시다. 먼저 자식 컨트롤을 배치하세요. [그림 3.6] Form1 자식 컨트롤 배치 위쪽에 ColorSelector 컨트롤을 배치하고 아래쪽에 변경할 때 사용할 컨트롤들을 배치하세요. using System; using System.Windows.Forms; namespace Ex_사용자_정의_컨트롤 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } void colorsel_ColorChanged(object sender, ColorChangeEventArgs e) { tbox_red.Text = e.Red..

3.1.2 ColorSelectControl 정의 [Windows Forms 응용 프로그램]

3.1.2 ColorSelectControl 정의 이제 프로젝트에 사용자 정의 컨트롤 ColorSelectorControl을 추가하고 자식 컨트롤을 배치하세요. [그림 3.3] ColorSelectorControl 추가 [그림 3.04] 자식 컨트롤 배치 using System; using System.Drawing; using System.Windows.Forms; namespace Ex_사용자_정의_컨트롤 { public partial class ColorSelectorControl : UserControl { public event ColorChangeEventHandler ColorChanged=null; public int Red { get; private set; } public int Gre..

3.1.1 ColorChangeEventArgs 정의 [Windows Forms 응용 프로그램]

3.1.1 ColorChangeEventArgs 정의 먼저 Windows Forms 응용 프로그램을 만드세요. 그리고 ColorChangeEventArgs 클래스를 추가하세요. 먼저 대리자 COLOR_ELEM을 정의하세요. COLOR_ELEM에는 RED, GREEN, BLUE, 전체 색상을 구분하기 위한 값들을 열거합니다. public enum COLOR_ELEM{ CE_RED, CE_GREEN, CE_BLUE, CE_ALL } 이벤트의 인자는 EventArgs의 파생 클래스로 작성하는 것을 권장합니다.public class ColorChangeEventArgs:EventArgs{ 이벤트의 인자는 이벤트 핸들러에서 사용할 인자들을 속성으로 제공하여 편의성을 높여줍니다. 여기에서는 Red,Green,Blu..

반응형