D3DXCreateTextureFromResourceを使ってリソースからテクスチャを読み込もうとしているのですが、うまく行きません。
//resource.rc
#include <windows.h>
#include <commctrl.h>
#include <richedit.h>
#include "resource.h"
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
IDR_png1 png "test.png"
//
// Dialog resources
//
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
Dialog DIALOG 0, 0, 101, 100
STYLE DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_CAPTION | WS_VISIBLE | WS_POPUP | WS_THICKFRAME | WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW
CAPTION "Dialog"
FONT 10, "MS UI Gothic"
{
LTEXT "解像度を選択してください", 0, 7, 3, 105, 14, SS_LEFT, WS_EX_LEFT
AUTORADIOBUTTON "640x480", IDC_RADIO1, 7, 17, 43, 8, 0, WS_EX_LEFT
AUTORADIOBUTTON "960x720", IDC_RADIO2, 7, 28, 43, 8, 0, WS_EX_LEFT
AUTORADIOBUTTON "1280x960(推奨)", IDC_RADIO3, 7, 39, 67, 8, 0, WS_EX_LEFT
AUTOCHECKBOX "フルスクリーンで起動する", IDC_FULL, 7, 55, 92, 8, 0, WS_EX_LEFT
AUTOCHECKBOX "起動時に毎回訊ねる", IDC_EVERY, 7, 68, 83, 8, 0, WS_EX_LEFT
PUSHBUTTON " ゲーム起動 ", IDOK, 26, 81, 52, 14, 0, WS_EX_LEFT
}
//
// String Table resources
//
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
STRINGTABLE
{
IDS_HIDEN_STRING "Start WindowMode, Push LControl,LShift and P Key."
}
//Main.cpp
#include<windows.h>
#include<resource.h>
#include<d3d9.h>
#include<d3dx9.h>
#include<stdio.h>
#include <stdlib.h>
#include<string.h>
#include<dinput.h>
#include<dsound.h>
//定数
#define D3DFVF_TLVERTEX (D3DFVF_XYZRHW|D3DFVF_DIFFUSE|D3DFVF_TEX1)
//Direct3D
#pragma comment( lib, "d3d9.lib" )
#pragma comment( lib, "d3dx9.lib" )
#pragma comment( lib, "dxerr.lib" )
//DirectInput
#pragma comment( lib, "dinput8.lib" )
#pragma comment( lib, "dxguid.lib" )
//DirectSound
#pragma comment( lib, "dsound.lib" )
#pragma comment( lib, "winmm.lib" )
//fopen警告の回避
#pragma warning(disable : 4996)
FILE *fp;
FILE *fp2;
FILE *fp3;
FILE *fp4;
FILE *fpfull;
FILE *fp640;
FILE *fp960;
FILE *fp1280;
RECT rw, rc;
HWND hwnd;
UINT wmId;
MSG msg;
WNDCLASS winc;
LPDIRECT3D9 m_pD3D = NULL;
D3DPRESENT_PARAMETERS m_D3DPP;
D3DDISPLAYMODE d3ddm;
LPDIRECT3DDEVICE9 m_pD3DDevice = NULL;
//DirectInput
LPDIRECTINPUT8 g_pInputInterface = NULL;
LPDIRECTINPUTDEVICE8 device;
HRESULT hr;
BYTE KeyState[256];
//DirectSound
LPDIRECTSOUND8 lpDS;
char pngfile01;
LPDIRECTSOUNDBUFFER lpPrimary = NULL;
LPDIRECTSOUNDBUFFER lpSecondary = NULL;
LPDIRECTSOUNDNOTIFY pDSNotify;
DSBPOSITIONNOTIFY aPosNotify[2];
//resource
HMODULE hCurInst;
int new_width;
int new_height;
char *filename = "AET.setup";
char askoutput[99999] = "Ask Every Time = TRUE;";
char dontaskoutput[99999] = "Ask Every Time = FALSE;";
char mode640on[999999] = "640MODE = TRUE;";
char mode960on[999999] = "960MODE = TRUE;";
char mode1280on[999999] = "1280MODE = TRUE;";
char mode640off[999999] = "640MODE = FALSE;";
char mode960off[999999] = "960MODE = FALSE;";
char mode1280off[99999] = "1280MODE = FALSE;";
char fullmode[999999] = "FullScreenMode = TRUE;";
char fullmodeoff[999999] = "FullScreenMode = FALSE;";
char buffer640[9999];
char buffer960[9999];
char buffer1280[999];
char check640buf[999999];
char check960buf[999999];
char check1280buf[999999];
char *screen1 = "Screen1.custom";
char *screen2 = "Screen2.custom";
char *screen3 = "Screen3.custom";
char *full = "Full.fscr";
char fullbuf[999999];
char buf[99999];
char fullcheckbuf[999999];
BOOL bCheck1;
BOOL bCheck2;
BOOL bCheck3;
BOOL bFull;
BOOL wrightcheck640;
BOOL wrightcheck960;
BOOL wrightcheck1280;
BOOL playandstop = FALSE;
DWORD PlayPos = 0;
DWORD CheckPlayPos = 0;
BOOL FullScreenMODE;
HRESULT ret;
MMCKINFO mSrcWaveFile;
MMCKINFO mSrcWaveFmt;
MMCKINFO mSrcWaveData;
LPWAVEFORMATEX wf;
BOOL Konami01 = FALSE;
BOOL Konami02 = FALSE;
BOOL Konami03 = FALSE;
BOOL Konami04 = FALSE;
BOOL Konami05 = FALSE;
BOOL Konami06 = FALSE;
BOOL Konami07 = FALSE;
BOOL Konami08 = FALSE;
BOOL Konami09 = FALSE;
BOOL Konami10 = FALSE;
BOOL CALLBACK DialogProc02(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp) {
switch (msg) {
case WM_LBUTTONUP:
EndDialog(hwnd , IDOK);
return TRUE;
}
return FALSE;
}
typedef struct _D3DTLVERTEX {
float x,y,z; // 頂点のXYZ座標
float rhw; // 描画時にXYZから割られる数(小難しい話なのでここは常に1となると覚えよう)
DWORD color; // 頂点の色(32bitアルファ値あり)
float tu, tv; // 頂点に割り当てるテクスチャのUV値
} D3DTLVERTEX, *LPD3DTLVERTEX;
//DirectGraphics
D3DTLVERTEX v[4];
D3DTLVERTEX i[8];
LPDIRECT3DTEXTURE9 g_pTexture01 = NULL;
LPDIRECT3DTEXTURE9 g_pTexture02 = NULL;
//wav読み込み関数
BOOL CreateSoundBuffer( LPDIRECTSOUNDBUFFER *dsb,const char *file )
{
// WAVファイルをロード
HMMIO hSrc;
hSrc = mmioOpenA( (LPSTR)file,NULL,MMIO_ALLOCBUF|MMIO_READ|MMIO_COMPAT );
if( !hSrc ) {
MessageBox(NULL,TEXT( "DirectSoundの初期化に失敗しました1"),TEXT("ERROR!!"),MB_OK );
return FALSE;
}
// 'WAVE'チャンクチェック
ZeroMemory( &mSrcWaveFile,sizeof(mSrcWaveFile) );
ret = mmioDescend( hSrc,&mSrcWaveFile,NULL,MMIO_FINDRIFF );
if( mSrcWaveFile.fccType!=mmioFOURCC('W','A','V','E') ) {
MessageBox(NULL,TEXT( "DirectSoundの初期化に失敗しました2"),TEXT("ERROR!!"),MB_OK );
mmioClose( hSrc,0 );
return FALSE;
}
// 'fmt 'チャンクチェック
ZeroMemory( &mSrcWaveFmt,sizeof(mSrcWaveFmt) );
ret = mmioDescend( hSrc,&mSrcWaveFmt,&mSrcWaveFile,MMIO_FINDCHUNK );
if( mSrcWaveFmt.ckid!=mmioFOURCC('f','m','t',' ') ) {
MessageBox(NULL,TEXT( "DirectSoundの初期化に失敗しました3"),TEXT("ERROR!!"),MB_OK );
mmioClose( hSrc,0 );
return FALSE;
}
// ヘッダサイズの計算
int iSrcHeaderSize = mSrcWaveFmt.cksize;
if( iSrcHeaderSize<sizeof(WAVEFORMATEX) )
iSrcHeaderSize=sizeof(WAVEFORMATEX);
// ヘッダメモリ確保
wf = (LPWAVEFORMATEX)malloc( iSrcHeaderSize );
if( !wf ) {
MessageBox(NULL,TEXT( "DirectSoundの初期化に失敗しました4"),TEXT("ERROR!!"),MB_OK );
mmioClose( hSrc,0 );
return FALSE;
}
ZeroMemory( wf,iSrcHeaderSize );
// WAVEフォーマットのロード
ret = mmioRead( hSrc,(char*)wf,mSrcWaveFmt.cksize );
if( FAILED(ret) ) {
MessageBox(NULL,TEXT( "DirectSoundの初期化に失敗しました5"),TEXT("ERROR!!"),MB_OK );
free( wf );
mmioClose( hSrc,0 );
return FALSE;
}
// fmtチャンクに戻る
mmioAscend( hSrc,&mSrcWaveFmt,0 );
// dataチャンクを探す
while(1) {
// 検索
ret = mmioDescend( hSrc,&mSrcWaveData,&mSrcWaveFile,0 );
if( FAILED(ret) ) {
MessageBox(NULL,TEXT( "DirectSoundの初期化に失敗しました9"),TEXT("ERROR!!"),MB_OK );
free( wf );
mmioClose( hSrc,0 );
return FALSE;
}
if( mSrcWaveData.ckid==mmioStringToFOURCCA("data",0) )
break;
// 次のチャンクへ
ret = mmioAscend( hSrc,&mSrcWaveData,0 );
}
// サウンドバッファの作成
DSBUFFERDESC dsdesc;
ZeroMemory( &dsdesc,sizeof(DSBUFFERDESC) );
dsdesc.dwSize = sizeof( DSBUFFERDESC );
dsdesc.dwFlags = DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_STATIC | DSBCAPS_LOCDEFER | DSBCAPS_GLOBALFOCUS;
dsdesc.dwBufferBytes = mSrcWaveData.cksize;
dsdesc.lpwfxFormat = wf;
dsdesc.guid3DAlgorithm = DS3DALG_DEFAULT;
ret = lpDS->CreateSoundBuffer( &dsdesc,dsb,NULL );
if( FAILED(ret) ) {
MessageBox(NULL,TEXT( "DirectSoundの初期化に失敗しました11"),TEXT("ERROR!!"),MB_OK );
free( wf );
mmioClose( hSrc,0 );
return FALSE;
}
// ロック開始
LPVOID pMem1,pMem2;
DWORD dwSize1,dwSize2;
ret = (*dsb)->Lock( 0,mSrcWaveData.cksize,&pMem1,&dwSize1,&pMem2,&dwSize2,0 );
if( FAILED(ret) ) {
MessageBox(NULL,TEXT( "サウンドデバイスが見つかりませんでした。オーディオインターフェイスを接続してください。"),TEXT("ERROR!!"),MB_OK );
free( wf );
mmioClose( hSrc,0 );
return FALSE;
}
// データ書き込み
mmioRead( hSrc,(char*)pMem1,dwSize1 );
mmioRead( hSrc,(char*)pMem2,dwSize2 );
// ロック解除
(*dsb)->Unlock( pMem1,dwSize1,pMem2,dwSize2 );
// ヘッダ用メモリを開放
free( wf );
// WAVを閉じる
mmioClose( hSrc,0 );
return TRUE;
}
//DirectSound開放関数
BOOL DirectSoundExit( void )
{
if( lpSecondary ) {
lpSecondary->Release();
lpSecondary = NULL;
}
if( lpPrimary ) {
lpPrimary->Release();
lpPrimary = NULL;
}
if( lpDS ) {
lpDS->Release();
lpDS = NULL;
}
// COMの終了
CoUninitialize();
return TRUE;
}
BOOL CreatePrimaryBuffer( void )
{
HRESULT ret;
WAVEFORMATEX wf;
// プライマリサウンドバッファの作成
DSBUFFERDESC dsdesc;
ZeroMemory( &dsdesc,sizeof(DSBUFFERDESC) );
dsdesc.dwSize = sizeof( DSBUFFERDESC );
dsdesc.dwFlags = DSBCAPS_PRIMARYBUFFER;
dsdesc.dwBufferBytes = 0;
dsdesc.lpwfxFormat = NULL;
ret = lpDS->CreateSoundBuffer( &dsdesc,&lpPrimary,NULL );
if( FAILED(ret) ) {
MessageBox(NULL,TEXT( "DirectSoundの初期化に失敗しました13"),TEXT("ERROR!!"),MB_OK );
return FALSE;
}
// プライマリバッファのステータスを決定
wf.cbSize = sizeof( WAVEFORMATEX );
wf.wFormatTag = WAVE_FORMAT_PCM;
wf.nChannels = 2;
wf.nSamplesPerSec = 44100;
wf.wBitsPerSample = 16;
wf.nBlockAlign = wf.nChannels * wf.wBitsPerSample / 8;
wf.nAvgBytesPerSec = wf.nSamplesPerSec * wf.nBlockAlign;
ret = lpPrimary->SetFormat( &wf );
if( FAILED(ret) ) {
MessageBox(NULL,TEXT( "DirectSoundの初期化に失敗しました14"),TEXT("ERROR!!"),MB_OK );
return FALSE;
}
return TRUE;
}
//ファイル削除関数
int deleteFile(const char* fileName)
{
return !(remove(fileName));
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp) {
switch (msg) {
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_ERASEBKGND:
return 0;
}
return DefWindowProc(hwnd, msg, wp, lp);
}
BOOL DirectSoundInit( void )
{
HRESULT ret;
// COMの初期化
CoInitialize( NULL );
// DirectSound8を作成
ret = DirectSoundCreate8( NULL,&lpDS,NULL );
if( FAILED(ret) ) {
MessageBox(NULL,TEXT( "DirectSoundの初期化に失敗しました15"),TEXT("ERROR!!"),MB_OK );
return FALSE;
}
// 強調モード
ret = lpDS->SetCooperativeLevel(hwnd,DSSCL_EXCLUSIVE|DSSCL_PRIORITY );
if( FAILED(ret) ) {
MessageBox(NULL,TEXT( "DirectSoundの初期化に失敗しました16"),TEXT("ERROR!!"),MB_OK );
return FALSE;
}
return TRUE;
}
BOOL CALLBACK DialogProc(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp) {
switch (msg) {
case WM_INITDIALOG:
//Full.fscrを調べてフルスクリーンモードで起動するにチェックを入れる
fp = fopen(full,"r");
//もしファイルが無かった場合、フルスクリーンモード状態でファイル作成を行う。
if(fp == NULL){
fp = fopen(full,"w+");
fputs(fullmode,fp);
fclose(fp);
}
fgets(fullbuf,999999,fp);
if(strcmp(fullbuf,fullmode) == 0){
SendMessage(GetDlgItem(hwnd, IDC_FULL) , BM_SETCHECK , BST_CHECKED , 0);
}
else if(strcmp(fullbuf,fullmodeoff) == 0){
SendMessage(GetDlgItem(hwnd, IDC_FULL) , BM_SETCHECK , BST_UNCHECKED , 0);
}
// 毎回訊ねるにチェックを入れる
SendMessage(GetDlgItem(hwnd, IDC_EVERY) , BM_SETCHECK , BST_CHECKED , 0);
//どの解像度モードにチェックを入れるか確かめる
fp = fopen(screen1,"r");
if(fp == NULL){
fp = fopen(screen1,"w+");
fputs(mode640on,fp);
fclose(fp);
}
fgets(buffer640,999999,fp);
if(strcmp(buffer640,mode640on) == 0){
SendMessage(GetDlgItem(hwnd, IDC_RADIO1) , BM_SETCHECK , BST_CHECKED , 0);
}
fclose(fp);
fp = fopen(screen2,"r");
if(fp == NULL){
fp = fopen(screen2,"w+");
fputs(mode960off,fp);
fclose(fp);
}
fgets(buffer960,999999,fp);
if(strcmp(buffer960,mode960on) == 0){
SendMessage(GetDlgItem(hwnd, IDC_RADIO2) , BM_SETCHECK , BST_CHECKED , 0);
}
fclose(fp);
fp = fopen(screen3,"r");
if(fp == NULL){
fp = fopen(screen3,"w+");
fputs(mode1280off,fp);
fclose(fp);
}
fgets(buffer1280,999999,fp);
if(strcmp(buffer1280,mode1280on) == 0){
SendMessage(GetDlgItem(hwnd, IDC_RADIO3) , BM_SETCHECK , BST_CHECKED , 0);
}
fclose(fp);
return 0;
case WM_CLOSE:
PostQuitMessage(0);
EndDialog(hwnd , NULL);
return TRUE;
case WM_COMMAND:
wmId = LOWORD(wp);
switch(wmId){
case IDOK:
//もし毎回訊ねるにチェックが入っていたら、AET.datにaskoutputを書き込む
if(SendMessage(GetDlgItem(hwnd, IDC_EVERY), BM_GETCHECK, 0, 0) == BST_CHECKED){
fp = fopen(filename,"w+");
fputs(askoutput,fp);
fclose(fp);
}
//もし毎回訊ねるにチェックが入っていなかったら、AET.datにdontaskoutputを書き込む
if(SendMessage(GetDlgItem(hwnd, IDC_EVERY), BM_GETCHECK, 0, 0) == BST_UNCHECKED){
fp = fopen(filename,"w+");
fputs(dontaskoutput,fp);
fclose(fp);
}
//チェックボタンの状態で書き込む
if(SendMessage(GetDlgItem(hwnd, IDC_RADIO1), BM_GETCHECK, 0, 0) == BST_CHECKED) {
bCheck1 = TRUE;
}
else if(SendMessage(GetDlgItem(hwnd, IDC_RADIO2), BM_GETCHECK, 0, 0) == BST_CHECKED) {
bCheck2 = TRUE;
}
else if(SendMessage(GetDlgItem(hwnd, IDC_RADIO3), BM_GETCHECK, 0, 0) == BST_CHECKED) {
bCheck3 = TRUE;
}
if(SendMessage(GetDlgItem(hwnd, IDC_FULL), BM_GETCHECK, 0, 0) == BST_CHECKED) {
bFull = TRUE;
}
else if(SendMessage(GetDlgItem(hwnd, IDC_FULL), BM_GETCHECK, 0, 0) == BST_UNCHECKED) {
bFull = FALSE;
}
EndDialog(hwnd , IDOK);
return TRUE;
}
return 0;
case WM_ERASEBKGND:
//画面外に出ても再描画
return 0;
}
return FALSE;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR lpCmdLine, int nCmdShow) {
//-リソースの書き出し終了-//
d3ddm.Width = 640;
d3ddm.Height = 480;
d3ddm.Format = D3DFMT_A8R8G8B8;
d3ddm.RefreshRate = 60;
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("WCN");
if (!RegisterClass(&winc)) return 0;
hwnd = CreateWindow(
TEXT("WCN"), TEXT("test"),
WS_OVERLAPPEDWINDOW & ~WS_THICKFRAME & ~WS_MAXIMIZEBOX,
175, 50, 640, 480, NULL, NULL,
hInstance, NULL
);
if ((m_pD3D = ::Direct3DCreate9(D3D_SDK_VERSION)) == 0) {
MessageBox(NULL,TEXT("DirectXの初期化に失敗しました\nハードウェアのDirectX対応状況をご覧ください"),TEXT("ERROR!!"),MB_OK);
return E_FAIL;
}
//もし、th01.datが存在しなかったら、ファイルを新規作成する。
fp = fopen(filename,"r");
if(fp == NULL){
fp = fopen(filename,"w+");
fputs(askoutput,fp);
fclose(fp);
}
fgets(buf,99999,fp);
if(strcmp(buf,"") == 0){
DialogBox(
(HINSTANCE)GetWindowLong(hwnd , GWL_HINSTANCE) ,
TEXT("Dialog") , hwnd , DialogProc
);
}
//毎回聞くがTRUEだった場合
if(strcmp(buf, "Ask Every Time = TRUE;") == 0){
DialogBox(
(HINSTANCE)GetWindowLong(hwnd , GWL_HINSTANCE) ,
TEXT("Dialog") , hwnd , DialogProc
);
}
//毎回聞くがFALSEだった場合。
else if(strcmp(buf, "Ask Every Time = FALSE;") == 0){
}
//もし関係のない文字列が書かれていた場合
else{
fp = fopen(filename,"w+");
fputs(askoutput,fp);
fclose(fp);
new_width = (rw.right - rw.left) - (rc.right - rc.left) + 960;
new_height = (rw.bottom - rw.top) - (rc.bottom - rc.top) + 720;
}
//bCheckを調べて書き込む
if(bCheck1 == TRUE){
fp = fopen(screen1,"w+");
fputs(mode640on,fp);
fclose(fp);
fp = fopen(screen2,"w+");
fputs(mode960off,fp);
fclose(fp);
fp = fopen(screen3,"w+");
fputs(mode1280off,fp);
fclose(fp);
}
else if(bCheck2 == TRUE){
fp = fopen(screen1,"w+");
fputs(mode640off,fp);
fclose(fp);
fp = fopen(screen2,"w+");
fputs(mode960on,fp);
fclose(fp);
fp = fopen(screen3,"w+");
fputs(mode1280off,fp);
fclose(fp);
}
else if(bCheck3 == TRUE){
fp = fopen(screen1,"w+");
fputs(mode640off,fp);
fclose(fp);
fp = fopen(screen2,"w+");
fputs(mode960off,fp);
fclose(fp);
fp = fopen(screen3,"w+");
fputs(mode1280on,fp);
fclose(fp);
}
if(bFull == TRUE){
fp = fopen(full,"w+");
fputs(fullmode,fp);
fclose(fp);
}
else if(bFull == FALSE){
fp = fopen(full,"w+");
fputs(fullmodeoff,fp);
fclose(fp);
}
ZeroMemory(&m_D3DPP, sizeof(D3DPRESENT_PARAMETERS));
fp = fopen(full,"r");
fgets(fullbuf,999999,fp);
if(strcmp(fullbuf,"FullScreenMode = FALSE;") == 0){
m_D3DPP.Windowed = TRUE;
}
if (strcmp(fullbuf,"FullScreenMode = TRUE;") == 0) {
m_D3DPP.Windowed = FALSE;
m_D3DPP.BackBufferWidth = 1280;
m_D3DPP.BackBufferHeight = 960;
}
fclose(fp);
m_D3DPP.BackBufferCount = 1;
m_D3DPP.BackBufferFormat = d3ddm.Format;
m_D3DPP.SwapEffect = D3DSWAPEFFECT_DISCARD;
m_D3DPP.EnableAutoDepthStencil = TRUE;
m_D3DPP.AutoDepthStencilFormat = D3DFMT_D16;
m_D3DPP.MultiSampleType = D3DMULTISAMPLE_NONE;
if (FAILED(m_pD3D->CreateDevice(D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL,
hwnd,
D3DCREATE_HARDWARE_VERTEXPROCESSING,
&m_D3DPP, &m_pD3DDevice))) {
if (FAILED(m_pD3D->CreateDevice(D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL,
hwnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&m_D3DPP, &m_pD3DDevice))) {
if (FAILED(m_pD3D->CreateDevice(D3DADAPTER_DEFAULT,
D3DDEVTYPE_REF,
hwnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&m_D3DPP, &m_pD3DDevice))) {
return E_FAIL;
}
}
}
if (hwnd == NULL) return 0;
//screen1を調べてウィンドウサイズを確定
fp = fopen(screen1,"r");
fgets(check640buf,999999,fp);
if(strcmp(check640buf,mode640on) == 0){
new_width = (rw.right - rw.left) - (rc.right - rc.left) + 640;
new_height = (rw.bottom - rw.top) - (rc.bottom - rc.top) + 480;
wrightcheck640 = TRUE;
}
fclose(fp);
//screen2を調べてウィンドウサイズを確定
fp = fopen(screen2,"r");
fgets(check960buf,999999,fp);
if(strcmp(check960buf,mode960on) == 0){
new_width = (rw.right - rw.left) - (rc.right - rc.left) + 960;
new_height = (rw.bottom - rw.top) - (rc.bottom - rc.top) + 720;
wrightcheck960 = TRUE;
}
fclose(fp);
//screen3を調べてウィンドウサイズを確定
fp = fopen(screen3,"r");
fgets(check1280buf,999999,fp);
if(strcmp(check1280buf,mode1280on) == 0){
new_width = (rw.right - rw.left) - (rc.right - rc.left) + 1280;
new_height = (rw.bottom - rw.top) - (rc.bottom - rc.top) + 960;
wrightcheck1280 = TRUE;
}
fclose(fp);
SetWindowPos(hwnd, NULL, 0, 0, new_width, new_height, SWP_NOMOVE | SWP_NOZORDER);
//DirectSoundの初期化
//DirectInpuの初期化
hr = DirectInput8Create(hInstance,
DIRECTINPUT_VERSION,
IID_IDirectInput8,
(void**)&g_pInputInterface,
NULL
);
if(FAILED(hr)){
MessageBox(NULL,TEXT("DirectInputの初期化に失敗しました"),TEXT("ERROR!!"),MB_OK);
}
hr = g_pInputInterface->CreateDevice(
GUID_SysKeyboard,
&device,
NULL);
if(FAILED(hr)){
MessageBox(NULL,TEXT("DirectInputの初期化に失敗しました"),TEXT("ERROR!!"),MB_OK);
}
HRESULT hr = device->SetDataFormat(&c_dfDIKeyboard);
if(FAILED(hr)){
MessageBox(NULL,TEXT("DirectInputの初期化に失敗しました"),TEXT("ERROR!!"),MB_OK);
}
hr = device->SetCooperativeLevel(
hwnd,
DISCL_BACKGROUND | DISCL_NONEXCLUSIVE);
//DirectInputの制御開始
hr = device->Acquire();
//-頂点情報の初期化開始-//
fp = fopen(full,"r");
fgets(fullcheckbuf,999999,fp);
if(strcmp(fullcheckbuf,"FullScreenMode = FALSE;") == 0){
ZeroMemory( &v,sizeof(v) );
v[0].x = 0.0f;
v[0].y = 0.0f;
v[0].z = 0.0f;
v[0].rhw = 1.0f;
v[0].color = 0xFFFFFFFF;
v[0].tu = 0.0f;
v[0].tv = 0.0f;
v[1].x = 634.0f;
v[1].y = 0.0f;
v[1].z = 0.0f;
v[1].rhw = 1.0f;
v[1].color = 0xFFFFFFFF;
v[1].tu = 1.0f;
v[1].tv = 0.0f;
v[2].x = 0.0f;
v[2].y = 447.0f;
v[2].z = 0.0f;
v[2].rhw = 1.0f;
v[2].color = 0xFFFFFFFF;
v[2].tu = 0.0f;
v[2].tv = 1.0f;
v[3].x = 634.0f;
v[3].y = 447.0f;
v[3].z = 0.0f;
v[3].rhw = 1.0f;
v[3].color = 0xFFFFFFFF;
v[3].tu = 1.0f;
v[3].tv = 1.0f;
FullScreenMODE = TRUE;
}
else if(strcmp(fullcheckbuf,"FullScreenMode = TRUE;") == 0){
ZeroMemory( &v,sizeof(v) );
v[0].x = 0.0f;
v[0].y = 0.0f;
v[0].z = 0.0f;
v[0].rhw = 1.0f;
v[0].color = 0xFFFFFFFF;
v[0].tu = 0.0f;
v[0].tv = 0.0f;
v[1].x = 1280.0f;
v[1].y = 0.0f;
v[1].z = 0.0f;
v[1].rhw = 1.0f;
v[1].color = 0xFFFFFFFF;
v[1].tu = 1.0f;
v[1].tv = 0.0f;
v[2].x = 0.0f;
v[2].y = 960.0f;
v[2].z = 0.0f;
v[2].rhw = 1.0f;
v[2].color = 0xFFFFFFFF;
v[2].tu = 0.0f;
v[2].tv = 1.0f;
v[3].x = 1280.0f;
v[3].y = 960.0f;
v[3].z = 0.0f;
v[3].rhw = 1.0f;
v[3].color = 0xFFFFFFFF;
v[3].tu = 1.0f;
v[3].tv = 1.0f;
FullScreenMODE = FALSE;
}
fclose(fp);
//ウィンドウの表示
ShowWindow(hwnd,SW_SHOW);
/////テクスチャの設定開始/////
/////テクスチャの設定終了/////
m_pD3DDevice->SetFVF( D3DFVF_TLVERTEX );
////Resourceの読み込み開始////
/*ここができていないと思われる*/
D3DXCreateTextureFromResource(m_pD3DDevice,NULL,L"IDR_png1",&g_pTexture01);
////Resourceの読み込み終了////
m_pD3DDevice->SetTexture(0,g_pTexture01);
//メインループ
while (GetMessage(&msg, NULL, 0, 0)) {
//BeginScene
if (FAILED(m_pD3DDevice->Clear(0, NULL,
D3DCLEAR_TARGET |
D3DCLEAR_ZBUFFER,
D3DCOLOR_XRGB(0, 0, 0),
1.0f,
0))) {
return 0;
}
if (FAILED(m_pD3DDevice->BeginScene())) {
return 0;
}
m_pD3DDevice->DrawPrimitiveUP( D3DPT_TRIANGLESTRIP, 2, v, sizeof(D3DTLVERTEX) );
hr = device->GetDeviceState(256, KeyState);
m_pD3DDevice->DrawPrimitiveUP( D3DPT_TRIANGLESTRIP, 2, v, sizeof(D3DTLVERTEX) );
m_pD3DDevice->EndScene();
if (FAILED(m_pD3DDevice->Present(0, 0, 0, 0))) {
m_pD3DDevice->Reset(&m_D3DPP);
}
DispatchMessage(&msg);
}
m_pD3DDevice->Release();
DirectSoundExit();
return msg.wParam;
}
何がいけないのかわからず、質問させていただきました。
開発環境は、
WindowsXP SP3
DirectXSDK2010June
VisualStudioC++2010Express
ResEdit
です。