//
// VC,DirectX8开发实例(启动黑屏窗口)
//
#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;
}
上图是显示结果图