Четверг, 19.06.2025, 21:34
Приветствую Вас Гость | RSS
Главная | ПЖЛ помогите!! - Проблема создания 3Д устройства - Форум | Регистрация | Вход
Direct3D. Разработка игр
Форма входа
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
ПЖЛ помогите!! - Проблема создания 3Д устройства
FridayHoldДата: Воскресенье, 15.03.2009, 20:59 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 1
Репутация: 0
Статус: Offline
Всем привет. У меня возникла проблема при запуске приложения которое я сам написал. Вот сама проблема - "Невозможно создать 3Д устройство". Вот мои файлы если вы увидили в них ошибку (логическую - так как синтаксических нету, я уже скомпилировал и запускал) прошу сказать. Заранее благодарю!

Мой проект состоит из 5 файлов:
1)FH_InitialisingDirectX.cpp
2)FH_InitialisingDirectX.h
3)FH_MainWindow.cpp
4)FH_MainWindow.h
5)Start.cpp

================== =============================================
Start.cpp
===============================================================

Quote
#pragma comment(lib, "d3d9.lib")
#pragma comment(lib, "d3dx9.lib")
#pragma comment(lib, "winmm.lib")

#include "FH_MainWindow.h"
#include "FH_InitialisingDirectX.h"

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
FH_MainWindow* MWin = new FH_MainWindow();
FH_InitialisingDirectX* InitDx = new FH_InitialisingDirectX();

MWin->m_hInst = hInstance;

MWin->FH_CreateWindowClassEx(LoadCursor(NULL, IDC_ARROW), LoadIcon(NULL, IDI_APPLICATION), LoadIcon(NULL, IDI_APPLICATION));
MWin->FH_CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, WS_OVERLAPPEDWINDOW);
MWin->FH_MessageManagerEx();
InitDx->UnInitilisingDirectX();
MWin->FH_DestroyWindow();

return 1;
}

LRESULT CALLBACK MsgProc(HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
switch(iMsg)
{
case WM_CREATE:
return(0);
case WM_PAINT:
return(0);
case WM_DESTROY:
case WM_CLOSE:
PostQuitMessage(0);
return(0);
default:
return DefWindowProc(hWnd, iMsg, wParam, lParam);
}
}

Сории остальные файлы не описал, потомучто при создание темы выдавало ошибки о превышеном лимите текста. Я их опишу в слудующих сообщених!

Добавлено (15.03.2009, 20:58)
---------------------------------------------
===============================================================
FH_MainWindow.h
===============================================================

Quote
//====================================================================================
// File: FH_MainWindow.h
// Version: 2.0
//====================================================================================
#ifndef _FH_MAINWINDOW_H_
#define _FH_MAINWINDOW_H_

#include <windows.h>
#include <windowsx.h>

#include "FH_InitialisingDirectX.h"

#define WND_CLASS_NAME "Demo"
#define WND_TITLE_NAME "Demo"

class FH_MainWindow
{
public:
HWND m_hWnd;
HINSTANCE m_hInst;
int m_iWndWidth;
int m_iWndHeight;
int m_iWndPosX;
int m_iWndPosY;
bool keys[256];
public:
FH_MainWindow();
~FH_MainWindow();

void FH_CreateWindowClass(HCURSOR hCursor, HICON hIcon);
void FH_CreateWindowClassEx(HCURSOR hCursor, HICON hIcon, HICON hIconSm);

void FH_CreateWindow(DWORD dwStyle);
void FH_CreateWindowEx(DWORD dwStyleEx, DWORD dwStyle);

void FH_MessageManager();
void FH_MessageManagerEx();

void FH_DestroyWindow();
};

long CALLBACK MsgProc(HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam);

#endif//_FH_MAINWINDOW_H_

Добавлено (15.03.2009, 20:58)
---------------------------------------------
===============================================================
FH_MainWindow.cpp
===============================================================

Quote

//====================================================================================
// File: FH_MainWindow.cpp
// Version: 2.0
//====================================================================================
#include "FH_MainWindow.h"

FH_InitialisingDirectX *InitDx = new FH_InitialisingDirectX();

FH_MainWindow::FH_MainWindow()
{
m_hWnd = NULL;
m_hInst = NULL;
m_iWndWidth = 800;
m_iWndHeight = 600;
m_iWndPosX = 0;
m_iWndPosY = 0;

}

FH_MainWindow::~FH_MainWindow()
{

}

void FH_MainWindow::FH_CreateWindowClass(HCURSOR hCursor, HICON hIcon)
{
WNDCLASS sClassWnd =
{
CS_HREDRAW | CS_VREDRAW | CS_OWNDC,
MsgProc,
0,
0,
m_hInst,
hIcon,
hCursor,
(HBRUSH)GetStockObject(WHITE_BRUSH),
NULL,
WND_CLASS_NAME
};

RegisterClass(&sClassWnd);
}

void FH_MainWindow::FH_CreateWindowClassEx(HCURSOR hCursor, HICON hIcon, HICON hIconSm)
{
WNDCLASSEX sClassWnd =
{
sizeof(WNDCLASSEX),
CS_HREDRAW | CS_VREDRAW | CS_OWNDC,
MsgProc,
0,
0,
m_hInst,
hIcon,
hCursor,
(HBRUSH)GetStockObject(WHITE_BRUSH),
NULL,
WND_CLASS_NAME,
h IconSm
};

RegisterClassEx(&sClassWnd);
}

void FH_MainWindow::FH_CreateWindow(DWORD dwStyle)
{
m_hWnd = CreateWindow
(
WND_CLASS_NAME,
WND_TITLE_NAME,
dwStyle,
m_iWndPosX,
m_iWndPosY,
m_iWndWidth,
m_iWndHeight,
NULL,
NULL,
m_hInst,
NULL
);

ShowWindow(m_hWnd, SW_SHOW);
SetFocus(m_hWnd);
UpdateWindow(m_hWnd);
SetForegroundWindow(m_hWnd);
}

void FH_MainWindow::FH_CreateWindowEx(DWORD dwStyleEx, DWORD dwStyle)
{
m_hWnd = CreateWindowEx
(
dwStyleEx,
WND_CLASS_NAME,
WND_TITLE_NAME,
dwStyle,
m_iWndPosX,
m_iWndPosY,
m_iWndWidth,
m_iWndHeight,
NULL,
NULL,
m_hInst,
NULL
);

ShowWindow(m_hWnd, SW_SHOW);
SetFocus(m_hWnd);
UpdateWindow(m_hWnd);
SetForegroundWindow(m_hWnd);
}

void FH_MainWindow::FH_MessageManager()
{
MSG msg;

while(GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}

void FH_MainWindow::FH_MessageManagerEx()
{
MSG msg;

if(InitDx->InitialisingDirectX())
{
while (InitDx->m_bRenderProcess)
{
if(PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
{
if (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
else
{
if(keys[VK_ESCAPE])
InitDx->m_bRenderProcess = false;

if(keys[VK_F1])
{
InitDx->m_bFullScreen = !InitDx->m_bFullScreen;
}
InitDx->Render();
}
}
}
}

void FH_MainWindow::FH_DestroyWindow()
{
UnregisterClass(WND_CLASS_NAME, m_hInst);
DestroyWindow(m_hWnd);
}

Добавлено (15.03.2009, 20:59)
---------------------------------------------
===============================================================
FH_Initialising.h
===============================================================

Quote
//====================================================================================
// File: FH_MainWindow.h
// Version: 2.0
//====================================================================================
#ifndef _FH_MAINWINDOW_H_
#define _FH_MAINWINDOW_H_

#include <windows.h>
#include <windowsx.h>

#include "FH_InitialisingDirectX.h"

#define WND_CLASS_NAME "Demo"
#define WND_TITLE_NAME "Demo"

class FH_MainWindow
{
public:
HWND m_hWnd;
HINSTANCE m_hInst;
int m_iWndWidth;
int m_iWndHeight;
int m_iWndPosX;
int m_iWndPosY;
bool keys[256];
public:
FH_MainWindow();
~FH_MainWindow();

void FH_CreateWindowClass(HCURSOR hCursor, HICON hIcon);
void FH_CreateWindowClassEx(HCURSOR hCursor, HICON hIcon, HICON hIconSm);

void FH_CreateWindow(DWORD dwStyle);
void FH_CreateWindowEx(DWORD dwStyleEx, DWORD dwStyle);

void FH_MessageManager();
void FH_MessageManagerEx();

void FH_DestroyWindow();
};

long CALLBACK MsgProc(HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam);

#endif//_FH_MAINWINDOW_H_

Добавлено (15.03.2009, 20:59)
---------------------------------------------
===============================================================
FH_Initialising.cpp
===============================================================

Quote

//====================================================================================
// File: FH_MainWindow.cpp
// Version: 2.0
//====================================================================================
#include "FH_MainWindow.h"

FH_InitialisingDirectX *InitDx = new FH_InitialisingDirectX();

FH_MainWindow::FH_MainWindow()
{
m_hWnd = NULL;
m_hInst = NULL;
m_iWndWidth = 800;
m_iWndHeight = 600;
m_iWndPosX = 0;
m_iWndPosY = 0;

}

FH_MainWindow::~FH_MainWindow()
{

}

void FH_MainWindow::FH_CreateWindowClass(HCURSOR hCursor, HICON hIcon)
{
WNDCLASS sClassWnd =
{
CS_HREDRAW | CS_VREDRAW | CS_OWNDC,
MsgProc,
0,
0,
m_hInst,
hIcon,
hCursor,
(HBRUSH)GetStockObject(WHITE_BRUSH),
NULL,
WND_CLASS_NAME
};

RegisterClass(&sClassWnd);
}

void FH_MainWindow::FH_CreateWindowClassEx(HCURSOR hCursor, HICON hIcon, HICON hIconSm)
{
WNDCLASSEX sClassWnd =
{
sizeof(WNDCLASSEX),
CS_HREDRAW | CS_VREDRAW | CS_OWNDC,
MsgProc,
0,
0,
m_hInst,
hIcon,
hCursor,
(HBRUSH)GetStockObject(WHITE_BRUSH),
NULL,
WND_CLASS_NAME,
h IconSm
};

RegisterClassEx(&sClassWnd);
}

void FH_MainWindow::FH_CreateWindow(DWORD dwStyle)
{
m_hWnd = CreateWindow
(
WND_CLASS_NAME,
WND_TITLE_NAME,
dwStyle,
m_iWndPosX,
m_iWndPosY,
m_iWndWidth,
m_iWndHeight,
NULL,
NULL,
m_hInst,
NULL
);

ShowWindow(m_hWnd, SW_SHOW);
SetFocus(m_hWnd);
UpdateWindow(m_hWnd);
SetForegroundWindow(m_hWnd);
}

void FH_MainWindow::FH_CreateWindowEx(DWORD dwStyleEx, DWORD dwStyle)
{
m_hWnd = CreateWindowEx
(
dwStyleEx,
WND_CLASS_NAME,
WND_TITLE_NAME,
dwStyle,
m_iWndPosX,
m_iWndPosY,
m_iWndWidth,
m_iWndHeight,
NULL,
NULL,
m_hInst,
NULL
);

ShowWindow(m_hWnd, SW_SHOW);
SetFocus(m_hWnd);
UpdateWindow(m_hWnd);
SetForegroundWindow(m_hWnd);
}

void FH_MainWindow::FH_MessageManager()
{
MSG msg;

while(GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}

void FH_MainWindow::FH_MessageManagerEx()
{
MSG msg;

if(InitDx->InitialisingDirectX())
{
while (InitDx->m_bRenderProcess)
{
if(PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
{
if (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
else
{
if(keys[VK_ESCAPE])
InitDx->m_bRenderProcess = false;

if(keys[VK_F1])
{
InitDx->m_bFullScreen = !InitDx->m_bFullScreen; //????????????? ? ???????/????????????? ?????
}
InitDx->Render();
}
}
}
}

void FH_MainWindow::FH_DestroyWindow()
{
UnregisterClass(WND_CLASS_NAME, m_hInst);
DestroyWindow(m_hWnd);
}

Можете это использовать как начало в своих проектах, если канешно же мы решим проблему с созданием устройства smile


В данный момент идет разработка крупного проект (игры по онлайну), всех желающих поучаствовать пишыте в ICQ: 472835973.

Буду рад слышать/видеть в ICQ именно вас!

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


Doom†Cross Software ® 2025
Создать бесплатный сайт с uCoz