IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

wxWidgets Discussion :

wxWindow et Handle


Sujet :

wxWidgets

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 13
    Par défaut wxWindow et Handle
    Bonjour à tous,

    Je développe une petite application pour mon entreprise permettant de récupérer un flux vidéo et de l'afficher dans une fenêtre.

    Pour cela, je dispose d'un SDK propre à ma boîte. Dans ce sdk, il y a une fonction appelée sncCreateScreen dont voici le prototype :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SNC_ERROR sncCreateScreen(
    SNC_HANDLE Handle,         // handle de la caméra
    HWND ParentHandleWnd,   // handle de la fenêtre parente
    int X,
    int Y,
    int W,
    int H
    );
    J'ai donc créer un objet CamViewer qui dérive de wxWindow dont voici le constructeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CamViewer::CamViewer(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size,
                        long style, const wxString& name) :
        wxWindow(parent, id, pos, size, style, name)
    {
     
        wxPoint position = this->GetPosition();
     
        wxSize s = this->GetSize();
     
        viewer = new IPCamera::Viewer(pos.x, pos.y, s.GetWidth(), s.GetHeight(), (HWND)(this->GetHandle()));
    Tout ceci fonctionne parfaitement, la vidéo s'affiche etc... Le problème est lié aux évènements, je ne peux pas récupérer de MouseEvent sur la fenêtre lorsque celle ci joue la vidéo.

    Je souhaiterais dessiner sur la vidéo des rectangles permettant de définir des zones (pour zoomer etc...) mais impossible de récupérer l'évenement EVT_LEFT_DOWN et donc par conséquent, impossible de dessiner quoi que ce soit.

    J'avais penser à superposer un genre de fenêtre transparente au dessus de la vidéo, est-ce faisable ?

    J'ai besoins de quelques conseils...

    Merci d'avance,

    Yann.

  2. #2
    Membre éclairé Avatar de Suryavarman
    Homme Profil pro
    Développeur 3D
    Inscrit en
    Mai 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur 3D
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mai 2006
    Messages : 233
    Par défaut
    En enelvant le viewer tu arrives à capter les events ?

    Sinon pour être sûr: peus tu montrer comment tu as déclarer les events?


    Quand il s'agit de dessinner dans une fenêtre, mon réflex serait de le faire dans un canvas, un buffer etc. Comme pour Opengl.

    Je pensais à un truc du genre wxBufferedPaintDC. (Mon anglais étant mauvais je suis pas sûr que cet élément convienne réelement :p, mais c'est dans l'esprit. )

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 13
    Par défaut
    En fait je pense que c'est lié au SDK. Je suppose qu'il crée une fenêtre au dessus de celle de mon viewer, ce qui explique que les cliques se font sur la fenêtre du sdk et non sur la mienne. Ainsi je ne peux pas générer d'évènement sur la fenêtre de mon viewer.

    Je ne sais pas comment gérer ça, j'avais pensé à dessiner une fenêtre transparente au dessus de celle générer par le sdk mais ça n'a pas l'air de fonctionner.

  4. #4
    Membre éclairé Avatar de Suryavarman
    Homme Profil pro
    Développeur 3D
    Inscrit en
    Mai 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur 3D
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mai 2006
    Messages : 233
    Par défaut
    Une fenêtre enfant doit faire appel à event.Skip() pour monter un event dans son parent.

    Il te faudra reproduire le même mécanisme avec ton viewer.

    Pour cela je te propose de dériver ton viewer pour y rajouter la propriété ainsi tu pouras appeler les evénements de la fenêtre à partir de ton viewer dérivé.

    Un truc dans ce genre :p.

  5. #5
    Membre éclairé Avatar de Suryavarman
    Homme Profil pro
    Développeur 3D
    Inscrit en
    Mai 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur 3D
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mai 2006
    Messages : 233
    Par défaut
    Ta trouvé la solution finalement ?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 13
    Par défaut
    Pour ce qui est de la solution, je vais devoir ne pas utiliser la fonction CreateScreen intégrée au SDK.

    Je vais récupérer le flux mpeg4 décodé en mémoire et l'afficher dans une fenêtre à moi en utilisant les Device Context, et de cette manière j'aurais toute liberté de faire ce que bon me semble avec.

    En tout cas, merci pour ton aide.

    Cdt,

    Yann.

Discussions similaires

  1. Manipulation des handle contexte
    Par rockbiker dans le forum DirectX
    Réponses: 1
    Dernier message: 09/05/2003, 18h51
  2. Question sur les handles et les couleurs...
    Par MrDuChnok dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/10/2002, 08h45
  3. pb de récup de handle à partir d'une dll
    Par yokito dans le forum Langage
    Réponses: 2
    Dernier message: 20/08/2002, 12h29
  4. wxwindows
    Par blue dans le forum Autres éditeurs
    Réponses: 10
    Dernier message: 14/08/2002, 15h50
  5. pb de handle en C
    Par deedje dans le forum C
    Réponses: 3
    Dernier message: 21/06/2002, 16h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo