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

  • 최초 작성일: 2022년 3월 3일 (목)

목차

[TOC]

윈도우 운영체제의 특징

컴퓨터를 사용하는 사람이라면 윈도우는 익숙한 환경일 것이다. 윈도우 응용 프로그래밍 관점에서 윈도우 특징을 알아보자.


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

  • 그래픽 사용자 인터페이스는 과거에 사용되었던 도스 (DOS) 같은 텍스트 기반의 운영체제와 구분되는 외형적인 특징이다.


도스 vs 윈도우 비교

도스 (DOS) 화면

image


윈도우 (Window) 화면

image


위의 이미지를 보면 일치한 디렉토리(폴더)명을 확인할 수 있다. 윈도우는 외형적으로 폴더의 아이콘과 폴더명을 확인할 수 있는 반면에, 도스는 ‘<DIR> .dotnet’ 과 같이 텍스트 기반인 모습을 확인할 수 있다.


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


메시지 구동 구조

윈도우 운영체제에서는 실행되는 대부분의 응용 프로그램은 메시지 구동 구조를 기반으로 동작한다. 운영체제가 메시지를 통해 프로그램의 외부 또는 내부에 변화가 발생했음을 프로그램에 알려준다.

일반적으로 도스 프로그램이나 윈도우의 콘솔 응용 프로그램은 프로그래머가 정한 순서대로 작성된다. 그러므로 알고리즘 및 논리의 흐름에 중점을 두고 프로그래밍한다.

하지만, 대부분의 윈도우 응용 프로그램은 순차적으로 실행되지 않고, 받은 메시지에 따라 코드의 실행 순서가 달라진다. 그리고 메시지에 어떻게 반응하느냐에 따라 동작이 달라진다.


윈도우의 메시지 구동 구조

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

image


멀티태스킹, 멀티스레딩

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

일반적으로 하나의 CPU로 동시에 두 개 이상의 프로그램을 실행하는 것은 불가능하다.

그래서 운영체제가 CPU 시간을 적절히 각 프로그램에 분배하면 멀티태스킹이 가능하도록 한다.

다시 말해, 한 명의 사람이 두 개의 일을 번갈아 가면서 하는 것이다. 물론, 하나의 일만 했을 때 걸리는 시간보다 멀티태스킹할 때 시간이 오래 걸린다.

하지만, 이로 인해 프로그램 간 상호작용이 가능해지므로 훨씬 다양한 일을 할 수 있게 된다.


한편 윈도우 운영체제에서는 한 응용 프로그램 내에서도 동시에 진행되는 여러 개의 실행 흐름을 만들 수가 있는데 이것을 멀티스레딩 Multithreading 이라고 한다.

예를 들어, 하나의 응용 프로그램이 마우스나 키오브로 입력된 내용을 처리하는 동시에 맞춤법 검사를 하고 네트워크로 통신할 수 있다.

윈도우 운영체제는 CPU 시간을 분할하여 각 스레드에 할당하는 방법으로 멀티스레딩을 구현한다.