Nabend,
ich versuche, mir via einiger Tutorials (z.B.
klick) ein paar Grundlagen in Sachen DirectInput anzueignen, da ich für eine Unigeschichte Eingaben von Joysticks verarbeiten will.
C meine ich einigermaßen zu verstehen, bei C++ siehts eher mau aus - objektorientierte Programmierung an sich ist kein Problem, aber von all den Spezialitäten verstehe ich nichts, hab's bisher einfach noch nicht gebraucht.
Konkret:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#include <windows.h>
#include <dinput.h>
#pragma comment (lib, "dinput8.lib")
#pragma comment (lib, "dxguid.lib")
void main() {
HINSTANCE g_hinst = NULL;
LPDIRECTINPUT8 g_lpDI;
DirectInput8Create(g_hinst, DIRECTINPUT_VERSION, IID_IDirectInput8W, (void**)&g_lpDI, NULL);
return;
}
|
Warum kompiliert das, wenn ichs dem C++-Compiler übergebe (nutze Visual Studio 2010), nicht aber als reines C?
Fehlermeldungem vom C-Compiler wären:
|
Quellcode
|
1
2
|
error C2440: 'function' : cannot convert from 'const GUID' to 'const IID *const '
warning C4024: 'DirectInput8Create' : different types for formal and actual parameter 3
|
Die beziehen sich beide auf den dritten Parameter der Zeile 11, "const IID &riidltf".
Ich finde es ausgesprochen schwierig, im Typchaos von DirectX irgendwie durchzusehen. Wenn ich die MSDN-Library installiere, komme ich dann irgendwie leicht an Tooltips mit Erläuterungen, wenn ich mit der Maus über die entsprechenden Typen fahre? Was soll ich mir denn unter dem Typ "IID" vorstellen und warum heißt der verdammte Parameter riidltf?
Hilfe?