• WinAPI (Windows Application Programming Interface)
    • 운영체제가 응용프로그램 개발을 위해 제공하는 함수의 집합
    • 속성 -> 링커-> 시스템 -> 하위 시스템 -> Window
  • 핸들(Handle) : 윈도우 각 객체를 구분하는 인덱스 번호(정수)
  • 메시지(Message) : 윈도우에서 발생하는 이벤트를 운영체제가 윈도우에 전달하는 데이터 모음
  • HINSTANCE : 메모리상 객체를 다루는 핸들
  • HWND : 윈도우 핸들
  • APIENTRY : 진입점 (WINAPI)와 동일
  • WNDCLASS : 윈도우 데이터 셋팅 구조체
      typedef struct _WNDCLASS {
          UINT        style;          // 클래스 스타일
          WNDPROC     lpfnWndProc;    // 윈도우 프로시저
          int         cbClsExtra;     // 클래스 추가 메모리
          int         cbWndExtra;     // 윈도우 추가 메모리
          HINSTANCE   hInstance;      // 인스턴스 핸들
          HICON       hIcon;          // 아이콘 핸들
          HCURSOR     hCursor;        // 커서 핸들
          HBRUSH      hbrBackground;  // 백그라운드 브러시 핸들
          LPCWSTR     lpszMenuName;   // 메뉴 이름
          LPCWSTR     lpszClassName;  // 클래스 이름
      } WNDCLASS, *PWNDCLASS;
    • WNDCLASS를 전역 변수로 저장하고 사용하면, 창이 여러개 되었을 떄, 같은 윈도우 셋팅에 사용가능 (아니면, 나중에 팝업창 등이랑 섞여서 문제 생길 수도 있음 )
  • RegisterClass({WNDCLASS}) : 윈도우 데이터 셋팅 등록
  • ShowWindow({WNDCLASS}, {int:창표시상태}) : 초기 표시 상태를 지정
  • MSG; : 윈도우 이벤트를 구조체
  • GetMessage(&message, 0, 0, 0) : 메시지 입력 받기
  • PostQuitMessage(0); : 프로그램 종료 메시지
  • BOOL InvalidateRect(HWND hWnd, const RECT* lpRect, BOOL bErase);
    • 영역 지우고 다시 보내기 요청
  • TranslateMessage(&{MSG}) : 메시지 변환; 키보드 입력 관련 메시지 처리;
  • DispatchMessage(&{MSG}) : 메시지를 올바른 윈도우 프로시저로 보내는 역할

그리기 메서드

  • BeginPaint({HWMD},{PAINTSTRUCT}) : 그리기 시작 알림
  • EndPaint({HWMD},{PAINTSTRUCT}) : 그리기 종료 알림
  • Rectangle({HDC},{LEFT},{TOP},{RIGHT},{BOTTOM}) : 사각형 그리기
  • Ellipse : Rectangle과 동일
  • CreatePen({선타입},{두께},{RGB}) : HPEN 생성; 생성된 HPEN 핸들 반환
  • SelectObject(hdc, {대상}) : 대상 선택; 교체된 대상 반환 (이전 대상)
  • DeleteObject({대상}) : 대상 삭제

  • AdjustWindowRect(RECT&, WINDOW_STYLE, bool {MENU}) :
    • 창크기 조절, 안하면 하단과 우측 짤림 현상

'프레임워크 > WinAPI' 카테고리의 다른 글

디버그 출력  (0) 2025.03.14
애니메이션  (0) 2025.03.14

+ Recent posts

let textNodes = document.querySelectorAll("div.tt_article_useless_p_margin.contents_style > *:not(figure):not(pre)"); textNodes.forEach(function(a) { a.innerHTML = a.innerHTML.replace(/`(.*?)`/g, '$1'); });