「カーソルキーの取得」の編集履歴(バックアップ)一覧はこちら
「カーソルキーの取得」(2009/02/28 (土) 23:57:05) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
<p>DirectInputを使用してカーソルキーの取得をします。<br />
"test.png"を読み込んでカーソルキーの入力に応じて移動させて表示します。</p>
<table cellspacing="1" cellpadding="1" width="600" border="2"><tbody><tr><td>
<p><font size="2">#include <d3d9.h><br />
#include <d3dx9.h><br />
#include <dinput.h></font></p>
<p><font size="2">#define SAFE_RELEASE(p)
{if(p){(p)->Release();(p)=NULL;}}//安全に解放する</font></p>
<p><font size="2">LPDIRECT3D9 g_pD3D = NULL;//Direct3D9<br />
LPDIRECT3DDEVICE9 g_pd3dDevice = NULL;//レンダリングデバイス<br />
LPD3DXFONT g_pFont = NULL;//フォント<br />
LPDIRECT3DTEXTURE9 pTexture = NULL;//テクスチャ<br />
LPD3DXSPRITE pSprite = NULL;//スプライト<br />
LPDIRECTINPUT8 pDinput = NULL;//インプット<br />
LPDIRECTINPUTDEVICE8 pKeyDevice = NULL;//インプットデバイス</font></p>
<p><font size="2">int posX=270,posY=180;//初期位置</font></p>
<p><font size="2">//テキスト描画<br />
void TextDraw(LPD3DXFONT pFont,char* text,int X,int Y)<br />
{<br />
RECT rect={X,Y,0,0};//描画位置<br />
//スプライトポインタ(無くても良し),描画文字,文字数(-1で全部),描画範囲,フォーマット,色<br />
pFont->DrawText(NULL, text, -1, &rect, DT_LEFT | DT_NOCLIP,
D3DCOLOR_ARGB(255, 0, 0, 0));<br />
}</font></p>
<p><font size="2">//テクスチャ描画<br />
void TexDraw(LPD3DXSPRITE &pSpr,LPDIRECT3DTEXTURE9 &pTex,int SrcX,int
SrcY,int SrcW,int SrcH,int DstX,int DstY)<br />
{<br />
RECT rect={SrcX,SrcY,SrcW,SrcH};//画像の元位置<br />
D3DXVECTOR3 Center(0,0,0);//センター<br />
D3DXVECTOR3 Pos((float)DstX,(float)DstY,0);//描画位置 <br />
pSpr->Begin(D3DXSPRITE_ALPHABLEND);<br />
pSpr->Draw(pTex,&rect,&Center,&Pos,0xffffffff);<br />
pSpr->End();<br />
}</font></p>
<p><font size="2">//Direct3D初期化<br />
HRESULT InitD3D( HWND hWnd )<br />
{<br />
//Direct3Dを生成する<br />
if(NULL==(g_pD3D=Direct3DCreate9(D3D_SDK_VERSION))){return E_FAIL;}</font></p>
<p><font size="2"> //デバイス生成用のパラメーター<br />
D3DPRESENT_PARAMETERS d3dpp;//パラメーター構造体<br />
ZeroMemory( &d3dpp, sizeof(d3dpp) );//ゼロで初期化<br />
d3dpp.Windowed = TRUE;//ウインドウモードで起動<br />
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;//バックバッファのスワップエフェクト
Direct3Dにスワップエフェクトをまかせる<br />
d3dpp.BackBufferFormat =
D3DFMT_UNKNOWN;//バックバッファのフォーマット今表示されているモニタの設定と同じ<br />
d3dpp.BackBufferCount = 1;//バックバッファの数<br />
d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE;//マルチサンプリングは行わない<br />
d3dpp.MultiSampleQuality = 0;//マルチサンプリングは行わないので0<br />
d3dpp.EnableAutoDepthStencil = TRUE;//Direct3Dに深度バッファの管理をまかせる<br />
d3dpp.AutoDepthStencilFormat = D3DFMT_D16;//深度バッファのフォーマット(通常はこの値で問題ない)<br />
d3dpp.hDeviceWindow = hWnd;//カバーウィンドウ=アプリケーションのウィンドウ<br />
d3dpp.Flags = 0;//フラグは使わない<br />
d3dpp.FullScreen_RefreshRateInHz =
D3DPRESENT_RATE_DEFAULT;//今のリフレッシュレートをそのまま使う<br />
d3dpp.PresentationInterval =
D3DPRESENT_INTERVAL_DEFAULT;//モニタの垂直回帰を待つ</font></p>
<p><font size="2"> //Direct3Dデバイスの生成 HAL(ハードウェアアクセラレーション)<br />
if(FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL,
hWnd,D3DCREATE_HARDWARE_VERTEXPROCESSING, &d3dpp, &g_pd3dDevice))){<br />
//HALが駄目ならHEL(ソフトウェアエミュレーション)<br />
if(FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL,
hWnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &g_pd3dDevice))){<br />
//駄目なら終了<br />
return(E_FAIL);<br />
}<br />
}</font></p>
<p><font size="2"> //フォントの生成 MSゴシック<br />
//デバイス,文字高さ,文字幅,フォントスタイル,ミップマップのレベル,斜体にするかどうか,文字セット,出力精度,出力品質,フォントピッチとファミリ,フォント名,フォントポインタ<br />
HRESULT hr = D3DXCreateFont( g_pd3dDevice, 20, 0, FW_HEAVY, 1, false,
SHIFTJIS_CHARSET, OUT_TT_ONLY_PRECIS,<br />
ANTIALIASED_QUALITY, FF_DONTCARE, "MS ゴシック", &g_pFont );<br />
if FAILED(hr){return(E_FAIL);}</font></p>
<p><font size="2"> //「テクスチャオブジェクト」の作成<br />
if(FAILED(D3DXCreateTextureFromFileExA(g_pd3dDevice,"test.png",128,128,0,0, D3DFMT_UNKNOWN,<br />
D3DPOOL_DEFAULT,D3DX_FILTER_NONE,D3DX_DEFAULT,<br />
0x00000000,NULL,NULL,&pTexture)))<br />
{<br />
MessageBox(0,"テクスチャの作成に失敗しました","",MB_OK);<br />
return E_FAIL;<br />
}<br />
// 「スプライトオブジェクト」の作成<br />
if(FAILED(D3DXCreateSprite(g_pd3dDevice,&pSprite)))<br />
{<br />
MessageBox(0,"スプライトの作成に失敗しました","",MB_OK);<br />
return E_FAIL;<br />
}<br />
return S_OK;<br />
}</font></p>
<p><font size="2">//DirectInput初期化<br />
HRESULT InitDInput(HWND hWnd)<br />
{<br />
HRESULT hr;<br />
//DirectInputオブジェクトの作成<br />
if( FAILED( hr = DirectInput8Create( GetModuleHandle(NULL),<br />
DIRECTINPUT_VERSION,IID_IDirectInput8, (VOID**)&pDinput, NULL ) ) )<br />
{<br />
return hr;<br />
}<br />
//DirectInputデバイスオブジェクトの作成<br />
if( FAILED( hr = pDinput->CreateDevice( GUID_SysKeyboard,<br />
&pKeyDevice, NULL ) ) )<br />
{<br />
return hr;<br />
}<br />
//デバイスをキーボードに設定<br />
if( FAILED( hr = pKeyDevice->SetDataFormat( &c_dfDIKeyboard ) )
)<br />
{<br />
return hr;<br />
}<br />
// 協調レベルの設定<br />
if( FAILED(hr= pKeyDevice->SetCooperativeLevel(<br />
hWnd,DISCL_NONEXCLUSIVE | DISCL_BACKGROUND )) )<br />
{<br />
return hr;<br />
}<br />
// デバイスを「取得」する<br />
pKeyDevice->Acquire();<br />
return S_OK;<br />
}</font></p>
<p><font size="2">//終了時解放処理<br />
VOID Cleanup()<br />
{<br />
SAFE_RELEASE(pKeyDevice);<br />
SAFE_RELEASE(pDinput);<br />
SAFE_RELEASE(pSprite);<br />
SAFE_RELEASE(pTexture);<br />
SAFE_RELEASE(g_pFont);<br />
SAFE_RELEASE(g_pd3dDevice);<br />
SAFE_RELEASE(g_pD3D);<br />
}</font></p>
<p><font size="2">//レンダリング<br />
VOID Render()<br />
{<br />
//デバイスが無いなら終了<br />
if(NULL==g_pd3dDevice){return;}</font></p>
<p><font size="2"> //バックバッファのクリア<br />
g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255,255,0),
1.0f, 0 );<br />
<br />
//シーンの開始<br />
if(SUCCEEDED(g_pd3dDevice->BeginScene()))<br />
{<br />
//ここに処理内容を書く</font></p>
<p><font size="2"> TextDraw(g_pFont,"カーソルキーの取得:カーソルキーで移動",0,0);<br />
TexDraw(pSprite,pTexture,0,0,128,128,posX,posY);</font></p>
<p><font size="2"> HRESULT hr=pKeyDevice->Acquire();<br />
if((hr==DI_OK) || (hr==S_FALSE))<br />
{<br />
BYTE diks[256];<br />
pKeyDevice->GetDeviceState(sizeof(diks),&diks);<br />
if(diks[DIK_LEFT] & 0x80){posX-=4;}<br />
if(diks[DIK_RIGHT] & 0x80){posX+=4;}<br />
if(diks[DIK_UP] & 0x80){posY-=4;}<br />
if(diks[DIK_DOWN] & 0x80){posY+=4;}<br />
} <br />
<br />
//シーンの終了<br />
g_pd3dDevice->EndScene();<br />
}</font></p>
<p><font size="2"> //バックバッファを表画面に反映させる<br />
g_pd3dDevice->Present( NULL, NULL, NULL, NULL );<br />
}</font></p>
<p><font size="2">//メッセージプロシージャ<br />
LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )<br />
{<br />
switch( msg )<br />
{<br />
case WM_DESTROY://終了時<br />
Cleanup();<br />
PostQuitMessage(0);<br />
return 0;</font></p>
<p><font size="2"> case WM_PAINT://ウインドウ描画時<br />
Render();<br />
return 0;<br />
case WM_SIZE://ウインドウサイズ変更時<br />
InvalidateRect(hWnd,NULL,true);//画面更新<br />
return 0;<br />
}</font></p>
<p><font size="2"> return DefWindowProc( hWnd, msg, wParam, lParam );<br />
}</font></p>
<p><font size="2">//メイン関数<br />
INT WINAPI wWinMain( HINSTANCE hInst, HINSTANCE, LPWSTR, INT )<br />
{<br />
//ウインドウクラスの登録<br />
WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L,<br />
GetModuleHandle(NULL), NULL, NULL, NULL, NULL,<br />
"Window1", NULL };<br />
RegisterClassEx( &wc );</font></p>
<p><font size="2"> //タイトルバーとウインドウ枠の分を含めてウインドウサイズを設定<br />
RECT rect;<br />
SetRect(&rect,0,0,640,480);<br />
AdjustWindowRect(&rect, WS_OVERLAPPEDWINDOW, FALSE);<br />
rect.right=rect.right-rect.left;<br />
rect.bottom=rect.bottom-rect.top;<br />
rect.top=0;<br />
rect.left=0;</font></p>
<p><font size="2"> //ウインドウの生成<br />
HWND hWnd = CreateWindow( "Window1", "Hello DirectX9 World !!",<br />
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, rect.right,
rect.bottom,<br />
NULL, NULL, wc.hInstance, NULL );</font></p>
<p><font size="2"> //Direct3D初期化<br />
if(SUCCEEDED(InitD3D(hWnd)))<br />
{<br />
//DirectInput初期化<br />
if(SUCCEEDED(InitDInput(hWnd)))<br />
{<br />
//ウインドウ表示<br />
ShowWindow(hWnd,SW_SHOWDEFAULT);<br />
UpdateWindow(hWnd);</font></p>
<p><font size="2"> //メッセージループ<br />
MSG msg;<br />
while( GetMessage(&msg,NULL,0,0))<br />
{<br />
TranslateMessage(&msg);<br />
DispatchMessage(&msg);<br />
}<br />
}<br />
}</font></p>
<p><font size="2"> UnregisterClass("Window1",wc.hInstance);<br />
return 0;<br />
}<br /></font></p>
</td>
</tr></tbody></table>
<p>DirectInputを使用してカーソルキーの取得をします。<br />
"test.png"を読み込んでカーソルキーの入力に応じて移動させて表示します。</p>
<p><img alt="" src="http://www36.atwiki.jp/directx?cmd=upload&act=open&pageid=22&file=di.PNG" /></p>
<table cellspacing="1" cellpadding="1" width="600" border="2"><tbody><tr><td>
<p><font size="2">#include <d3d9.h><br />
#include <d3dx9.h><br />
#include <dinput.h></font></p>
<p><font size="2">#define SAFE_RELEASE(p)
{if(p){(p)->Release();(p)=NULL;}}//安全に解放する</font></p>
<p><font size="2">LPDIRECT3D9 g_pD3D = NULL;//Direct3D9<br />
LPDIRECT3DDEVICE9 g_pd3dDevice = NULL;//レンダリングデバイス<br />
LPD3DXFONT g_pFont = NULL;//フォント<br />
LPDIRECT3DTEXTURE9 pTexture = NULL;//テクスチャ<br />
LPD3DXSPRITE pSprite = NULL;//スプライト<br />
LPDIRECTINPUT8 pDinput = NULL;//インプット<br />
LPDIRECTINPUTDEVICE8 pKeyDevice = NULL;//インプットデバイス</font></p>
<p><font size="2">int posX=270,posY=180;//初期位置</font></p>
<p><font size="2">//テキスト描画<br />
void TextDraw(LPD3DXFONT pFont,char* text,int X,int Y)<br />
{<br />
RECT rect={X,Y,0,0};//描画位置<br />
//スプライトポインタ(無くても良し),描画文字,文字数(-1で全部),描画範囲,フォーマット,色<br />
pFont->DrawText(NULL, text, -1, &rect, DT_LEFT | DT_NOCLIP,
D3DCOLOR_ARGB(255, 0, 0, 0));<br />
}</font></p>
<p><font size="2">//テクスチャ描画<br />
void TexDraw(LPD3DXSPRITE &pSpr,LPDIRECT3DTEXTURE9 &pTex,int SrcX,int
SrcY,int SrcW,int SrcH,int DstX,int DstY)<br />
{<br />
RECT rect={SrcX,SrcY,SrcW,SrcH};//画像の元位置<br />
D3DXVECTOR3 Center(0,0,0);//センター<br />
D3DXVECTOR3 Pos((float)DstX,(float)DstY,0);//描画位置 <br />
pSpr->Begin(D3DXSPRITE_ALPHABLEND);<br />
pSpr->Draw(pTex,&rect,&Center,&Pos,0xffffffff);<br />
pSpr->End();<br />
}</font></p>
<p><font size="2">//Direct3D初期化<br />
HRESULT InitD3D( HWND hWnd )<br />
{<br />
//Direct3Dを生成する<br />
if(NULL==(g_pD3D=Direct3DCreate9(D3D_SDK_VERSION))){return E_FAIL;}</font></p>
<p><font size="2"> //デバイス生成用のパラメーター<br />
D3DPRESENT_PARAMETERS d3dpp;//パラメーター構造体<br />
ZeroMemory( &d3dpp, sizeof(d3dpp) );//ゼロで初期化<br />
d3dpp.Windowed = TRUE;//ウインドウモードで起動<br />
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;//バックバッファのスワップエフェクト
Direct3Dにスワップエフェクトをまかせる<br />
d3dpp.BackBufferFormat =
D3DFMT_UNKNOWN;//バックバッファのフォーマット今表示されているモニタの設定と同じ<br />
d3dpp.BackBufferCount = 1;//バックバッファの数<br />
d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE;//マルチサンプリングは行わない<br />
d3dpp.MultiSampleQuality = 0;//マルチサンプリングは行わないので0<br />
d3dpp.EnableAutoDepthStencil = TRUE;//Direct3Dに深度バッファの管理をまかせる<br />
d3dpp.AutoDepthStencilFormat = D3DFMT_D16;//深度バッファのフォーマット(通常はこの値で問題ない)<br />
d3dpp.hDeviceWindow = hWnd;//カバーウィンドウ=アプリケーションのウィンドウ<br />
d3dpp.Flags = 0;//フラグは使わない<br />
d3dpp.FullScreen_RefreshRateInHz =
D3DPRESENT_RATE_DEFAULT;//今のリフレッシュレートをそのまま使う<br />
d3dpp.PresentationInterval =
D3DPRESENT_INTERVAL_DEFAULT;//モニタの垂直回帰を待つ</font></p>
<p><font size="2"> //Direct3Dデバイスの生成 HAL(ハードウェアアクセラレーション)<br />
if(FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL,
hWnd,D3DCREATE_HARDWARE_VERTEXPROCESSING, &d3dpp, &g_pd3dDevice))){<br />
//HALが駄目ならHEL(ソフトウェアエミュレーション)<br />
if(FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL,
hWnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &g_pd3dDevice))){<br />
//駄目なら終了<br />
return(E_FAIL);<br />
}<br />
}</font></p>
<p><font size="2"> //フォントの生成 MSゴシック<br />
//デバイス,文字高さ,文字幅,フォントスタイル,ミップマップのレベル,斜体にするかどうか,文字セット,出力精度,出力品質,フォントピッチとファミリ,フォント名,フォントポインタ<br />
HRESULT hr = D3DXCreateFont( g_pd3dDevice, 20, 0, FW_HEAVY, 1, false,
SHIFTJIS_CHARSET, OUT_TT_ONLY_PRECIS,<br />
ANTIALIASED_QUALITY, FF_DONTCARE, "MS ゴシック", &g_pFont );<br />
if FAILED(hr){return(E_FAIL);}</font></p>
<p><font size="2"> //「テクスチャオブジェクト」の作成<br />
if(FAILED(D3DXCreateTextureFromFileExA(g_pd3dDevice,"test.png",128,128,0,0, D3DFMT_UNKNOWN,<br />
D3DPOOL_DEFAULT,D3DX_FILTER_NONE,D3DX_DEFAULT,<br />
0x00000000,NULL,NULL,&pTexture)))<br />
{<br />
MessageBox(0,"テクスチャの作成に失敗しました","",MB_OK);<br />
return E_FAIL;<br />
}<br />
// 「スプライトオブジェクト」の作成<br />
if(FAILED(D3DXCreateSprite(g_pd3dDevice,&pSprite)))<br />
{<br />
MessageBox(0,"スプライトの作成に失敗しました","",MB_OK);<br />
return E_FAIL;<br />
}<br />
return S_OK;<br />
}</font></p>
<p><font size="2">//DirectInput初期化<br />
HRESULT InitDInput(HWND hWnd)<br />
{<br />
HRESULT hr;<br />
//DirectInputオブジェクトの作成<br />
if( FAILED( hr = DirectInput8Create( GetModuleHandle(NULL),<br />
DIRECTINPUT_VERSION,IID_IDirectInput8, (VOID**)&pDinput, NULL ) ) )<br />
{<br />
return hr;<br />
}<br />
//DirectInputデバイスオブジェクトの作成<br />
if( FAILED( hr = pDinput->CreateDevice( GUID_SysKeyboard,<br />
&pKeyDevice, NULL ) ) )<br />
{<br />
return hr;<br />
}<br />
//デバイスをキーボードに設定<br />
if( FAILED( hr = pKeyDevice->SetDataFormat( &c_dfDIKeyboard ) )
)<br />
{<br />
return hr;<br />
}<br />
// 協調レベルの設定<br />
if( FAILED(hr= pKeyDevice->SetCooperativeLevel(<br />
hWnd,DISCL_NONEXCLUSIVE | DISCL_BACKGROUND )) )<br />
{<br />
return hr;<br />
}<br />
// デバイスを「取得」する<br />
pKeyDevice->Acquire();<br />
return S_OK;<br />
}</font></p>
<p><font size="2">//終了時解放処理<br />
VOID Cleanup()<br />
{<br />
SAFE_RELEASE(pKeyDevice);<br />
SAFE_RELEASE(pDinput);<br />
SAFE_RELEASE(pSprite);<br />
SAFE_RELEASE(pTexture);<br />
SAFE_RELEASE(g_pFont);<br />
SAFE_RELEASE(g_pd3dDevice);<br />
SAFE_RELEASE(g_pD3D);<br />
}</font></p>
<p><font size="2">//レンダリング<br />
VOID Render()<br />
{<br />
//デバイスが無いなら終了<br />
if(NULL==g_pd3dDevice){return;}</font></p>
<p><font size="2"> //バックバッファのクリア<br />
g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255,255,0),
1.0f, 0 );<br />
<br />
//シーンの開始<br />
if(SUCCEEDED(g_pd3dDevice->BeginScene()))<br />
{<br />
//ここに処理内容を書く</font></p>
<p><font size="2"> TextDraw(g_pFont,"カーソルキーの取得:カーソルキーで移動",0,0);<br />
TexDraw(pSprite,pTexture,0,0,128,128,posX,posY);</font></p>
<p><font size="2"> HRESULT hr=pKeyDevice->Acquire();<br />
if((hr==DI_OK) || (hr==S_FALSE))<br />
{<br />
BYTE diks[256];<br />
pKeyDevice->GetDeviceState(sizeof(diks),&diks);<br />
if(diks[DIK_LEFT] & 0x80){posX-=4;}<br />
if(diks[DIK_RIGHT] & 0x80){posX+=4;}<br />
if(diks[DIK_UP] & 0x80){posY-=4;}<br />
if(diks[DIK_DOWN] & 0x80){posY+=4;}<br />
} <br />
<br />
//シーンの終了<br />
g_pd3dDevice->EndScene();<br />
}</font></p>
<p><font size="2"> //バックバッファを表画面に反映させる<br />
g_pd3dDevice->Present( NULL, NULL, NULL, NULL );<br />
}</font></p>
<p><font size="2">//メッセージプロシージャ<br />
LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )<br />
{<br />
switch( msg )<br />
{<br />
case WM_DESTROY://終了時<br />
Cleanup();<br />
PostQuitMessage(0);<br />
return 0;</font></p>
<p><font size="2"> case WM_PAINT://ウインドウ描画時<br />
Render();<br />
return 0;<br />
case WM_SIZE://ウインドウサイズ変更時<br />
InvalidateRect(hWnd,NULL,true);//画面更新<br />
return 0;<br />
}</font></p>
<p><font size="2"> return DefWindowProc( hWnd, msg, wParam, lParam );<br />
}</font></p>
<p><font size="2">//メイン関数<br />
INT WINAPI wWinMain( HINSTANCE hInst, HINSTANCE, LPWSTR, INT )<br />
{<br />
//ウインドウクラスの登録<br />
WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L,<br />
GetModuleHandle(NULL), NULL, NULL, NULL, NULL,<br />
"Window1", NULL };<br />
RegisterClassEx( &wc );</font></p>
<p><font size="2"> //タイトルバーとウインドウ枠の分を含めてウインドウサイズを設定<br />
RECT rect;<br />
SetRect(&rect,0,0,640,480);<br />
AdjustWindowRect(&rect, WS_OVERLAPPEDWINDOW, FALSE);<br />
rect.right=rect.right-rect.left;<br />
rect.bottom=rect.bottom-rect.top;<br />
rect.top=0;<br />
rect.left=0;</font></p>
<p><font size="2"> //ウインドウの生成<br />
HWND hWnd = CreateWindow( "Window1", "Hello DirectX9 World !!",<br />
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, rect.right,
rect.bottom,<br />
NULL, NULL, wc.hInstance, NULL );</font></p>
<p><font size="2"> //Direct3D初期化<br />
if(SUCCEEDED(InitD3D(hWnd)))<br />
{<br />
//DirectInput初期化<br />
if(SUCCEEDED(InitDInput(hWnd)))<br />
{<br />
//ウインドウ表示<br />
ShowWindow(hWnd,SW_SHOWDEFAULT);<br />
UpdateWindow(hWnd);</font></p>
<p><font size="2"> //メッセージループ<br />
MSG msg;<br />
while( GetMessage(&msg,NULL,0,0))<br />
{<br />
TranslateMessage(&msg);<br />
DispatchMessage(&msg);<br />
}<br />
}<br />
}</font></p>
<p><font size="2"> UnregisterClass("Window1",wc.hInstance);<br />
return 0;<br />
}<br /></font></p>
</td>
</tr></tbody></table>