'2010/01/04'에 해당되는 글 4건

  1. 2010.01.04 디폴트 함수
  2. 2010.01.04 API (원 가지고 놀기)
  3. 2010.01.04 API란?
  4. 2010.01.04 객체지향이란?


#include <windows.h>


LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
 switch( msg )
 {
 case WM_LBUTTONDOWN:
  return 0;
 case WM_RBUTTONDOWN:
  return 0;
 case WM_DESTROY:
  PostQuitMessage(0);
  return 0;
 }
 return DefWindowProc(hwnd, msg, wParam, lParam);
}


int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
       LPSTR lpCmdLine, int nShowCmd)
{
 // 1. 윈도우 클래스 만들기
 WNDCLASS wc;
 wc.cbWndExtra   = 0;
 wc.cbClsExtra   = 0;
 wc.hbrBackground  = (HBRUSH)GetStockObject(WHITE_BRUSH);
 wc.hCursor    = LoadCursor(0, IDC_ARROW);
 wc.hIcon    = LoadIcon(0, IDI_APPLICATION);
 wc.hInstance   = hInstance;
 wc.lpfnWndProc   = WndProc;   // DefWindowProc;
 wc.lpszClassName  = "First";
 wc.lpszMenuName   = 0;
 wc.style    = 0;

 // 2. 등록(레지스트리에)
 RegisterClass(&wc);

 // 3. 윈도우 창 만들기
 HWND hwnd = CreateWindowEx( 0,     // WS_EX_TOPMOST
     "first",    // 클래스 명
     "Hello",    // 캡션바 내용
     WS_OVERLAPPEDWINDOW,
     CW_USEDEFAULT , 0, CW_USEDEFAULT, 0, // 초기 위치
     0, 0,   // 부모 윈도우 핸들, 메뉴 핸들
     hInstance,  // WinMain의 1번째 파라미터 (exe 주소)
     0);   // 생성 인자

 

 // 4. 윈도우 보여주기
 ShowWindow(hwnd, SW_SHOW);
 UpdateWindow(hwnd);
 

 // 5. Message
 MSG msg;
 while( GetMessage( &msg, 0, 0, 0 ) )
 {
  TranslateMessage(&msg);
  DispatchMessage(&msg);
 }
 return 0;
}

'API & MFC > API & 시스템프로그래밍' 카테고리의 다른 글

서비스  (0) 2010.01.13
IPC란?  (0) 2010.01.12
동기화  (0) 2010.01.12
API (원 가지고 놀기)  (0) 2010.01.04
API란?  (0) 2010.01.04
Posted by 아몰라


HDC hdc;       //DC의 핸들 HDC 만들기
 PAINTSTRUCT ps;  //그림 그리기에 필요한 여러가지 데이터
 static int x;
 static int y;
  
 switch(iMessage)
 {
 case WM_DESTROY: PostQuitMessage(0); return 0;
 
 case WM_LBUTTONDOWN:
  x=LOWORD(IParam);
  y=HIWORD(IParam);      
  InvalidateRect(hWnd, NULL, TRUE);  //첫번째 인자: 무효화할 윈도우 
                                                      //두번째 인자: 무효화할 사각영역을 지정하되, NULL일 경우 전 영역 
                                                     //세번째 인자: 무효화되기 전에 배경을 모두 지운 후 다시 그릴 것인지 아니면   배경을 지우지 않고 그릴 것인지를 지정한다. 이 값이 TRUE 이면 배경을 지운 후 다시 그리고 FALSE이면 배경을 지우지 않은 채로 다시 그린다.

  return 0;

 case WM_PAINT:
  hdc = BeginPaint(hWnd, &ps);  // 윈도우 핸들과 페인트 정보 구조체
  Ellipse(hdc, x-100, y-100, x+100, y+100); //원그리기
  EndPaint(hWnd, &ps); 
  return 0; 

 case WM_KEYDOWN:
  switch(wParam)
  {
  case VK_LEFT:
   x-=10;
   break;
  case VK_RIGHT:
   x+=10;
   break;
  case VK_UP:
   y-=10;
   break;
  case VK_DOWN:
   y+=10;
   break;
  }
  InvalidateRect(hWnd, NULL, TRUE);
 }

'API & MFC > API & 시스템프로그래밍' 카테고리의 다른 글

서비스  (0) 2010.01.13
IPC란?  (0) 2010.01.12
동기화  (0) 2010.01.12
디폴트 함수  (0) 2010.01.04
API란?  (0) 2010.01.04
Posted by 아몰라
API 는 Application Programming Interface의 약자로서 윈도우 상에서 응용프로그램들을 만들기 위한 함수들의 집합이라고 할 수 있고 API는 운영체제의 한 부분이며 운영체제 그 자체라고도 할 수 있다.(가장 저수준의 라이브러리)

[API의 Positioning] Application - MFC - API - Windows Kernel - HardWare


API는 운영체제가 직접 사용하는 라이브러리이다.(가장 저 수준의 프로그래밍 방법임)


GDI Module

gdi32.dll

화면이나 프린터 같은 장치의 출력을 관장하며 메시지를 관리 (pen, brush, font, bitmap)

UI(User) Module

User32.dll

사용자 인터페이스 객체들을 관리 (window, dialog, menu, cursor, icon, caret)

Kernel Module

Kernel32.dll

Windows OS의 핵심, 메모리관리, 파일 입출력, 프로그램의 로드와 실행 등 운영체제의 기본기능 수행(Process, thread, memory, I/O, Synchronizatoin)




윈도우의 장점

(보조자료)

프로그램 - 코드들의 집합 
프로세스 - 프로그램이 주메모리에 상주
스레드 - 프로세스를 여러개의 스레드들이 실행시킨다.
(Primary thread)


1. 멀티태스킹 - 다수의 프로세스가 메모리상에 상주

2. 멀티스레딩 - 동시에 여러 스레딩이 가능, 멀티스레딩은 멀티태스킹을 포함한다고 생각 할 수도 있다.

3. GUI 환경이다.

4. 동적 연결이라는 개념을 중심으로 동작한다.

5. 프로그램은 시스템에 연결되어 있는 장치의 종류를 몰라도 된다.

'API & MFC > API & 시스템프로그래밍' 카테고리의 다른 글

서비스  (0) 2010.01.13
IPC란?  (0) 2010.01.12
동기화  (0) 2010.01.12
디폴트 함수  (0) 2010.01.04
API (원 가지고 놀기)  (0) 2010.01.04
Posted by 아몰라
객체란 사물이다.

실제세계에서 볼수 있는 모든 것들 예를 들어 사람, 컴퓨터, MP3 전부 객체가 될 수 있다.

각 객체는 객체마다 속성과 행동이 있다.  객체들끼리는 서로 철저하게 독립적이며  객체들끼리는 서로 연관을 가

질수도 있고 아닐 수도 있다. 이러한 간단한 특징을 가진것이 객체이다.


객체지향 개념은 하나의 사고방식이라고 할 수 있다. 다만 이 사고방식이 몇 가지의 기본적인 원리에 뿌리를 두고 있다

는 점이 중요하다. 아래에 객체지향을 이루는 몇가지 개념들을 적어보겠다.


추상화 - 객체를 모델링할때 자신이 필요로 하는 만큼의 속성과 오퍼레이션을 추출해내는 것이다.

상속 - 가전제품 클래스 (슈퍼클래스)
          세탁기, 냉장고, 전자레인지등 (서브클래스)

 가전제품 클래스는 전원 스위치, 전기 배선의 속성과 켜다, 끄다의 오퍼레이션을 가지고 있다. 따라서, "어떤것 이 가전 제품이다"라는 사실만 알면, "가전제품 클래스가 가진 속성과 오퍼레이션을 가지고 있구나"라고 바로 알아 챌 수 있는 것이다.

이러한 관계를 상속이라고한다.

다형성 - 동일한 이름의 오퍼레이션이라도 그 오퍼레이션이 일어나는 클래스에 따라 각기 다른 행동을 수행하도록 한다.
            (open - open door, open window, open account)

캡슐화 - 객체는 자신이 수행하는 모든 행동의 과정과 속성을 다른 객체와 외부 세계에 보이지 않도록 한다.(이래서 캡슐화를 정보 은닉이라고도 부른다.) 하지만, 모든 것을 숨긴다면 객체는 아무 의미가 없기때문에 다른 객체들에게 얼굴만을 보이게하고 인터페이스를 제공한다. 인터페이스 예를 들자면 TV객체같은경우는 TV본체에 조작 버튼과 리모콘이 해당된다.

연관 - 객체는 다른 객체와 연관 관계를 가질 수 있다. 연관은 여러 가지 형태로 이루어지며, 하나의 객체는 다중성에 의해 한 개 이상의 객체와 연관될 수 있다. 또 집합연관은 연관 관계의 일종이다. 집합체는 컴포넌트 집합으로 구성된다. 복합연관은 집합연관의 특별한 종류로서, 복합체에서 컴포넌트는 복합체의 일부로써만 존재할 수 있다.
Posted by 아몰라
이전버튼 1 이전버튼