begin process at 2012 05 30 06:31:55
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

GUI

 > 

Récupérer les événements sur une frame dans C++ via JNI


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Récupérer les événements sur une frame dans C++ via JNI

mardi 17 mars 2009 à 14:29:04 | Récupérer les événements sur une frame dans C++ via JNI

PleoX

Bonjour,

(J'espère avoir mis mon sujet dans le bon thème. J'ai pas trouvé de thème plus aproprié.)

Je suis en train de créer une application multi-touch en java (sous Windows 7). Pour cela, j'utilise la JDK 1.6 sous eclipse et visual C++ 6.
Pour récupérer les événements multi-touch de windows, il me faut utiliser C++. Jusque là, pas de soucis, j'ai réussi à créer une fenêtre qui me renvoie les mouvements effectués dessus (notamment : Zoom, rotation, déplacement). Je récupère les événements à l'aide de la fonction suivante :

LRESULT CALLBACK WndProc(HWND hWnd, UINT mes, WPARAM wParam, LPARAM lParam)
{
    ...
    switch (mes)
    {
    case WM_LBUTTONDOWN:
        //Traitement en cas de clic gauche
        break;
    case WM_MBUTTONDOWN:
         //Traitement en cas de clic milieu
        break;
    case WM_RBUTTONDOWN:
         //Traitement en cas de clic droit
        break;
    case WM_GESTURE:
        //Traitement en cas de multi-touch
        //Partie qui m'intéresse
        break;
    case WM_COMMAND:
        ...
        break;
    case WM_PAINT:
       ...
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, mes, wParam, lParam);
    }
    return 0;
}


J'ai donc essayé de créer une DLL C++ récupérant une fenêtre Java (Frame). A partir de cette fenêtre, j'aurais aimé récupéré l'instance de celle-ci afin de pouvoir boucler sur la procédure Ci-dessus.

Tout d'abord j'ai copié la méthode MyRegisterClass de la manière suivante :

ATOM MyRegisterClass(HINSTANCE hInstance)
{
    WNDCLASSEX wcex;
    ATOM temp;

    wcex.cbSize = sizeof(WNDCLASSEX);

    wcex.style            = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc    = WndProc;
    wcex.cbClsExtra        = 0;
    wcex.cbWndExtra        = 0;
    wcex.hInstance        = hInstance;
    wcex.hIcon            = LoadIcon(NULL, IDI_APPLICATION);
    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground    = (HBRUSH)(COLOR_WINDOW+1);
    wcex.lpszMenuName   = NULL;
    wcex.lpszClassName    = "MAFRAME";
    wcex.hIconSm        = LoadIcon(NULL, IDI_APPLICATION);

    temp = RegisterClassEx(&wcex);
    return temp;
}


Puis j'ai ajouté les lignes suivantes afin de récupérer l'instance de ma fenêtre java (Frame) :

//Recuperation de l'instance de la fenetre
hInst = (HINSTANCE)GetWindowLongPtr( maFrame->hWnd, GWL_HINSTANCE);
MyRegisterClass(hInst);


Mais cela n'a pas l'air de fonctionner correctement. J'ai donc essayer de réassocier l'instance à la fenetre avec le code suivant (placé juste aprés le code précédent) : (Je sais que c'est pas propre mais c'était pour tester)

//Association de l'instance avec la fenetre
maFrame->hWnd = CreateWindow("MAFRAME", "MaFrame", NULL,
                0, 0, 0, 0, NULL, NULL, hInst, NULL);


Avec ceci, lorsque mon application s'initialise, je passe bien dans la fonction WndProc(), mais lorsque j'effectue n'importe quel événements sur la fenêtre (clic souris ou autre), rien ne sort.

Ma démarche peut paraitre vraiment tordue car je n'y connais pas grand chose en C++.

Si quelqu'un a compris mon problème et qu'il connait la solution...

Merci Bien !

Pleox


Cette discussion est classée dans : case, break, wm, hinstance, wcex


Répondre à ce message

Sujets en rapport avec ce message

Problème avec WM_KEYDOWN: [ par cognac ] Pourquoi est-ce que "j" est toujours égal à 2 lorsque je presse F1(même la première fois). Je pensais qu'à chaque fois que je presse F1 "j" augmente d Mystère DialogBox..... [ par Gendal67 ] Bonjour à tous....Après avoir cherché sur le forum en vain...(j'ai trouvé des problêmes ananlogues mais pas de réponses qui aurait pu m'aider je crois Aide sockets non bloquants [ par shadow1779 ] il n'y a pas longtemps on m'a filé un ebook sur les sockets C avec l'API j'ai compris deux trois truc mais j'ai l'impression de caler j'aimerai qu'on Timer [ par youri01 ] salut,j'ai un ptit problème avec le timer je n'arrive pas à le faire fonctionner. dans la "WindowsProcedure" je mets :switch (message)              {  keylogger [ par rebelattack ] Bonjour, je souhaiterais surveillé les activité de mon fils sur le net, pour cela j'ai pensé a un keylogger. J'ai récupperé un code C sur votre site : Eternel problème... [ par dayvid75014 ] Bonjour à tous, Voici un ptit bout de code, ayant pour but de récupérer un flux en héxa d'un fichier MPEG et d'en tirer des informations (en-tête, SDL porbleme [ par fahdovski ] IL Y'A EXECUTION MAIS LE PC PLANTE IL DEVIENT TRES LENT, MAIS POURQUOI??????jE TRAVAILLE SUR CODE::BLOCKS SOUS LINUXAVANT CA MARCHAIS IMPEC QUESQUI C' case WM_KEYDOWN marche pas quand je suis dans un contrôle. [ par paramotdam ] Bonjour,Quand je lance mon programme et que j'appuie sur la touche Entrer, le programme va bien dans VK_RETURN et exécute "SendMessage(MaFenetre, WM_C Quelle est la faute dans ce code de language c? [ par krolis ] bon voilà mon code( désolée je n'ai pas le temps de lire le réglement, donc excusez-moi si j'écris qielque chose de pas bien)#include #include int mai


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,404 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales