More actions
imported>Unknown No edit summary |
(Repair MoniWiki formatting after migration) |
||
| Line 9: | Line 9: | ||
=== 서브시스템 === | === 서브시스템 === | ||
* Console 서브시스템 - 텍스트 모드 에플리케이션 운영 | * Console 서브시스템 - 텍스트 모드 에플리케이션 운영 | ||
* '''Windows 서브시스템 - GUI 모드 에플리케이션 운영''' | * '''Windows 서브시스템 - GUI 모드 에플리케이션 운영'''<br /> | ||
(앞으로 Windows 서브시스템 기반의 프로그래밍을 윈도우즈 프로그래밍이라고 하겠다.) | (앞으로 Windows 서브시스템 기반의 프로그래밍을 윈도우즈 프로그래밍이라고 하겠다.) | ||
* Native 서브시스템 - 디바이스 드라이버 운영 | * Native 서브시스템 - 디바이스 드라이버 운영 | ||
| Line 42: | Line 42: | ||
* 아이콘, 커서, 메뉴, 다이얼로그 박스, 비트맵, 폰트, 엑셀레이터 테이블, 스트링 테이블, 버전 정보 등 | * 아이콘, 커서, 메뉴, 다이얼로그 박스, 비트맵, 폰트, 엑셀레이터 테이블, 스트링 테이블, 버전 정보 등 | ||
=== DLL === | === DLL === | ||
* Static-Link Library | * Static-Link Library<br /> | ||
http://zeropage.org/~lsk8248/wiki/Seminar/DevelopmentinWindows/SLL.jpg | http://zeropage.org/~lsk8248/wiki/Seminar/DevelopmentinWindows/SLL.jpg | ||
* Dynamic-Link Library | * Dynamic-Link Library<br /> | ||
http://zeropage.org/~lsk8248/wiki/Seminar/DevelopmentinWindows/DLL.jpg | http://zeropage.org/~lsk8248/wiki/Seminar/DevelopmentinWindows/DLL.jpg | ||
* 코드를 여러 프로그램에서 공유하므로 메모리를 절약할 수 있다. | * 코드를 여러 프로그램에서 공유하므로 메모리를 절약할 수 있다. | ||
* 윈도우즈 프로그래밍에서는 대부분의 라이브러리가 DLL로 제공된다. | * 윈도우즈 프로그래밍에서는 대부분의 라이브러리가 DLL로 제공된다.<br /> | ||
(윈도우즈 API - kernel32.dll, gdi32.dll, user32.dll | (윈도우즈 API - kernel32.dll, gdi32.dll, user32.dll<br /> | ||
MFC - mfc42.dll | MFC - mfc42.dll<br /> | ||
OpenGL - gl32.dll, glu32.dll | OpenGL - gl32.dll, glu32.dll<br /> | ||
DirectX - dplay.dll, dsound.dll, dinput.dll, ddraw.dll) | DirectX - dplay.dll, dsound.dll, dinput.dll, ddraw.dll) | ||
=== 윈도우즈 데이터 타입 === | === 윈도우즈 데이터 타입 === | ||
| Line 172: | Line 172: | ||
---- | ---- | ||
[[데블스캠프2002]], [[5인용C++스터디]] | [[데블스캠프2002]], [[5인용C++스터디]] | ||
Latest revision as of 14:01, 26 March 2026
윈도우즈 운영체제 기반의 프로그램 개발에 대해 소개하는 세미나 입니다. 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