다이렉트 X 헤더와 라이브러리를 포함 시킨다.
#include <d3d8.h>
#pragma comment (lib, "dxguid.lib")
#pragma comment (lib, "d3d8.lib")

==============================================================================================
다이렉트 X 프로그램을 만들기 위한 윈도우 프로그램을 구성할려면 몇가지 할일이 있다.
윈도우 초기화와 메세지 구조만 조금 바꾸면 된다. 메세지 구조는 다이렉트 X 샘플의 d3dapp.cpp를 참고 하였다.
더 알고 싶다면 d3dapp.cpp 소스를 참고 하면된다. 필요한 함수는 다음과 같다.

LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
bool WindowInit(HINSTANCE hInst, int nCmdShow);
bool AppInit(HINSTANCE hInst, int nCmdShow);
HRESULT RenderLoop();

호출 순서는 아래와 같이 간단하다.

*** 윈도우 생성 및 초기화 
AppInit
    WindowInit
	윈도우 생성 

*** 윈도우 메세지 루프
	WindowProc
	RenderLoop
==============================================================================================

윈도우 생성 및 초기화 단계는 일반 윈도우 어플리케이션을 만드는 과정과 같다.

	BOOL bGotMsg;

	msg.message = WM_NULL;
	PeekMessage( &msg, NULL, 0U, 0U, PM_NOREMOVE );
    while( WM_QUIT != msg.message  )
    {
        // Use PeekMessage() if the app is active, so we can use idle time to
        // render the scene. Else, use GetMessage() to avoid eating CPU time.
        if( g_bActive )
            bGotMsg = PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE );
        else
            bGotMsg = GetMessage( &msg, NULL, 0U, 0U );

        if( bGotMsg )
        {
            // Translate and dispatch the message
            //if( 0 == TranslateAccelerator( g_hWnd, hAccel, &msg ) )
            {
                TranslateMessage( &msg );
                DispatchMessage( &msg );
            }
        }
        else
        {
            if( g_bActive )
            {
                if( FAILED( RenderLoop()))
                    SendMessage( g_hWnd, WM_CLOSE, 0, 0 );
            }
        }
    }

	UnregisterClass( APPNAME, hInst);

비활성화 상태일때는 일반적인 윈도우 메세지 처리순서와 같지만 활성화 상태일 때는 PeekMessage로 
처리한다. 다 알고 있는 사실이지만 GetMessage()메세지가 들어올때까지 기다리지만 PeekMessage()
메세지가 있던 없던 바로 리턴된다. 그렇기 때문에 렌드링 루프에서는 PeekMessage()함수를 사용한다.

TranslateAccelerator()는 필요 없으므로 주석 처리되어 있다. 렌드링 루프에서 FAILED가 나면 프로그램을 
종료 하도록 하였다.

메세지 루프를 빠져 나오고 종료하기 전에 윈도우 클래스 등록을 해제한다.
==============================================================================================
마우스 커서가 필요없다면 주석 처리된 WM_SETCURSOR 곳을 풀어주면 된다.
	 case WM_SETCURSOR: 
		 SetCursor (NULL); 
		 break;