DirectDrawn et souris

SnOOpss Messages postés 571 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 5 décembre 2013 - 25 mai 2006 à 16:37
ericTTT Messages postés 1 Date d'inscription jeudi 28 février 2008 Statut Membre Dernière intervention 28 février 2008 - 28 févr. 2008 à 19:22
Bonjour je suis en train de programmer un jeu en directDrawn en mode fenetré qui se joue a la souris et j'ai eu quelques problemes. En fait a cause du mode fenetré je garde la souris presente sous XP.


1 essai: Souris gerée avec DirectInput en mode absolu, compliqué et les
coordonnées obtenue n'on rien a voir avec les pixels a l'ecran.


2 eme essai : Souris gérée avec les api Windows GetCursorPos(),
enfantin mais les coordonnées obtenue n'ont toujours rien a voir avec
les pixels de l'ecran (ce n'est pas un simple decalage constant).


J'ai essayé de faire une fenetre aux meme dimension que l'ecran DD mais ca n'arrange pas grand chose.

Je sait pas trop quoi mettre par comme code pour expliquer.



    //-- Create the back buffer


        ddsd.dwFlags = DDSD_WIDTH | DDSD_HEIGHT | DDSD_CAPS;

        // Make our off-screen surface 320x240

        ddsd.dwWidth = 320;

        ddsd.dwHeight = 240;

        // Create an offscreen surface

        ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;


        hr = g_pDD->CreateSurface(&ddsd, &g_pDDSBack, NULL);




et


    HWND g_hwndMain = CreateWindowEx(WS_EX_TOPMOST,
"Applid3d", "titre", WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU |
WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX |
WS_VISIBLE,CW_USEDEFAULT, CW_USEDEFAULT,320, 240, 0,0,hInstance, 0 );

3 réponses

cs_Urgo Messages postés 780 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 avril 2009 1
25 mai 2006 à 17:56
Regarde donc du côté de

ClientToScreen, ScreenToClient...

Urgo
0
SnOOpss Messages postés 571 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 5 décembre 2013
25 mai 2006 à 18:03
J utilise ca


void checkinput(HWND hwnd)

{

    POINT curs;

    GetCursorPos(&curs);

    MapWindowPoints(HWND_DESKTOP, hwnd, (LPPOINT)&curs, 1);

    xj1=curs.x;

    yj1=curs.y;

 }


Mais c'est plus qu'un simple decalage, aux coordonnées (0,0) c'est bon
pas de problemes mais plus on s'eloigne, plus c'est décalé.


Sinon un autre truc bizarre, j'ai desactivé la fonction pour effacer
l'ecran et je m'apercoit que a chaque fois que je relance mon
application elle me ressort la derniere image faite. La commande
release ne fait que liberer la memoire mais c'est marrant qu'au
lancement suivant tout se remette comme avant non ??
0
ericTTT Messages postés 1 Date d'inscription jeudi 28 février 2008 Statut Membre Dernière intervention 28 février 2008
28 févr. 2008 à 19:22
Allo,
   Quelqu'un peut m'envoyer un exemple de code ou je peut DETECTER un
 clic (ou un double-clic) de souris avec Visual C++ 6.0 ?
Merci de votre aide
Eric
0
Rejoignez-nous