ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CreateWindow() 함수
    Programing/DirectX 2008. 1. 25. 01:09

    HWND CreateWindow(

      LPCTSTR lpClassName,    // 등록된 윈도우 클래스 이름

      LPCTSTR lpWindowName, // 윈도우 캡션 이름

      DWORD dwStyle,              // 윈도우 스타일

      int x,                               // 윈도우 좌측 상단의 x 좌표

      int y,                               // 윈도우 좌측 상단의 y 좌표

      int nWidth,                       // 윈도우 폭

      int nHeight,                      // 윈도우 높이
      HWND hWndParent,          // 부모 윈도우의 핸들

      HMENU hMenu,               // 메뉴 또는 자식 윈도우 식별자

      HINSTANCE hInstance,     // 윈도우를 생성한 인스턴스 핸들

      LPVOID lpParam               // CREATESTRUCT 구조체를 통해 전달되는 값

    );

     lpClassName : RegisterClass 또는 RegisterClassEx 를 호출할 때 사용하였던 윈도우의 이름

     pWindowName : 생성될 윈도우의 타이틀에 적혀질 이름, 버튼, 콘솔, 대화상자, 체크박스 등의 어떠한 윈도우라도 이 값으로 이름을 설정한다.

     dwStyle : 생성될 윈도우의 스타일을 지정한다.

     x : 생성될 윈도우의 수평 좌표, CW_USERDEFAULT 일 경우에는 시스템이 기본 위치를 지정하며 다음 인자인 y 인자는 무시한다. 메인 윈도우일 경우에는 모니터상에서의 좌표로 계산되며, 자식 윈도우로 생성되는 경우에는 부모 윈도우의 좌측 상단 부분(0,0)을 기준으로 한다.

     y : 생성될 윈도우의 수직 좌표이다.

     nWidth : 생성될 윈도우의 폭. CW_USERDEFAULT 로 설정될 경우에는 시스템이폭과 더불어 높이까지 결정하며, 다음 인자 nHeight 값은 무시된다.

     nHeight : 생성될 윈도우의 높이이다.

     hWndParent : 생성될 윈도우를 소유하는 윈도우이거나 부모 윈도우의 핸들이다.

     hMenu : 생성될 윈도우에 붙여질 메뉴 핸들이다.

     hInstance : 윈도우와 연결될 인스턴스 핸들이다.

     lpParam : 생성될 윈도우가 윈도우 생성을 마치고 WM_CREATE 메시지의 LPARAM을 통해 전달할 CREATESTRUCT 구조체에 대한 포인터이다. 생성될 윈도우가 MDI 구조일 경우에는 CLIENTCREATESTRUCT 구조체를 사용한다.

    윈도우의 외형을 결정하는 요소인 윈도우 스타일에 대해 알아보자. WinUser.h 파일에 보면 여러가지 윈도우 스타일이 정의되어 있다.


         스타일               -                   내용

    WS_BORDER           -  경계(Border)를 갖는 윈도우
    WS_CAPTION          -  캡션바를 갖는 윈도우
    WS_OVERLAPPED   -  캡션바와 경계를 갖는 윈도우
    WS_CHILD              -  특정 윈도우의 자식 윈도우
    WS_POPUP             -  돌출(팝업) 윈도우, WS_CHILD 와 함께 사용할 수 없음
    WS_MAXIMIZE        -  최대 크기로 생성되는 윈도우
    WS_MINIMIZE         -  최소 크기(아이콘)으로 생성되는 윈도우
    WS_SYSMENU        -  캡션바에 시스템 메뉴를 갖는 윈도우, WS_CAPTIO 과 함께 사용됨
    WS_YHICKFRAME    -  크기 조정이 가능한 윈도우, WS_SIZEBOX와 같음
    WS_VISIBLE            -  생성시 화면에 출력되는 윈도우
    WS_DISABLED         -  생성시 출력되지만, 사용이 불가한 윈도우
    WS_VSCROLL         -  수직 스크롤바를 갖는 윈도우


    위 내용들을 종합하여 윈도우의 스타일을 결정할 수도 있으나, 일반적으로 사용되는 정형화된 윈도우의 스타일들을 묶어 세 가지로 구분(재정의)해 놓고 있다.

    1. 오버랩드 윈도우(Overlapped Window) : 캡션바, 경계, 시스템 메뉴, 최대화 버튼, 최소화 버튼을  가진 윈도우로 크기 조정이 가능하다.

    2. 자식 윈도우(Child Window) : 부모 윈도우의 자식 윈도우로 생성되는 윈도우로, 부모 윈도우의 클라이언트 영역을 벗어날 수 없다.

    3. 팝업 윈도우(Popup Window) : 팝업 윈도우는 오너(Owner) 윈도우가 소유하며, 자식 윈도우와 다른 점은 영역의 제한이 없다는 점이다.

    이러한 자식 윈도우를 갖는 윈도우를 다른 말로 부모 윈도우(Parent Window)라고 한다. 팝업 윈도우의 경우에는 부모 윈도우라는 말을 사용하지 않고, 오너(Owner Window)라고 한다. 즉, 품안에 두고 있지 않지만, 소유하고 있다고 생각하면 된다.

    부모 윈도우가 이동하면 자식 윈도우도 따라 이동하지만, 오너 윈도우가 이동해도 팝업 윈도우는 영향을 받지 않는다. 하지만, 부모 윈도우가 최소화 되면 자식 또는 팝업 윈도우도 최소화 되고, 부모 윈도우가 종료되면 물론 둘 다 종료된다. 두 가지 윈도우의 차이는 사용 가능한 영역 및 이동과 기타 상속에 관련된 부분에 있다.

    다음은 ShowWindow API 함수에 들어가는 인자 nCmdShow 에 사용할 수 있는 값을 이다.

    SW_HIDE - 윈도우를 안보이게 하고 다른 윈도우를 활성화함
    SW_RESTORE - 윈도우가 원래의 크기와 위치로 복원. 프로그램은 아이콘화된 윈도우를 복원할 때 이 값을 지정
    SW_SHOW - 가려지거나 보이지 않았던 윈도우를 원래의 크기와 위치로 다시 표시하고 활성화함
    SW_SHOWMAXIMIZED - 윈도우를 최대화면(스크린 전체)으로 출력SW_SHOWMINIMIZED - 윈도우를 작업 표시줄(Task Bar)의 아이콘으로 표시

     // 윈도우 생성
        HWND hWnd = CreateWindow( "D3D Tutorial", "D3D Tutorial 01: CreateDevice",
                                  WS_OVERLAPPEDWINDOW, 100, 100, 300, 300,
                                  GetDesktopWindow(), NULL, wc.hInstance, NULL );

    참고 출처 : http://blog.naver.com/jini012?Redirect=Log&logNo=20037762940

    'Programing > DirectX' 카테고리의 다른 글

    자주 사용하는 API 함수  (1) 2008.02.16
    ID3DXSprite 사용하기  (1) 2008.02.13
    D3DXCreateTextureFromFileEx 함수  (0) 2008.01.30
    DrawPrimitive, DrawIndexedPrimitive, DrawPrimitiveUP, DrawIndexedPrimitiveUP  (1) 2008.01.28
    렌더링 파이프라인  (0) 2008.01.27
    버텍스 렌더링 하기  (0) 2008.01.26
    Lock()  (0) 2008.01.26
    CreateVertexBuffer 메서드  (0) 2008.01.26
    WNDCLASSEX 구조체  (0) 2008.01.25
    VS2005 에서 DirectX 9 AppWizard 만들기  (0) 2008.01.09
Designed by Tistory.