Модераторы: Rickert
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не видит функцию CreateDevice() для клавиатуры! dinput.h по примеру из книги Горнакова 
V
    Опции темы
v_enom
Дата 15.4.2009, 01:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 11.10.2006

Репутация: нет
Всего: нет



не получается создать устройство. пишет ошибку
 Error    2    error C2039: 'CreateDevice' : is not a member of 'IDirectInputDevice8A'    f:\мои документы\visual studio 2005\projects\directxkeyboard\directxkeyboard\keyboard.cpp    153    

и почемут! smile  не находит такой функции.

помогите!!!! дальше не могу продвинуться.

вроде все библиотеки явно подрубил....
объект 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;




}


PM MAIL   Вверх
v_enom
Дата 15.4.2009, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 11.10.2006

Репутация: нет
Всего: нет



пожалуйста, помогите!!! в чем проблема?!!!
PM MAIL   Вверх
v_enom
Дата 15.4.2009, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 11.10.2006

Репутация: нет
Всего: нет



вай..... ну ваще Горнаков загоняет!!! опять при инициализации устройства такие ошибки в коде допускает. Интересно, он его компилил хотябы?!


в так надо!:

Код


//  Globals

LPDIRECTINPUT8 pInput = NULL;            // указатель на интерфейс
LPDIRECTINPUTDEVICE8 pKeyboard = NULL;   // указатель на усттройство.
.....

BOOL WINAPI InitialInput(HINSTANCE hinstanceMain)
{
    // создание основного объекта DirectInput
    if(FAILED(DirectInput8Create(hinstanceMain,                // дискриптор приложения, передаваемый в WinMain()
                                    DIRECTINPUT_VERSION,               // версия DirectInput
                                    IID_IDirectInput8,                      // версия интерфейса
                               //---------     (void**)&pKeyboard,               // указатель на интерфейс  должен быть pInput  а не pKeyboard !!!!!!!!!!!!!!!!
                                       (void**)&pInput, // правильно

                                    NULL)))                                   // не используется
        return E_FAIL;
    HRESULT hr;
    
    
  
    
//    pKeyboard->CreateDevice(GUID_SysKeyboard, &pKeyboard, NULL);    // и тут должен быть  pInput  а не pKeyboard !!!!!!!!!!!
    pInput->CreateDevice(GUID_SysKeyboard, &pKeyboard, NULL);      // правильно


дальше все отлично работает, ошибки больше не выдает и функцию находит. Спасибо  help'y от microsoft
 smile  

Это сообщение отредактировал(а) v_enom - 15.4.2009, 17:21
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




[ Время генерации скрипта: 0.0412 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.