не получается создать устройство. пишет ошибку Error 2 error C2039: 'CreateDevice' : is not a member of 'IDirectInputDevice8A' f:\мои документы\visual studio 2005\projects\directxkeyboard\directxkeyboard\keyboard.cpp 153 и почемут!  не находит такой функции. помогите!!!! дальше не могу продвинуться. вроде все библиотеки явно подрубил.... объект pKeyboard видит другие функции...кроме CreateDevice() весь код: | Код | #define INITGUID
#include <windows.h> //#include <mmsystem.h> // //#include <d3d9.h> // для инициаизации библиотеки классов. //#include <d3dx9.h> //#include <d3dx9core.h> // для работы с текстом //#include <d3dx9mesh.h> // для работы с Х-файлом 3д модели // //#pragma comment(lib,"d3d9.lib") // так вручную можно подключать библиотеку //#pragma comment(lib,"d3dx9.lib") //#pragma comment(lib,"WINMM.LIB") // для функции timeGetTime(); //
#include <dinput.h> // для инициализации устройств ввода
#pragma comment(lib,"dinput.lib") #pragma comment(lib,"dxguid.lib") #pragma comment(lib,"dinput8.lib")
LPDIRECTINPUT8 pInput = NULL; // указатель на интерфейс LPDIRECTINPUTDEVICE8 pKeyboard = NULL; // указатель на усттройство.
BOOL WINAPI InitialInput();
//--------------------------------------------------------------------------- //Главная функция WinMain //--------------------------------------------------------------------------- LRESULT CALLBACK MainWinProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam ) { switch(msg) { case WM_PAINT: { ValidateRect(hwnd,NULL); // проприсовка всей клиентской области окна. NULL - проприсовка по-умолчанию. не обязательно break; } case WM_DESTROY: { PostQuitMessage(0); return 0; }
}
return (DefWindowProc(hwnd,msg,wparam,lparam)); }
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, 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(GRAY_BRUSH); windowsclass.lpszMenuName = NULL; windowsclass.lpszClassName = "WINDOWSCLASS"; windowsclass.hIconSm = LoadIcon(NULL,IDI_APPLICATION); // регистрируем класс if(! RegisterClassEx(&windowsclass)) return 0;
// можно создать окно if(!(hwnd = CreateWindowEx(NULL,"WINDOWSCLASS","Базовое окно",WS_OVERLAPPEDWINDOW | WS_VISIBLE, 500,300,500,400,NULL,NULL,hInstance,NULL))) return 0;
ZeroMemory(&msg,sizeof(msg)); // инициализация Direct3D в программе //if(SUCCEEDED(InitialDirect3D(hwnd))) // SUCCEEDED - макрос проверки кода на успешное выполнение {// успех.... if(1) { ShowWindow(hwnd,SW_SHOWDEFAULT); UpdateWindow(hwnd); ZeroMemory(&msg,sizeof(msg));
// обработка ошибок while(msg.message!=WM_QUIT) { if(PeekMessage(&msg,NULL,0,0,PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } } } }
return (msg.wParam); } //--------------------------------------------------------------------------- //---------------------------------------------------------------------------
//--------------------------------------------------------------------------- // инициализация устройств ввода //--------------------------------------------------------------------------- BOOL WINAPI InitialInput(HINSTANCE hinstanceMain) { // создание основного объекта DirectInput if(FAILED(DirectInput8Create(hinstanceMain, // дискриптор приложения, передаваемый в WinMain() DIRECTINPUT_VERSION, // версия DirectInput IID_IDirectInput8, // версия интерфейса (void**)&pKeyboard, // указатель на интерфейс NULL))) // не используется return E_FAIL;
HRESULT hr; LPDIRECTINPUTDEVICE8A p; //----------------------------------------------------------------------------------------------------------------------------------------------ВОТ ТУТ ERROR!!!! pKeyboard->CreateDevice(GUID_SysKeyboard, &pKeyboard, NULL);
//----------------------------------------------------------------------------------------------------------------------------------------------ВОТ ТУТ ERROR!!!! //if FILED(hr) //{ // DeleteInput(); //return FALSE; //}
//return TRUE;
}
|
|