에디의 우당탕탕 코딩공장

[MFC] 윈도우 프로그래밍 개요

by 인턴 에디

1. 윈도우 운영체제의 특징

  1.1 그래픽 사용자 인터페이스(GUI)

     

        💡 MFC는 사용자 인터페이스 구성 요소를 쉽게 다룰 수 있도록 C++ 라이브러리를 제공하여 프로그래머가 직접 다루어야 할 많은 부분을 자동으로 처리해준다.

 

   1.2 메세지 구동 구조

        윈도우 운영체제에서 실행되는 응용 프로그램 -> 메세지 구동 구조( Message-Driven Architecture )를 기반으로 동작.

  

      1️⃣ 외부에서 메세지를 방생시키는 이벤트 발생
      2️⃣ 운영체제가 관리하는 시스템 메세지 큐( Message Queue )에 정보 저장.
      3️⃣ 각각의 응용 프로그램은 운영체제로부터 독립적인 메세지 큐를 할당 받음.
      4️⃣ 응용 프로그램은 자신의 메세지 큐를 감시하다가, 발생한 메세지가 큐에 들어오면 하나씩 꺼내어 처리
      5️⃣ 메세지가 없을 때-> 대기

 

    1.3 멀티태스킹과 멀티스레딩

         ✔ 멀티태스킹(Multitasking) : 사용자에게 서로 다른 프로그램이 동시에 수행되는 것처럼 보이게 하는 기술.

            - 운영체제가 CPU 시간을 적절히 분할해서 각 프로그램에 할당하면 멀티태스킹 가능. 

            - 멀티태스킹을 지원하는 운영체제에서는 프로그램 간 상호작용이 가능하므로 더 다양한 일을 할 수 있음.

 

         ✔ 멀티스레딩(Multithreading): 윈도우 응용체제는 CPU 시간을 분할해서 각 스레드에 할당하는 방법으로 멀티스레딩 구현.

              - ex) 하나의 응용 프로그램이 마우스나 키보드로 입력된 내용을 처리하는 동시에 맞춤법 검사를 수행하고 네트워크를 이용해 통신

 

 

2. 윈도우 응용 프로그램의 특징

   2.1 API 호출문 집합

       🤍 윈도우 API : 유닉스의 시스템 콜( System Call )과 유사한 개념으로 윈도우 운영체제가 응용 프로그램에 제공하는 각종 함수의 집합.

       - 16비트 윈도우에서는 Win16 API, 32 또는 64비트 윈도우에서는 WIn32 API라고 부름.

 

   2.2 메세지 핸들러 집합

       🤍 메세지 핸들러 : 메세지를 받았을 떄 동작을 결정하는 코드

       - 프로그래머는 키보드 메세지 핸들러, 마우스 메세지 핸들러, 메뉴 메세지 핸들러 같은 다양한 메세지 핸들러를 작성.

       - 메세지 핸들러의 집합 = 윈도우 프로시저(Window Procedure)

       - 윈도우 운영체제는 응용 프로그램이 처리하지 않은 메세지를 자동으로 처리할 수 있도록 운영체제 차원의 메세지 핸들러를 제공.

 

   2.3 실행파일과 DLL 집합

         🤍 DLL ( Dynamic-Link Library) : 프로그램 실행 중에 결합하여 사용할 수 있는 코드와 리소스 집합.

              - 디스크에서는 확장자가 '.DLL'인 파일로 존재.

              - 자주 사용하는 기능을 DLL로 구현해두면 여러 프로그램이 공유할 수 있으므르 메무리와 디스크 자원을 효                 율적으로 사용 가능. 

              -  윈도우 운영체제가 제공하는 API -> DLL 형태로 제공 또는 프로그래머가 직접 필요한 기능을 DLL로 제작.

 

   2.4 장치 독립성

        - 윈도우 응용 프로그램은 모니터, 비디오 카드 등등 같은 주변 장치가 바뀌어도 장치 드라이버만 설치하면 프로그램을 수정하지 않고 그대로 실행 가능하다.

        - 응용 프로그램은 주변 장치를 직접 다루지 않고 API를 통해 드라이버와 간접적으로 통신

             => 장치 독립성(Device-Independency)를 가짐.

 

 

3. 윈도우 응용 프로그램의 개발 방식

   3.1 SDK ( Software Development Kit)

       - MS에서 윈도우 응용 프로그램 제작을 위해 배포하는 개발 도구 모음.

       - 컴파일러를 비롯한 각종 개발툴, 헤더 파일, 라이브러리 파일, 도움말 등이 포함.

       - SDK 프로그램 개발 : C/C++ 언어로 윈도우 API를 직접 호출해서 프로그램을 구현한다는 것을 뜻함.

 

   3.2 RAD ( Rapid Application Development )

       - 비주얼 베이직이나 델파이처럼 화면을 시각적으로 디자인하고 여기에 코드를 추가해 프로그램을 개발하는 방식.

       - 세부적으로 제어하기 어려움.

 

   3.3 클래스 라이브러리( Class Library )

       - 윈도우 응용 프로그램 개발에 필수적인 기능을 C++와 같은 객체지향 언어를 이용하여 클래스화 한것.

      ex) MFC( Microsoft Foundation Class Library), OWL

 

   3.4 .NET 프레임워크

       - 윈도우 운영체제에 설치할 수 있는 소프트웨어 개발 및 실행환경.

블로그의 정보

에디의 우당탕탕 코딩 공장

인턴 에디

활동하기