블로그 이미지
하루, 글. 그림. 영상매체. 표현을 도와주는 기기들. 도전 중. 동화다아아
    동화다아아

    카테고리

    분류 전체보기 (176)
    잡담 (1)
    IT 기기-리뷰&뉴스 (7)
    리뷰 - 도서 (1)
    리뷰 - 영상 (0)
    리뷰 - 그림/음악 (1)
    내장형 하드웨어 (163)
    Total
    Today
    Yesterday

    - 변수 명명법

    접두어

    원래말

    의미

    cb

    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

    논리형

    표준함수들은 모두 방식대로 인수 이름을 작성하므로 접두어들을 정확하게 외우고 있어야 함수의 인수가 어떤 의미인가를 금방 파악할 있다.

    ⇒ 이런 변수 명명법을 헝가리식 명명법(Hungarian Naming)이라고 한다.

    ⇒ 이렇게 쓰면 편하다는 것이지 꼭 지켜야하는 의무사항은 아니다. 더구나 이 방법은 변수의 타입에 대한 정보가 이름에 포함되어 있어 타입을 수정할 때 변수의 이름까지 같이 바꿔야 하는 불편함도 있다.

    ⇒ 하지만 문서를 읽을 때는 변수이름만으로 타입을 쉽게 판별할 수 있다.

    ⇒ 예로 hWnd는 핸들이고 lpRect는 포인터이며 bErase는 진위형(논리형)이라는 것을 금방 알 수 있다.

     

    - 유니코드

    유니코드는 16비트의 단일한 값으로 지구상의 모둔 문자를 표현할 수 있는 문자 코드 체계이다. 유니코드를 지원하려면 문자형이나 문자열에 대해 C언어의 타입을 바로 쓰지 말고 유니코드 설정에 따라 변경되는 중간 타입을 사용해야 한다.

    C 타입

    유니코드 타입

    char

    TCHAR

    char*

    LPSTR

    const char*

    LPCTSTR



    TCHAR
    C 기본 타입 하나인 char 일단 같지만 유니코드로 컴파일할 때는 wchar_t 타입이 된다. wchar_t 실제로는 unsigned short 정의되어 있으며 부호없는 16비트 정수형이다.

     

     

     

    - 윈도우 생성 예제

     

    #include<windows.h>

    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    HINSTANCE g_hInst;
    LPCTSTR lpszClass = TEXT("First");

    int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow)
    {
      HWND hWnd;
      MSG Message;
      WNDCLASS WndClass;
      g_hInst = hInstance;

      WndClass.cbClsExtra = 0;
      WndClass.cbWndExtra = 0;
      WndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
      WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
      WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
      WndClass.hInstance = hInstance;
      WndClass.lpfnWndProc = WndProc;
      WndClass.lpszClassName = lpszClass;
      WndClass.lpszMenuName = NULL;
      WndClass.style = CS_HREDRAW|CS_VREDRAW;
      RegisterClass(&WndClass);

      hWnd=CreateWindow(lpszClass, lpszClass, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, (HMENU)NULL, hInstance, NULL);
      ShowWindow(hWnd, nCmdShow);

      while(GetMessage(&Message, NULL, 00))
      {
        TranslateMessage(&Message);
        DispatchMessage(&Message);
      }
      return (int)Message.wParam;
    }

    LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)
    {
      switch(iMessage)
      {
      case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
      }
      return(DefWindowProc(hWnd, iMessage, wParam, lParam));
    }

    출력 결과

    '내장형 하드웨어 > WINAPI' 카테고리의 다른 글

    WINAPI - 그래픽(색상)  (0) 2011.09.08
    WINAPI - 그래픽(GDI 오브젝트)  (0) 2011.09.07
    WINAPI - WM_COMMAND  (0) 2011.09.06
    WINAPI - 리소스(메뉴 생성 첫번째)  (0) 2011.09.05
    WINAPI - 소스분석 첫번째  (0) 2011.08.22
    Posted by 동화다아아
    , |

    최근에 달린 댓글

    최근에 받은 트랙백

    글 보관함