int CMapMakerView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
/*if (CScrollView::OnCreate(lpCreateStruct) == -1)
return -1;*/
CWnd cwnd;
if( NULL == ( pDirect3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )
return E_FAIL;
D3DDISPLAYMODE Display;
if( FAILED( pDirect3D->GetAdapterDisplayMode( D3DADAPTER_DEFAULT, &Display ) ) )
return E_FAIL;
D3DPRESENT_PARAMETERS Direct3DParametr;
ZeroMemory( &Direct3DParametr, sizeof(Direct3DParametr) );
Direct3DParametr.Windowed = TRUE;
Direct3DParametr.SwapEffect = D3DSWAPEFFECT_DISCARD;
Direct3DParametr.BackBufferFormat = Display.Format;
if( FAILED( pDirect3D -> CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, cwnd, // OШИБКА
D3DCREATE_HARDWARE_VERTEXPROCESSING,
&Direct3DParametr, &pDirect3DDevice ) ) )
{
return E_FAIL;
}
return S_OK;
// return 0;
}
MFC и DirectX
Код:
Переменная cwnd - естественнно неправильная! Как сделать правильно? Я работаю с MFC
HWND hwnd=AfxGetMainWnd()->m_hWnd;
и вся проблема решена!
Цитата:
Originally posted by Automat
Используй:
HWND hwnd=AfxGetMainWnd()->m_hWnd;
и вся проблема решена!
Используй:
HWND hwnd=AfxGetMainWnd()->m_hWnd;
и вся проблема решена!
Неа =((( Не работает... Выдает вот что
Unhandled exception at 0x00414d78 in MapMaker.exe: 0xC0000005: Access violation reading location 0x00000020.
Я пробовал даже this->m_hWnd; - тоже такой же эффект (токо он еще ругается на object.cpp по-моему)
Я специально сам написал, то чем ты занимаешься и у меня всё работает.
int CChildView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if( NULL == ( pDirect3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )
return E_FAIL;
D3DDISPLAYMODE Display;
if( FAILED( pDirect3D->GetAdapterDisplayMode( D3DADAPTER_DEFAULT, &Display ) ) )
return E_FAIL;
D3DPRESENT_PARAMETERS Direct3DParametr;
ZeroMemory( &Direct3DParametr, sizeof(Direct3DParametr) );
Direct3DParametr.Windowed = TRUE;
Direct3DParametr.SwapEffect = D3DSWAPEFFECT_DISCARD;
Direct3DParametr.BackBufferFormat = Display.Format;
Direct3DParametr.AutoDepthStencilFormat=D3DFMT_D16; // Лично у меня отсутствие строк
Direct3DParametr.EnableAutoDepthStencil=TRUE;// Настройки буфера трафарета не вызывает ошибку
HWND hwnd;
hwnd=AfxGetMainWnd()->m_hWnd;
if( FAILED( pDirect3D -> CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL,hwnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,// Видеокарта встроеная не держит DirectX9
&Direct3DParametr, &pDirect3DDevice ) ) )
{
return E_FAIL;
}
return S_OK;
}