カーソルキーの取得

「カーソルキーの取得」の編集履歴(バックアップ)一覧はこちら

カーソルキーの取得」(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 &lt;d3d9.h&gt;<br /> #include &lt;d3dx9.h&gt;<br /> #include &lt;dinput.h&gt;</font></p> <p><font size="2">#define SAFE_RELEASE(p) {if(p){(p)-&gt;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-&gt;DrawText(NULL, text, -1, &amp;rect, DT_LEFT | DT_NOCLIP, D3DCOLOR_ARGB(255, 0, 0, 0));<br /> }</font></p> <p><font size="2">//テクスチャ描画<br /> void TexDraw(LPD3DXSPRITE &amp;pSpr,LPDIRECT3DTEXTURE9 &amp;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-&gt;Begin(D3DXSPRITE_ALPHABLEND);<br />  pSpr-&gt;Draw(pTex,&amp;rect,&amp;Center,&amp;Pos,0xffffffff);<br />  pSpr-&gt;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( &amp;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-&gt;CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,D3DCREATE_HARDWARE_VERTEXPROCESSING, &amp;d3dpp, &amp;g_pd3dDevice))){<br />   //HALが駄目ならHEL(ソフトウェアエミュレーション)<br />         if(FAILED(g_pD3D-&gt;CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING, &amp;d3dpp, &amp;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 ゴシック", &amp;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,&amp;pTexture)))<br />  {<br />   MessageBox(0,"テクスチャの作成に失敗しました","",MB_OK);<br />   return E_FAIL;<br />  }<br />  // 「スプライトオブジェクト」の作成<br />  if(FAILED(D3DXCreateSprite(g_pd3dDevice,&amp;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**)&amp;pDinput, NULL ) ) )<br />   {<br />    return hr;<br />   }<br />     //DirectInputデバイスオブジェクトの作成<br />     if( FAILED( hr = pDinput-&gt;CreateDevice( GUID_SysKeyboard,<br />   &amp;pKeyDevice, NULL ) ) )<br />  {<br />   return hr;<br />  }<br />  //デバイスをキーボードに設定<br />     if( FAILED( hr = pKeyDevice-&gt;SetDataFormat( &amp;c_dfDIKeyboard ) ) )<br />  {<br />   return hr;<br />  }<br />  // 協調レベルの設定<br />     if( FAILED(hr= pKeyDevice-&gt;SetCooperativeLevel(<br />   hWnd,DISCL_NONEXCLUSIVE | DISCL_BACKGROUND )) )<br />  {<br />   return hr;<br />  }<br />  // デバイスを「取得」する<br />     pKeyDevice-&gt;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-&gt;Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255,255,0), 1.0f, 0 );<br />   <br />     //シーンの開始<br />     if(SUCCEEDED(g_pd3dDevice-&gt;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-&gt;Acquire();<br />   if((hr==DI_OK) || (hr==S_FALSE))<br />    {<br />     BYTE diks[256];<br />     pKeyDevice-&gt;GetDeviceState(sizeof(diks),&amp;diks);<br />     if(diks[DIK_LEFT] &amp; 0x80){posX-=4;}<br />     if(diks[DIK_RIGHT] &amp; 0x80){posX+=4;}<br />     if(diks[DIK_UP] &amp; 0x80){posY-=4;}<br />     if(diks[DIK_DOWN] &amp; 0x80){posY+=4;}<br />    } <br />   <br />         //シーンの終了<br />         g_pd3dDevice-&gt;EndScene();<br />     }</font></p> <p><font size="2">    //バックバッファを表画面に反映させる<br />     g_pd3dDevice-&gt;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( &amp;wc );</font></p> <p><font size="2"> //タイトルバーとウインドウ枠の分を含めてウインドウサイズを設定<br />  RECT rect;<br />  SetRect(&amp;rect,0,0,640,480);<br />  AdjustWindowRect(&amp;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(&amp;msg,NULL,0,0))<br />          {<br />              TranslateMessage(&amp;msg);<br />              DispatchMessage(&amp;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&amp;act=open&amp;pageid=22&amp;file=di.PNG" /></p> <table cellspacing="1" cellpadding="1" width="600" border="2"><tbody><tr><td> <p><font size="2">#include &lt;d3d9.h&gt;<br /> #include &lt;d3dx9.h&gt;<br /> #include &lt;dinput.h&gt;</font></p> <p><font size="2">#define SAFE_RELEASE(p) {if(p){(p)-&gt;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-&gt;DrawText(NULL, text, -1, &amp;rect, DT_LEFT | DT_NOCLIP, D3DCOLOR_ARGB(255, 0, 0, 0));<br /> }</font></p> <p><font size="2">//テクスチャ描画<br /> void TexDraw(LPD3DXSPRITE &amp;pSpr,LPDIRECT3DTEXTURE9 &amp;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-&gt;Begin(D3DXSPRITE_ALPHABLEND);<br />  pSpr-&gt;Draw(pTex,&amp;rect,&amp;Center,&amp;Pos,0xffffffff);<br />  pSpr-&gt;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( &amp;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-&gt;CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,D3DCREATE_HARDWARE_VERTEXPROCESSING, &amp;d3dpp, &amp;g_pd3dDevice))){<br />   //HALが駄目ならHEL(ソフトウェアエミュレーション)<br />         if(FAILED(g_pD3D-&gt;CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING, &amp;d3dpp, &amp;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 ゴシック", &amp;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,&amp;pTexture)))<br />  {<br />   MessageBox(0,"テクスチャの作成に失敗しました","",MB_OK);<br />   return E_FAIL;<br />  }<br />  // 「スプライトオブジェクト」の作成<br />  if(FAILED(D3DXCreateSprite(g_pd3dDevice,&amp;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**)&amp;pDinput, NULL ) ) )<br />   {<br />    return hr;<br />   }<br />     //DirectInputデバイスオブジェクトの作成<br />     if( FAILED( hr = pDinput-&gt;CreateDevice( GUID_SysKeyboard,<br />   &amp;pKeyDevice, NULL ) ) )<br />  {<br />   return hr;<br />  }<br />  //デバイスをキーボードに設定<br />     if( FAILED( hr = pKeyDevice-&gt;SetDataFormat( &amp;c_dfDIKeyboard ) ) )<br />  {<br />   return hr;<br />  }<br />  // 協調レベルの設定<br />     if( FAILED(hr= pKeyDevice-&gt;SetCooperativeLevel(<br />   hWnd,DISCL_NONEXCLUSIVE | DISCL_BACKGROUND )) )<br />  {<br />   return hr;<br />  }<br />  // デバイスを「取得」する<br />     pKeyDevice-&gt;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-&gt;Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255,255,0), 1.0f, 0 );<br />   <br />     //シーンの開始<br />     if(SUCCEEDED(g_pd3dDevice-&gt;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-&gt;Acquire();<br />   if((hr==DI_OK) || (hr==S_FALSE))<br />    {<br />     BYTE diks[256];<br />     pKeyDevice-&gt;GetDeviceState(sizeof(diks),&amp;diks);<br />     if(diks[DIK_LEFT] &amp; 0x80){posX-=4;}<br />     if(diks[DIK_RIGHT] &amp; 0x80){posX+=4;}<br />     if(diks[DIK_UP] &amp; 0x80){posY-=4;}<br />     if(diks[DIK_DOWN] &amp; 0x80){posY+=4;}<br />    } <br />   <br />         //シーンの終了<br />         g_pd3dDevice-&gt;EndScene();<br />     }</font></p> <p><font size="2">    //バックバッファを表画面に反映させる<br />     g_pd3dDevice-&gt;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( &amp;wc );</font></p> <p><font size="2"> //タイトルバーとウインドウ枠の分を含めてウインドウサイズを設定<br />  RECT rect;<br />  SetRect(&amp;rect,0,0,640,480);<br />  AdjustWindowRect(&amp;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(&amp;msg,NULL,0,0))<br />          {<br />              TranslateMessage(&amp;msg);<br />              DispatchMessage(&amp;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>

表示オプション

横に並べて表示:
変化行の前後のみ表示:
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。