|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jul 2004
Città: Napoli
Messaggi: 2029
|
DirectInput con directx 9.0
ho letto su msdn che ci sono alcune cose da cambiare per utilizzarle con dx 9.0
bhe io l'ho fatto ma mi dà sempre errore di linkaggio -Set "#define DIRECTINPUT_VERSION 0x0800" before the include statement for Dinput8.h. FATTO -Call DirectInput8Create instead of DirectInputCreateEx. FATTO -Link to the Dinput8.lib library instead of Dinput.lib. come si fa??? è automatico??? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
devi*includere*nelle*opzioni*del*compilatore*dinput8.lib
fai*progetto*tasto*destro*del*mouse*e*scegli*proprietà*vai*nella sezione*c++*e*clicca*su*input*scrivi*la*lib*dinput8.lib ciao |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Jul 2004
Città: Napoli
Messaggi: 2029
|
Quote:
strano però che non lo spiega dettagliatamente nemmeno sull'msdn. grazie |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jul 2004
Città: Napoli
Messaggi: 2029
|
ops okay non è tutto okay.
mi da quest'errore Eccezione first-chance a 0x00412b73 in Meshes.exe: 0xC0000005: Violazione di accesso nella lettura del percorso 0x00000000. Eccezione non gestita a 0x00412b73 in Meshes.exe: 0xC0000005: Violazione di accesso nella lettura del percorso 0x00000000. il mio codice nel winmain è solo questo Codice:
HRESULT hr;
hr = DirectInput8Create(hInst, DIRECTINPUT_VERSION,
IID_IDirectInput8, (void**)&g_lpDI, NULL);
hr = g_lpDI->CreateDevice(GUID_SysKeyboard, &g_lpDIDevice, NULL);
if FAILED(hr)
{ // DirectInput not available; take appropriate action
//DI_Term();
MessageBox(hWnd,"Errore","SCEM !!",MB_OK);
return FALSE;
}
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
metti*deibreackpoint*edebugga*perchè*non*posso*certo*capire*cosa*sta*succedendo.
quel*000000000*mi*sembra*il*puntatore*del*device*non*inizializzato*.*posta*più*cpdice*dell'inizializzazione*delle*input*oppure*debugga*e*guarda*quake*è*la*linea*incriminata. |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jul 2004
Città: Napoli
Messaggi: 2029
|
eh si ho visto col debug e da errore qua
hr = g_lpDI->CreateDevice(GUID_SysKeyboard, &g_lpDIDevice, NULL); i puntatori g_lpDI e g_lpDIDevice uaguali a NULL. |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jul 2004
Città: Napoli
Messaggi: 2029
|
ah ecco c'è altro
quando arrivo a sta linea di codice Codice:
hr = DirectInput8Create(GetModuleHandle(NULL), DIRECTINPUT_VERSION, IID_IDirectInput8, (void**)&g_lpDI, NULL); che hr 0x8007047e Il programma specificato richiede una versione più aggiornata di Windows. HRESULT che significa?? |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
LPDIRECTINPUT8 g_lpDI=NULL;
LPDIRECTINPUTDEVICE8 m_pKeyboard=NULL; DirectInput8Create(hInst, DIRECTINPUT_VERSION, IID_IDirectInput8, (void**)&g_lpDI, NULL) g_lpDI->CreateDevice(GUID_SysKeyboard, &m_pKeyboard, NULL) metti un breackpoint dopo queste istruzioni e vedi se questi breack point sono passati vedi dove è che si blocca la dichiarazione l'hai fatta? |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jul 2004
Città: Napoli
Messaggi: 2029
|
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
Certo che meno male che hai messo uno shoot se no mi mandavi al manicomio pure a me................... ma che faì!!!!!!!!!!
Non devi mai inizializzare le input e quantaltro prima che venga creato il device delle directx. tutte le inizializzazioni di input sound e quantaltro le devi fare solo dopo che è stato inizializzato il pd3Device delle directx nel tuo caso delle 9. Trova il punto di questa inizializzzazione e tienilo sempre a mente (lo devi avere nelle Common in DXUT.cpp le righe sono: pD3D = DXUT_Dynamic_Direct3DCreate9( D3D_SDK_VERSION ); GetDXUTState().SetD3D( pD3D ); ) questo è un errore gravissimo proprio da principiante che non ha letto un bel niente e fà solo copia & incolla. mannaggia............mannaggia!!!!! l'inizializzazione delle input e quantaltro falla in InitGame() che già c'è di default oppure in un'altra void tua ma sempre dopo l'inizializzazione del devide delle dx. ciao |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jul 2004
Città: Napoli
Messaggi: 2029
|
wela okay.
infatti ci avevo pensato e ho fatto come hai detto te guarda: il mio winmain Codice:
INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, INT )
{
// Register the window class
WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L,
GetModuleHandle(NULL), NULL, NULL, NULL, NULL,
"D3D Tutorial", NULL };
RegisterClassEx( &wc );
// Create the application's window
HWND hWnd = CreateWindow( "D3D Tutorial", "D3D Tutorial 06: Meshes",
WS_OVERLAPPEDWINDOW, 100, 100, 300, 300,
GetDesktopWindow(), NULL, wc.hInstance, NULL );
// Initialize Direct3D
if( SUCCEEDED( InitD3D( hWnd ) ) )
{
CreateKeyboard(hWnd);
// Create the scene geometry
if( SUCCEEDED( InitGeometry() ) )
{
// Show the window
ShowWindow( hWnd, SW_SHOWDEFAULT );
UpdateWindow( hWnd );
// Enter the message loop
MSG msg;
ZeroMemory( &msg, sizeof(msg) );
while( msg.message!=WM_QUIT )
{
if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
else
Render();
ProcessKBInput();
}
}
}
UnregisterClass( "D3D Tutorial", wc.hInstance );
return 0;
}
Codice:
HRESULT InitD3D( HWND hWnd )
{
// Create the D3D object.
if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )
return E_FAIL;
// Set up the structure used to create the D3DDevice. Since we are now
// using more complex geometry, we will create a device with a zbuffer.
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory( &d3dpp, sizeof(d3dpp) );
d3dpp.Windowed = TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;
d3dpp.EnableAutoDepthStencil = TRUE;
d3dpp.AutoDepthStencilFormat = D3DFMT_D16;
// Create the D3DDevice
if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp, &g_pd3dDevice ) ) )
{
return E_FAIL;
}
// Turn on the zbuffer
g_pd3dDevice->SetRenderState( D3DRS_ZENABLE, TRUE );
// Turn on ambient lighting
g_pd3dDevice->SetRenderState( D3DRS_AMBIENT, 0xffffffff );
return S_OK;
}
Codice:
HRESULT CreateKeyboard( HWND hWnd )
{
HRESULT hr;
// Create a DInput object
hr = DirectInput8Create( GetModuleHandle(NULL), DIRECTINPUT_VERSION,
IID_IDirectInput8, (VOID**)&g_lpDI, NULL );
hr = g_lpDI->CreateDevice( GUID_SysKeyboard, &m_pKeyboard, NULL );
hr = m_pKeyboard->SetDataFormat( &c_dfDIKeyboard );
hr = m_pKeyboard->SetCooperativeLevel( hWnd, DISCL_FOREGROUND | DISCL_NONEXCLUSIVE );
m_pKeyboard->Acquire();
return S_OK;
}
che sbaglio????? p.s. cmq grazie del principiante se non lo sono io |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
è tutto okay
Ultima modifica di okay : 14-06-2005 alle 16:36. |
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Jul 2004
Città: Napoli
Messaggi: 2029
|
Quote:
mi da sempre quell'errore se non ti da fastidio posso mandartelo per e-mail tutto il progetto così vedi l'errore sto impazzendo. grazie cmq della mano che mi hai dato. p.s. mandami l'email per pm. |
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
|
non ho visto il codice non ho voglia di vederlo
cmq accedi in una posizione di memoria in cui NON devi accedere controlla cmq i valori che passi se sono corretti o meno~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
|
per caso il valore di hr che utilizzi come ritorno dalla prima lo utilizzi anche nella seconda funzione?? non si vede ce sta la finestra di errore.
Cmq controlla che anche nella prima non ti dia errore. ~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Jul 2004
Città: Napoli
Messaggi: 2029
|
Quote:
anche facendo così Codice:
VOID CreateKeyboard( HWND hWnd )
{
// Create a DInput object
DirectInput8Create( GetModuleHandle(NULL), DIRECTINPUT_VERSION,
IID_IDirectInput8, (VOID**)&g_lpDI, NULL );
g_lpDI->CreateDevice(GUID_SysKeyboard, &m_pKeyboard, NULL);
m_pKeyboard->SetDataFormat( &c_dfDIKeyboard );
m_pKeyboard->SetCooperativeLevel( hWnd, DISCL_FOREGROUND | DISCL_NONEXCLUSIVE );
m_pKeyboard->Acquire();
}
|
|
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Jul 2004
Città: Napoli
Messaggi: 2029
|
cmq il problema è in questa linea qui
Codice:
g_lpDI->CreateDevice(GUID_SysKeyboard, &m_pKeyboard, NULL); |
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Jul 2004
Città: Napoli
Messaggi: 2029
|
|
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
|
Codice:
if(FAILED(DirectInput8Create(hInst, DIRECTINPUT_VERSION, IID_IDirectInput8, (void**)&m_pDirectInput, NULL))) exit (-1);
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso Ultima modifica di Fenomeno85 : 14-06-2005 alle 21:37. |
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: Jul 2004
Città: Napoli
Messaggi: 2029
|
infatti provato.
ho cambiato la funzione che crea il dispositivo così Codice:
HRESULT CreateKeyboard( HWND hWnd )
{
HRESULT hr;
// Create a DInput object
if (FAILED(hr = DirectInput8Create( GetModuleHandle(NULL), DIRECTINPUT_VERSION,
IID_IDirectInput8, (VOID**)&g_lpDI, NULL )))
return hr;
if(FAILED(hr = g_lpDI->CreateDevice(GUID_SysKeyboard , &m_pKeyboard, NULL)))
return hr;
if(FAILED(hr = m_pKeyboard->SetDataFormat( &c_dfDIKeyboard )))
return hr;
hr = m_pKeyboard->SetCooperativeLevel( hWnd, DISCL_FOREGROUND | DISCL_NONEXCLUSIVE );
if( FAILED(hr) )
return hr;
m_pKeyboard->Acquire();
return S_OK;
}
![]() che non ho capito cosa ca@@o è: c'è bisogno di una versione di windows più aggiornata bhaa. se vuoi ti posso anche mandare il prog completo così spacchi tutto anche te il cast ci vuole perchè Codice:
LPDIRECTINPUT8 g_lpDI =NULL; |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:58.












cmq accedi in una posizione di memoria in cui NON devi accedere controlla cmq i valori che passi se sono corretti o meno









