VC,DirectX8开发实例(启动黑屏窗口)

//
     
     
// VCDirectX8开发实例(启动黑屏窗口)
    
    
//
     
     

   
   
    
     
   
   
#include <windows.h>
#include <d3d8.h>
#define TITLE  TEXT("Kitty on your lap")

   
   
    
     
   
   
//Interface初期化
    
    
IDirect3D8 * pDirect3D;
IDirect3DDevice8 * pD3Device;

   
   
    
     
   
   
LRESULT CALLBACK WndProc(HWND hWnd , UINT msg , WPARAM wp , LPARAM lp) {
        switch (msg) {
        case WM_DESTROY:
               PostQuitMessage(0);
               return 0;
        }
        return DefWindowProc(hWnd , msg , wp , lp);
}

   
   
    
     
   
   
int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance ,
                       PSTR lpCmdLine , int nCmdShow) {
        MSG msg;
        HWND hWnd;
        WNDCLASS winc;
        D3DPRESENT_PARAMETERS d3dpp;
        D3DDISPLAYMODE d3ddm;

   
   
    
     
   
   
        pDirect3D = Direct3DCreate8(D3D_SDK_VERSION);

   
   
    
     
   
   
        // D3DDISPLAYMODE 構造体へのポインタを指定します
        pDirect3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT , &d3ddm);

   
   
    
     
   
   
        ZeroMemory(&d3dpp , sizeof (D3DPRESENT_PARAMETERS));
        d3dpp.BackBufferFormat = d3ddm.Format;
        d3dpp.BackBufferCount = 1;
        d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
        d3dpp.Windowed = TRUE;

   
   
    
     
   
   
        winc.style             = CS_HREDRAW | CS_VREDRAW;
        winc.lpfnWndProc       = WndProc;
        winc.cbClsExtra        = winc.cbWndExtra = 0;
        winc.hInstance         = hInstance;
        winc.hIcon             = LoadIcon(NULL , IDI_APPLICATION);
        winc.hCursor           = LoadCursor(NULL , IDC_ARROW);
        winc.hbrBackground     = (HBRUSH)GetStockObject(WHITE_BRUSH);
        winc.lpszMenuName      = NULL;
        winc.lpszClassName     = TEXT("KITTY");

   
   
    
     
   
   
        if (!RegisterClass(&winc)) return 0;

   
   
    
     
   
   
        hWnd = CreateWindow(
               TEXT("KITTY") , TITLE , WS_OVERLAPPEDWINDOW | WS_VISIBLE ,
               CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT ,
               NULL , NULL , hInstance , NULL
        );
        if (!hWnd) return 0;

   
   
    
     
   
   
        pDirect3D->CreateDevice(
               D3DADAPTER_DEFAULT , //选择使用的解·适配器
     
     
               D3DDEVTYPE_HAL ,     //D3DDEVTYPE 列挙型を指定します
               hWnd ,               //指定件窗的方向
    
    
               D3DCREATE_SOFTWARE_VERTEXPROCESSING , //指定表示设备作的
     
     
               &d3dpp ,            //デバイスの状態を指定します
               &pD3Device    //インターフェイスを受けるポインタのポインタを指定します
        );

   
   
    
     
   
   
        while (GetMessage(&msg , NULL , 0 , 0 )) {
               TranslateMessage(&msg);
               DispatchMessage(&msg);
        }

   
   
    
     
   
   
        //资源释放
    
    
        pDirect3D->Release();
        pD3Device->Release();
        return msg.wParam;
}

 

 

 

//
     
     
// Adapter数量取得
    
    
// IDirect3D8::GetAdapterCount()函数的使用
     
     
//
     
     

   
   
    
     
   
   
#include <windows.h>
#include <d3d8.h>
#define TITLE  TEXT("Kitty on your lap")

   
   
    
     
   
   
//接口定义
    
    
IDirect3D8 * pDirect3D;

   
   
    
     
   
   
LRESULT CALLBACK WndProc(HWND hWnd , UINT msg , WPARAM wp , LPARAM lp) {
        HDC hdc;
        PAINTSTRUCT ps;
        RECT rect;
        static TCHAR strText[1024];
        static D3DDISPLAYMODE d3ddm;

   
   
    
     
   
   
        switch (msg) {
        case WM_DESTROY:
               PostQuitMessage(0);
               return 0;
        case WM_CREATE:
               pDirect3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT , &d3ddm);
               wsprintf(strText , 
                       TEXT("Adapter = %d/nWidth = %d/n")
                       TEXT("Height = %d/nRefreshRate = %d") ,
                       pDirect3D->GetAdapterCount() ,
                       d3ddm.Width , d3ddm.Height , d3ddm.RefreshRate
               );
     
     
               return 0;
        case WM_PAINT:
               hdc = BeginPaint(hWnd , &ps);
               GetClientRect(hWnd , &rect);
               DrawText(hdc , strText , -1 , &rect , DT_LEFT);
               EndPaint(hWnd , &ps);
               return 0;
        }
        return DefWindowProc(hWnd , msg , wp , lp);
}

   
   
    
     
   
   
int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance ,
                       PSTR lpCmdLine , int nCmdShow) {
        MSG msg;
        HWND hWnd;
        WNDCLASS winc;

   
   
    
     
   
   
        pDirect3D = Direct3DCreate8(D3D_SDK_VERSION);

   
   
    
     
   
   
        winc.style             = CS_HREDRAW | CS_VREDRAW;
        winc.lpfnWndProc       = WndProc;
        winc.cbClsExtra        = winc.cbWndExtra = 0;
        winc.hInstance         = hInstance;
        winc.hIcon             = LoadIcon(NULL , IDI_APPLICATION);
        winc.hCursor           = LoadCursor(NULL , IDC_ARROW);
        winc.hbrBackground     = (HBRUSH)GetStockObject(WHITE_BRUSH);
        winc.lpszMenuName      = NULL;
        winc.lpszClassName     = TEXT("KITTY");

   
   
    
     
   
   
        if (!RegisterClass(&winc)) return 0;

   
   
    
     
   
   
        hWnd = CreateWindow(
               TEXT("KITTY") , TITLE , WS_OVERLAPPEDWINDOW | WS_VISIBLE ,
               CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT ,
               NULL , NULL , hInstance , NULL
        );
        if (!hWnd) return 0;

   
   
    
     
   
   
        while (GetMessage(&msg , NULL , 0 , 0 )) {
               TranslateMessage(&msg);
               DispatchMessage(&msg);
        }

   
   
    
     
   
   
        pDirect3D->Release();
        return msg.wParam;
}

上图是显示结果图

 

 

 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值