Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

DevelopmentinWindows

From ZeroWiki
Revision as of 05:23, 7 February 2021 by imported>Unknown
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

윈도우즈 운영체제 기반의 프로그램 개발에 대해 소개하는 세미나 입니다. 02학번들에게 많은 도움 되었으면 좋겠습니다.



윈도우즈 운영체제

  • 32비트 운영체제
  • 멀티태스킹 지원
  • 멀티스래딩 지원

서브시스템

  • Console 서브시스템 - 텍스트 모드 에플리케이션 운영
  • Windows 서브시스템 - GUI 모드 에플리케이션 운영
(앞으로 Windows 서브시스템 기반의 프로그래밍을 윈도우즈 프로그래밍이라고 하겠다.)
  • Native 서브시스템 - 디바이스 드라이버 운영
  • Windows CE 서브시스템 - Windows CE 에플리케이션 운영
  • POSIX 서브시스템 - POSIX 에플리케이션 운영

윈도우즈 프로그래밍

  • 표준 사용자 인터페이스 제공 (DevelopmentinWindows/UI)
  • 메시지 구동 방식
  • 하드웨어 독립적 프로그래밍
  • 윈도우즈 API
  • MFC
  • 리소스
  • DLL
  • 윈도우즈 데이터 타입
  • 헝가리언 표기법

메시지 구동 방식

  • 프로그램이 순차적으로 실행되지 않고 메시지 발생에 따라 실행이 되는 방식
http://zeropage.org/~lsk8248/wiki/Seminar/DevelopmentinWindows/Message.jpg

하드웨어 독립적 프로그래밍

http://zeropage.org/~lsk8248/wiki/Seminar/DevelopmentinWindows/Hardware.jpg
  • 하드웨어를 신경쓰지 않고 프로그래밍 할 수 있다.

윈도우즈 API와 MFC

  • 윈도우즈 API (Application Program Interface)
    • 윈도우즈 프로그래밍을 하기 위해 필요한 함수들을 제공
    • 세부적인 것들을 모두 다룰 수 있지만 너무 복잡해서 사용하기 어렵다.
  • MFC (Microsoft Foundation Class library)
    • 윈도우즈 API를 클래스로 포장하여 제공하는 클래스 라이브러리
    • 윈도우즈 API 만큼 세부적인 것들을 모두 다룰 수는 없지만 윈도우즈 API 보다 사용하기 쉽다.
    • AppWizard, ClassWizard 등의 툴과의 통합으로 더욱 쉽게 사용할 수 있다.

리소스

  • 실행파일에 붙여지는 바이너리 데이터
  • 아이콘, 커서, 메뉴, 다이얼로그 박스, 비트맵, 폰트, 엑셀레이터 테이블, 스트링 테이블, 버전 정보 등

DLL

  • Static-Link Library
http://zeropage.org/~lsk8248/wiki/Seminar/DevelopmentinWindows/SLL.jpg
  • Dynamic-Link Library
http://zeropage.org/~lsk8248/wiki/Seminar/DevelopmentinWindows/DLL.jpg
  • 코드를 여러 프로그램에서 공유하므로 메모리를 절약할 수 있다.
  • 윈도우즈 프로그래밍에서는 대부분의 라이브러리가 DLL로 제공된다.
(윈도우즈 API - kernel32.dll, gdi32.dll, user32.dll
MFC - mfc42.dll
OpenGL - gl32.dll, glu32.dll
DirectX - dplay.dll, dsound.dll, dinput.dll, ddraw.dll)

윈도우즈 데이터 타입

데이터 타입 의미
BOOL TRUE 또는 FALSE 값만 가질 수 있다.
BYTE unsigned char
CHAR signed char
DOUBLE double
DWORD unsigned long
FLOAT float
HANDLE 핸들
INT signed int
LONG signed long
LPARAM 메시지 파라미터
LPCSTR NULL 문자로 끝나는 문자열 상수 포인터
LPSTR NULL 문자로 끝나는 문자열 포인터
SHORT signed short
UINT unsigned int
WORD unsigned short
WPARAM 메시지 파라미터

헝가리언 표기법

  • 함수명
    • 일반적으로 "동사 + 목적어" 또는 "동사 + 보어" 로 만들고 각 단어의 첫글자는 대문자로 나머지는 소문자로 쓴다.
    • 윈도우를 만드는 함수는 CreateWindow, 메시지를 보내는 함수는 SendMessage
  • 변수명
접두어 의미
a 배열
b 또는 f BOOL 타입의 변수
by BYTE 타입의 변수
c 카운터로 사용되는 변수
ch CHAR 타입의 변수
dbl DOUBLE 타입의 변수
h HANDLE 타입의 변수
n 또는 i INT 타입의 변수
l LONG 타입의 변수
p & lp 포인터 변수
s 문자열
sz NULL로 끝나는 문자열
u UINT 타입의 변수
w WORD 타입의 변수
dw DWORD 타입의 변수

윈도우즈 API를 이용한 예제 프로그램

MFC를 이용한 예제 프로그램

참고자료

  • MSDN

Thread


데블스캠프2002, 5인용C++스터디