C++ - WINAPI - Отсутствуют специальные функции и структуры необработанного ввода?

При попытке использовать специфические функции и структуры необработанного ввода в WINAPI с использованием MinGW в Code::Blocks IDE я получил много ошибок компилятора для отсутствующих функций и структур:

> ||In function 'void find_devices_input()':| |16|error:
> 'RAWINPUTDEVICELIST' was not declared in this scope| |16|error:
> 'GetRawInputDeviceList' was not declared in this scope| |19|error:
> 'list_devices_input' was not declared in this scope| |19|error:
> expected type-specifier before 'RAWINPUTDEVICELIST'| |19|error:
> expected ';' before 'RAWINPUTDEVICELIST'| |25|error: type '<type
> error>' argument given to 'delete', expected pointer| ||=== Build
> finished: 6 errors, 0 warnings (0 minutes, 0 seconds) ===|

Почему это происходит и как это можно исправить?


person Helixirr    schedule 03.07.2013    source источник


Ответы (2)


Ошибки компилятора возникают из-за отсутствия определения препроцессора. На основе этих общих вопросов и ответов, найденных здесь, кусок кода исправит это:

#ifdef __MINGW32__
#   define _WIN32_WINNT 0x0501
#endif // __MINGW32__
#include <windows.h>
person Helixirr    schedule 03.07.2013
comment
Вместо этого я рекомендую использовать mingw-w64, и вам не придется беспокоиться о подобных вещах. - person Jesse Good; 04.07.2013

Это происходит потому, что

'RAWINPUTDEVICELIST' не был объявлен в этой области

и т.п.

В документах говорится до #include <Windows.h>

person doctorlove    schedule 03.07.2013
comment
Что ж, это может иметь место для Microsoft Visual Studio и других IDE, но для MinGW в Code::Blocks это, к сожалению, не поможет. Я считаю, что заголовки MinGW не так точны, как должны быть. Я не специалист в этом вопросе, просто хотел помочь тем, у кого такие же проблемы, как и у меня. :) - person Helixirr; 03.07.2013