본문 바로가기
코스웨어/14년 스마트컨트롤러

2014.09.04. 업무보고서 출석번호22 허수웅

by 알 수 없는 사용자 2014. 9. 5.
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-가 변수 명명법


접두어원래말의미
cdCount of Bytes바이트 수
dwdouble word부호없는 long형 정수
hhandle원도우, 비트맵, 파일 등의 핸들
szNull TerminatedNULL 종료 문자열
chCharacter문자형
aArray배열
wWord부호없는 정수형
iInteger정수형
p, lplong pointer포인터형
bBool논리형


 - windows.h 헤더 파일에 typedef로 선언되어 있으며 마치 표준 데이터형처럼 사용하므로 알아두면 유용한 데이터형

데이터형의미
BYTEunsigned char 형
CHARchar 형
WORDunsigned short 형
DWORDunsigned long 형
LONGlong과 동일
BOOL정수형이며 TRUE, FALSE 중 한 값을 가짐


1-3-나 핸들 (handle)

 - 구체적인 어떤 대상에 붙여진 번호

1) 특징

 - 정수값이며 대부분의 경우 32비트값이다. 
   (목적은 오로지 구분으로 핸들끼리 중복을 막기엔 가장 적합하다. 또한, 비교나 대입연산이 가장 빠른 타입이다.)
 - 운영체제가 발급하며 사용자는 쓰기만 한다.
 - 같은 종류의 핸들끼리는 중복된 값을 가지지 않는다.
 - 정수형의 값을 가지지만 그 실제값이 무엇인지 몰라도 상관없다.
   (사용하고 버리면 그만이다.)


1-3-다 유니코드

 - 16비트의 단일한 값으로 지구상의 모든 문자를 표현할 수 있는 문자 코드 체계

C 타입유니코드 타입
charTCHAR
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