Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужен совет по direct input 
:(
    Опции темы
coop
Дата 10.7.2011, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Есть задача написать функцию принимающую хендл окна игры на directx и opengl , и относительные координаты в окне.Окно  не активно. Цель функции не затрагивая основной курсор(возможно создать для окна новое устройство мыши) симулировать нажатие кнопок мыши в окне по заданным координатам. 
На сколько я понял это можно сделать с помощью direct input, но нахожу только обрывки информации. Подскажите действительно ли это возможно и какую литературу стоит почитать(без разницы англ или русская). Понятно что пример будет просто бесценен. 
Да, конечная цель запуск нескольких окон которые будут работать одновременно, если можно каждое со своим устройством.
За ответы буду очень благодарен.
PM MAIL   Вверх
DCODE
Дата 11.8.2011, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



используй функции win32:

bool GetCursorPos(LPPOINT point);//для асинхронного опредиления текущей позиции курсора на экране

SHORT GetAsyncKeyState(int vKey);//для асинхронного опредиления состояния ввода

например:

ТАК ЧИТАЕМ ПОЗИЦИЮ КУРСОРА НА ЭКРАНЕ, работает даже если форма не в фокусе...

Код

#include <iostream>

using namespace std;

#include <windows.h>

#pragma comment(lib, "user32.lib")
#pragma comment(lib, "gdi32.lib")

//работает даже если окно не в фокусе

int main()
{

    POINT p;//точка экрана

    while(1)
    {

    //так читаем асинхронно позицию курсора на экране
    //ВАЖНО в координатах экрана
    
    GetCursorPos(&p);//извлекаем позицию курсора

    cout<<"CursorPos=\t"<<p.x<<"\t"<<p.y<<endl;


    }

    return 0;
}






а так асинхронно читаем клавиши мыши
список кодов  клавиш сдесь: http://vsokovikov.narod.ru/New_MSDN_API/Ot...al_key_code.htm 

Код



#include <iostream>

using namespace std;

#include <windows.h>

#pragma comment(lib, "user32.lib")
#pragma comment(lib, "gdi32.lib")

//работает даже если окно не в фокусе

int main()
{

    bool run=true;//флаг работы программы

    while(run)
    {

        system("cls");

        //так читаем асинхронно коды клавиш ввода

        //нажата левая клавиша мыши
        if(GetAsyncKeyState(VK_LBUTTON))
        { 
            cout<<"Left Button Down"<<endl;
        }

        //нажата правая клавиша мыши
        if(GetAsyncKeyState(VK_RBUTTON))
        {
            cout<<"Right Button Down"<<endl;
        }

        //нажата средняя клавиша мыши
        if(GetAsyncKeyState(VK_MBUTTON))
        {
            cout<<"Middle Button Down"<<endl;
        }

        

        //это просто проверка нажатия клавиши Esc для выхода
        if(GetAsyncKeyState(VK_ESCAPE))
        {
          run = false;
        }


    }

    return 0;
}


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




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


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

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