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

Windows Discussion :

Windows CWnd/Winuser.h : besoin expert requete C/C++


Sujet :

Windows

  1. #1
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut Windows CWnd/Winuser.h : besoin expert requete C/C++
    Bonjour à tous,

    Désolé pour mon titre vaseux.
    Je suis sur une interface de dialogue basée sur RegisterWindowMessage() et PostMessage() du header Winuser.h.

    Ma config :
    • WinXP
    • VC++

    Il s'avère que je ne connais rien à ce domaine particulier.
    Mon projet est le suivant :

    je veux faire communiquer une interface multitouch (un grand iPhone pour donner une idée : http://www.tactyl-services.com/fr/da...ti-touch-modes) avec MaxMSP5.
    Pour cela je crée un external, c'est à dire un objet MaxMSP via son SDK.
    Cet objet est écrit en C.

    J'espère que vous pourrez m'aider car je suis plus dans le C++ et l'objective C en général. Là je crois avoir un sérieux soucis de crossing.

    Mon objet peut demander la connection, j'écris alors son pseudo-constructeur C :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void *lumio_new(long num)
    {
    	t_lumio *lumioObject;
    	lumioObject = (t_lumio *)newobject(lumio_class);
    
    	lumioObject->uiGlobal_MsgID_LumioDiscover = RegisterWindowMessage((LPCTSTR)"LumioCTAPIDiscover");
    	lumioObject->uiGlobal_MsgID_LumioAttach = RegisterWindowMessage((LPCTSTR)"LumioCTAPIAttach");
    	
    	return lumioObject;
    }
    En clair j'envoie une requête à ma table multitouch.
    Il me faut maintenant ma "callback"
    Et là soucis, car le fabricant donne une doc largement basée sur l'idée d'un client "fenêtre", tandis que je suis vous l'aurez compris sur un client "external MaxMSP"...
    La doc du fabricant : http://www.tactyl-services.com/fr/telecharger

    Indeed, la doc invite à overwriter et à faire mon switch sur la réponse du serveur (la dalle tactile).


    Mais comment faire avec du C ?


    La question est surement naïve, je m'en excuse.
    Je suis totalement largué,

    Merci pour votre aide.

    Tt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    //external
    //#include <afxwin.h>
    #include <windows.h>
    #include "Winuser.h"
    #include "ext.h"//contains afxwin.h
    #include "string.h"
    
    //class for interecepting messages
    //todo by inheriting CWnd or CDialog form MFC
    
    //MAX EXTERNAL
    typedef struct {
    	t_object m_ob;
    	UINT uiGlobal_MsgID_LumioDiscover;
    	UINT uiGlobal_MsgID_LumioAttach;
    	void *l_out;
    	//CWnd *l_virtualWnd;
    } t_lumio;
    
    void lumio_bang(t_lumio *x);
    void lumio_connect(t_lumio *x);
    void lumio_disconnect(t_lumio *x);
    char*  lumio_messageOut(t_lumio *x, t_symbol *s, short argc, t_atom *argv);
    void lumio_free(t_lumio *x);
    void *lumio_new(long num);
    void *lumio_class;
    
    int main()
    {
    	setup((t_messlist **)&lumio_class, (method)lumio_new, (method)lumio_free, (short)sizeof(t_lumio), 0L, A_DEFLONG, 0);//instancie la classe (pas l'objet)
    	addmess((method)lumio_connect, "connect", 0);
    	addmess((method)lumio_disconnect, "disconnect", 0);
    	addbang((method)lumio_bang);
    	return 0;
    }
    
    
    ////////////////////////////////////////////////////////////////////////////////
    //new LUMIO
    void *lumio_new(long num)
    {
    
    	t_lumio *lumioObject;
    	lumioObject = (t_lumio *)newobject(lumio_class);
    	lumioObject->l_out = intout(lumioObject);
    	//lumioObject->uiGlobal_MsgID_LumioDiscover = RegisterWindowMessage((LPCTSTR)"LumioCTAPIDiscover");
    	//lumioObject->uiGlobal_MsgID_LumioAttach = RegisterWindowMessage((LPCTSTR)"LumioCTAPIAttach");
    
    	//l_vWindow = new CVirtualDialog(...aremplir...);
    	
    	return lumioObject;
    }
    
    //~LUMIO
    void lumio_free(t_lumio *x)
    {
    	//delete l_vWindow
    }
    ////////////////////////////////////////////////////////////////////////////////////
    
    
    
    // IN (callback) /****************************/
    
    //connexion
    void lumio_connect(t_lumio *x)
    {
    	//first time connection
    	WPARAM m_hWnd = 0;//id du serveur en get
    	//l_vWindow->
    	::PostMessage( HWND_BROADCAST, /*The message is posted to all top-level windows in the system, including disabled or invisible unowned windows, overlapped windows, and pop-up windows. The message is not posted to child windows.*/
    		//						x->uiGlobal_MsgID_LumioDiscover, 
    		0, (WPARAM)m_hWnd, 0);
    }
    
    
    
    //deconnexion
    void lumio_disconnect(t_lumio *x)
    {
    	//deconnection
    	WPARAM m_hWnd = 0;//id du serveur en get
    	//l_vWindow->PostMessage( HWND_BROADCAST, /*The message is posted to all top-level windows in the system, including disabled or invisible unowned windows, overlapped windows, and pop-up windows. The message is not posted to child windows.*/
    		//						x->uiGlobal_MsgID_LumioDiscover, (WPARAM)m_hWnd, 0);
    }
    
    //bang pour tester
    void lumio_bang(t_lumio *x)
    {
    	t_atom a;
    	
    	a.a_type = A_LONG;
    	a.a_w.w_long = 0L;
    	//lumio_atom(x,&a);
    	post("bang in");
    }
    
    // End - IN (callback) /****************************/
    
    
    
    
    // OUTLET
    
    char* lumio_messageOut(t_lumio *x, t_symbol *s, short argc, t_atom *argv)
    {
    	return "hi";
    }

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	lumioObject->uiGlobal_MsgID_LumioDiscover = RegisterWindowMessage((LPCTSTR)"LumioCTAPIDiscover");
    	lumioObject->uiGlobal_MsgID_LumioAttach = RegisterWindowMessage((LPCTSTR)"LumioCTAPIAttach");
    Lis ma signature.

    Utilise la macro TEXT(). (ou _T())
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. besoin aide requete (group by ?)
    Par Jean_Peuplus dans le forum Langage SQL
    Réponses: 3
    Dernier message: 11/08/2009, 13h16
  2. besoin de requetes imbriquée ou pas
    Par gg2vig dans le forum Oracle
    Réponses: 2
    Dernier message: 26/01/2007, 10h42
  3. Création requete besoin d'aide pour une date
    Par royrremi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/07/2004, 22h03
  4. Besoin d'aide avec postgresql sous windows NT
    Par Chihuahua dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 18/07/2003, 08h29

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