Ошибки в коде
| |
rayman3000 | Дата: Вторник, 19 Марта 2013, 19:38 | Сообщение # 1 |
почетный гость
Сейчас нет на сайте
| Сам код Код #include <windows.h>
#include <d3d9.h>
LPDIRECT3D9 pDirect3D = 0;
HRESULT IntialDirect3D(HWND hwnd) { if(0 == (pDirect3D = Direct3DCreate9(D3D_SDK_VERSION))) return E_FAIL; D3DDISPLAYMODE Display; if(FAILED(pDirect3D ->GetAdapterDisplayMode(D3DADAPTER_DEFAULD,Dysplay))) return E_FAIL; D3DPRESENT_PARAMETERS Direct3DParametr; ZeroMemory(&Direct3DParametr,sizeof(Direct3DParametr)); Direct3DParametr.Windowed = true; Direct3DParametr.SwapEffect = D3DSWAPEFFECT_DISCARD; Direct3DParametr.BackBufferFormat = Direct3DParametr.BackBufferFormat; if(FAILED(pDirect3D ->CreateDevice(D3DADAPTER_DEFAULD,D3DDEVTYPE_HAL,hwnd,D3DCREATE_HARDWARE_VERTEXPROCESSWG,&Direct3DParametr,&pDirect3DDevice))) return E_FAIL; return S_OK;
}
LRESULT CALLBACK MainWinProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{ switch(msg) { case WM_PAINT: break; case WM_DESTROY: { PostQuitMessage(0); return(0); } break; } return (DefWindowProc(hwnd, msg, wparam, lparam)); }
int WINAPI WinMain (HINSTANCE hinstance,HINSTANCE hprevinstanse ,LPSTR LpCmdLine,int nCmdShow) { WNDCLASSEX windowsclass; HWND hwnd; MSG msg; windowsclass.cbSize = sizeof(WNDCLASSEX); windowsclass.style = CS_DBLCLKS|CS_OWNDC|CS_HREDRAW|CS_VREDRAW;
windowsclass.lpfnWndProc = MainWinProc; windowsclass.cbClsExtra = 0; windowsclass.cbWndExtra = 0; windowsclass.hInstance = hinstance; windowsclass.hIcon = LoadIcon(NULL,IDI_APPLICATION); windowsclass.hCursor = LoadCursor(NULL,IDC_ARROW); windowsclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); windowsclass.lpszMenuName = NULL; windowsclass.lpszClassName = L"WINDOWSCLASS"; windowsclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
if(!RegisterClassEx(&windowsclass)) return(0); if(!(hwnd = CreateWindowEx(NULL, L"WINDOWSCLASS", L"Базовое окно для DirectX", WS_OVERLAPPEDWINDOW|WS_VISIBLE, 0,0, 500,400, NULL, NULL, hinstance ,0 ))) return(0);
ShowWindow(hwnd, SW_SHOWDEFAULT); UpdateWindow(hwnd);
while(GetMessage(&msg, NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return(msg.wParam); } UpdateWindow( hwnd );
while(GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg);
DispatchMessage(&msg); }
return(msg.wParam); Ошибки такие:while - требуестя определение, UpdateWindow - это объявление не содержит класс хранения или спецификатор типа. тутже hwnd - требуется объявление. Код if(FAILED(pDirect3D ->GetAdapterDisplayMode(D3DADAPTER_DEFAULD,Dysplay))) return E_FAIL; FAILED - идентификатор D3DADAPTER_DEFAULD неопределен.
Что не так?
Сообщение отредактировал rayman3000 - Вторник, 19 Марта 2013, 19:40 |
|
| |
TrueNathan | Дата: Вторник, 19 Марта 2013, 20:17 | Сообщение # 2 |
частый гость
Сейчас нет на сайте
| Код UpdateWindow( hwnd );
while(GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg);
DispatchMessage(&msg); }
return(msg.wParam); Почему то этот код повторяется и причём вне функции
вот рабочий код Код #include <windows.h>
#include <d3d9.h>
LPDIRECT3D9 pDirect3D = 0;
HRESULT IntialDirect3D(HWND hwnd) { if(0 == (pDirect3D = Direct3DCreate9(D3D_SDK_VERSION))) return E_FAIL; D3DDISPLAYMODE Display; // if(FAILED(pDirect3D ->GetAdapterDisplayMode(D3DADAPTER_DEFAULD,Dysplay))) // return E_FAIL; D3DPRESENT_PARAMETERS Direct3DParametr; ZeroMemory(&Direct3DParametr,sizeof(Direct3DParametr)); Direct3DParametr.Windowed = true; Direct3DParametr.SwapEffect = D3DSWAPEFFECT_DISCARD; Direct3DParametr.BackBufferFormat = Direct3DParametr.BackBufferFormat; //if(FAILED(pDirect3D ->CreateDevice(D3DADAPTER_DEFAULD,D3DDEVTYPE_HAL,hwnd,D3DCREATE_HARDWARE_VERTEXPROCESSWG,&Direct3DParametr,&pDirect3DDevice))) // return E_FAIL; return S_OK;
}
LRESULT CALLBACK MainWinProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{ switch(msg) { case WM_PAINT: break; case WM_DESTROY: { PostQuitMessage(0); return(0); } break; } return (DefWindowProc(hwnd, msg, wparam, lparam)); }
int WINAPI WinMain (HINSTANCE hinstance,HINSTANCE hprevinstanse ,LPSTR LpCmdLine,int nCmdShow) { WNDCLASSEX windowsclass; HWND hwnd; MSG msg; windowsclass.cbSize = sizeof(WNDCLASSEX); windowsclass.style = CS_DBLCLKS|CS_OWNDC|CS_HREDRAW|CS_VREDRAW;
windowsclass.lpfnWndProc = MainWinProc; windowsclass.cbClsExtra = 0; windowsclass.cbWndExtra = 0; windowsclass.hInstance = hinstance; windowsclass.hIcon = LoadIcon(NULL,IDI_APPLICATION); windowsclass.hCursor = LoadCursor(NULL,IDC_ARROW); windowsclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); windowsclass.lpszMenuName = NULL; windowsclass.lpszClassName = L"WINDOWSCLASS"; windowsclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
if(!RegisterClassEx(&windowsclass)) return(0); if(!(hwnd = CreateWindowEx(NULL, L"WINDOWSCLASS", L"Базовое окно для DirectX", WS_OVERLAPPEDWINDOW|WS_VISIBLE, 0,0, 500,400, NULL, NULL, hinstance ,0 ))) return(0);
ShowWindow(hwnd, SW_SHOWDEFAULT); UpdateWindow(hwnd);
while(GetMessage(&msg, NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return(msg.wParam); }
1 ошибка в знании английского языка D3DADAPTER_DEFAULD слово DEFAULD правильно пишется DEFAULT 2. Не объявлены эти переменные. D3DCREATE_HARDWARE_VERTEXPROCESSWG; *pDirect3DDevice; Объявляются так - IDirect3DDevice9 *pDirect3DDevice; DWORD D3DCREATE_HARDWARE_VERTEXPROCESSWG;
Им похоже значение нужно присвоить...DX не изучал пока, немогу знать что должно чему равняться, в итоге программа компилируется с выводом предупреждений Код warning C4700: uninitialized local variable 'Display' used warning C4700: uninitialized local variable 'D3DCREATE_HARDWARE_VERTEXPROCESSWG' used
Сообщение отредактировал TrueNathan - Вторник, 19 Марта 2013, 20:34 |
|
| |
Apati | Дата: Вторник, 19 Марта 2013, 20:18 | Сообщение # 3 |
заслуженный участник
Сейчас нет на сайте
| D3DADAPTER_DEFAULT И в конце программы у тебя код за пределами функции WinMain, убери его
|
|
| |
rayman3000 | Дата: Вторник, 19 Марта 2013, 20:25 | Сообщение # 4 |
почетный гость
Сейчас нет на сайте
| Большое вам спасибо
|
|
| |
|