DirectInput не хочет работать ! Где проблема?

Тема в разделе "WASM.DirectX", создана пользователем inew, 14 мар 2005.

  1. inew

    inew New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2004
    Сообщения:
    26
    Написал небольшую прогу, которая инициализирует DirectInput, создает устройство стандартной клавиатуры, ждет в цикле нажатия ESC и выходит. Ни одна из функций не возвращает ошибку, структура dfDIKeyboard корректна, а считывать клавиши прга не хочет? В чем может быть проблема? Может кто-либо сталкивался с подобным?
     
  2. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Скорее всего нужно делать Acquire()

    лучше покажи код или exe
     
  3. inew

    inew New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2004
    Сообщения:
    26
    S_T_A_S_

    Прилагаю exe

    Программа создает 2 потока: один - пустой (тестовый, который навечно зациклен), а второй - для получения ввода с клавиатуры через DirectInput. В этом втором потоке организован опрос клавиатуры через DirectInput и проверки нажатия клавиш. По нажатию ESC поток заканчивает свою работу, отправляя основному окну сообщение WM_USER+1.

    Процедура обработки сообщений окна содержит проверку сообщения WM_USER+1, которое является сигналом завершения работы потока. По его получении отдается команда всем потокам завершить свою работу, а после этого - осуществляется выход в ОС.

    Кроме того, в программе реализован механизм проверки потоков на зависание. Для этого обрабатывается сообщение WM_TIMER и 1 раз в 10 секунд процедура обработки сообщений окна, используя таймер, пингует все работающие потоки. Если хотя бы один из потоков не отвечает (что расценивается как зависание), то он принудительно закрывается, а всем остальным потокам в этом случае отдается команда завершить свою работу.

    Поскольку 1 поток изначально "висит", программа гарантированно закончит работу через 10 секунд после старта.

    Не могу понять почему, но DirectInput работать не хочет, хотя ни одна из его функций ошибки не выдает.

    [​IMG] _1467890125__proba.exe
     
  4. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    А код показать религия не позволяет? :)

    по экзешнику не понятно - вроде бы всё нормально, но массив под клавиши не заполняется никогда.

    У меня такое случалось, если c_dfDIKeyboard неправильная.

    Хотя у тя там како-то старый интерфейс юзается, может в этом дело? (я меньше 7го не использовал никогда)

    Возьми готовые сорцы да подправь под себя.

    Если 7й DI подходит, то на сайте лежит моя прошлоновогдняя интра на MASM, там есть опрос клавы. Если на Си, то на форуме недоделаная моя игрушка лежит.
     
  5. inew

    inew New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2004
    Сообщения:
    26
    Вообще написано на МАСМе. Исходника, правда, пока нет (надо из дому принести). Как принесу, скину...



    Чего то мне думается, что дело не в DirectInput, а в самом потоке: может он заканчивается некорректно и при закрытии вызывает сбой?



    Попробую также через 7 интерфейс сделать. Надеюсь, что заголовочного файла для 6 версии хватит (для 7 у меня нет)
     
  6. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Для 7й версии я делал инклуды - http://www.wasm.ru/src/3/hny2k4.zip

    если вдруг будешь это компилить, подправь пути к инклудам, я их сдуру жёстко прописал в проекте RadAsm.