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";
}