Вторник, 26 Ноября 2024, 09:10

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Ошибки в коде
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 );

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
почетный гость
Сейчас нет на сайте
Большое вам спасибо


  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг