728x90
반응형
1. 윈도우즈 프로그래밍
1-1 윈도우즈
1) 윈도우즈 특징과 장점
- 그래픽 기반의 운영체제이다.
- 멀티 태스킹이 가능하다.
- 메시지 구동 시스템이다.
- 장치에 독립적이다.
- 일관성이 있다.
- 리소스가 분리되어 있다.
1-2 개발툴
1) API (Application Programming Interface)
- 운영체제가 응용 프로그램을 위해 제공하는 함수의 집합
1-2-1 개발툴의 종류
1) SDK (Software Development Kit)
- 윈도우즈를 만든 마이크로소프트사에서 제공하는 윈도우즈용 프로그램 개발툴 킷
2) 클래스 라이브러리
- 복잡하고 양이 많은 API 함수들을 쉽고 빠르게 사용하기 위해 클래스로 잘 포장하여
객체위주로 프로그램을 작성하는 방법
3) 비주얼 툴
- 손으로 일일이 코드를 작성하지 않고 마우스로 마치 그림을 그리듯 화면을 디자인하며
꼭 필요한 곳에만 간단한코드를 작성하는 진보된 개발툴
1-3-가 변수 명명법
접두어 | 원래말 | 의미 |
cd | Count of Bytes | 바이트 수 |
dw | double word | 부호없는 long형 정수 |
h | handle | 원도우, 비트맵, 파일 등의 핸들 |
sz | Null Terminated | NULL 종료 문자열 |
ch | Character | 문자형 |
a | Array | 배열 |
w | Word | 부호없는 정수형 |
i | Integer | 정수형 |
p, lp | long pointer | 포인터형 |
b | Bool | 논리형 |
- windows.h 헤더 파일에 typedef로 선언되어 있으며 마치 표준 데이터형처럼 사용하므로 알아두면 유용한 데이터형
데이터형 | 의미 |
BYTE | unsigned char 형 |
CHAR | char 형 |
WORD | unsigned short 형 |
DWORD | unsigned long 형 |
LONG | long과 동일 |
BOOL | 정수형이며 TRUE, FALSE 중 한 값을 가짐 |
1-3-나 핸들 (handle)
- 구체적인 어떤 대상에 붙여진 번호
1) 특징
- 정수값이며 대부분의 경우 32비트값이다.
(목적은 오로지 구분으로 핸들끼리 중복을 막기엔 가장 적합하다. 또한, 비교나 대입연산이 가장 빠른 타입이다.)
- 운영체제가 발급하며 사용자는 쓰기만 한다.
- 같은 종류의 핸들끼리는 중복된 값을 가지지 않는다.
- 정수형의 값을 가지지만 그 실제값이 무엇인지 몰라도 상관없다.
(사용하고 버리면 그만이다.)
1-3-다 유니코드
- 16비트의 단일한 값으로 지구상의 모든 문자를 표현할 수 있는 문자 코드 체계
C 타입 | 유니코드 타입 |
char | TCHAR |
char * | LPSTR |
const char * | LPCTSTR |
2. 예제 소스
2-1 WinMain
- Entry Point
인수 | 의미 |
hInstance | 프로그램의 인스턴스 핸들이다. |
hPrevInstance | 바로 앞에 실행된 현재 프로그램의 인스턴스 핸들로 신경쓰지 않아도 된다. |
lpszCmdParam | 명령행으로 입력된 프로그램 인수이다. |
nCmdShow | 프로그램이 실행될 형태이다. |
- 인스턴스 ( 프로세서 ID ) -> 실행중인 프로그램 하나를 칭하는 용어
- 메시지 처리 함수
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
// 사용자가 의도하지 않고 호출되는 것을 callback 함수라고 한다. (운영체제가 호출하는 함수)
2-2 윈도우 클래스
- windows.h 에 다음과 같이 정의되어 있다.
typedef struct tagWNDCLASS
{
UINT style; // 창의 스타일 정의
WNDPROC lpfnWndProc; // 윈도우의 메시지 처리 함수를 지정
int cbClsExtra; // 예약 영역으로 윈도우즈가 내부적으로 사용하며
int cbWndExtra; // 아주 특수한 목적에 사용되는 여분의 공간
HINSTANCE hInstance; // 윈도우 클래스를 등록하는 프로그램의 번호
HICON hIcon; // 사용할 아이콘 지정
HCURSOR hCursor; // 커서지정
HBRUSH hbrBackground; // 배경색상 지정
LPCSTR lpszMenuName; // 프로그램이 사용할 메뉴 지정
LPCSTR lpszClassName; // 윈도우 클래스의 이름 문자열로 정의
}WNDCLASS;
2-3 윈도우 생성
윈도우 클래스를 동록 후 윈도우를 생성할 때는 CreateWindow 함수를 사용한다.
- HWND CreateWindow(lpszClassName, lpszWindowName, dwStyle, x, y, nWindth, nHeight, hwndParent, hmenu, hinst, lpvParam)
- BOOL ShowWindow(hWnd, nCmdShow);
( ShowWindow를 통하여 생성한 window를 출력한다. )
2-4 과정
3. 출력
3-1 DC
1) 윈도우즈에는 3가지 동적 연결 라이브러리(DLL)로 구성
- 메모리 관리 및 프로그램을 실행시키는 KERNEL
- 유저 인터페이스와 윈도우를 관리하는 USER
- 화면처리 그래픽을 담당하는 GDI(Graphic Device Interface)
2) DC(Device Context)
- 출력에 필요한 모든 정보를 가지는 데이터 구조체
- GDI 모듈에 의해 관리
- 이벤트 드리븐 시스템
(운영체제로부터 메시지를 받아 동작하며 프로그램의 실행순서는 프로그래머가 미리 의도한 대로가 아닌
사용자가 프로그램 조작하는 순서인 발생하는 메시지의 순서에 따라 이루어진다.)
WM_LBUTTONDOWN - 마우스 왼쪽 버튼이 눌러질 때 발생하는 메시지
WM_LBUTTONDOWN를 이용한 예제
728x90
'코스웨어 > 14년 스마트컨트롤러' 카테고리의 다른 글
2014년 9월 16일 출석번호 6번 김용우 (8) | 2014.09.16 |
---|---|
2014.09.15 출석번호 5번 김상엽 -업무일지 수정 (8) | 2014.09.15 |
2014.09.12 업무일지] 김대희 (10) | 2014.09.12 |
[2014.09.11 업무일지] 고한솔 (9) | 2014.09.11 |
2014.09.03 업무보고 출번 21 이재우 (7) | 2014.09.03 |
일일보고서 09.01 [20. 이경진] (7) | 2014.09.01 |
일일교육보고 2014.08.27 (출석번호 18번 오영주) (7) | 2014.08.28 |
2014.08.26 교육보고 - 오두환 (15) | 2014.08.26 |