J'essaye d'écrire un serveur DDE en C++, mais sans les MFC,
plus précisément à l'aide de la STL.
Les exemples que j'ai trouvé jusqu'à présent sont :
1- Une source "C" fournie par la MSDN, dont je n'arrive pas à me
dépatouiller. C'est un peu le souk dans l'exemple fourni.
2- Une source «C++/MFC» que je n'arrive pas à traduire.(je ne maitrise pas
du tout les MFC).En fait, si, un peu mais ça finit par m'exploser dans les
mains à la deuxième tentative de connexion.
Est ce qu'une bonne âme aurait une classe de ce type sous la main, une aide ?
J'essaye d'écrire un serveur DDE en C++, mais sans les MFC, plus précisément à l'aide de la STL.
Bonjour,
Je ne comprends pas. Vous n'utilisez pas DDEML? Ou vous cherchez à encapsuler DDEML?
-- Patrick Philippot - Microsoft MVP MainSoft Consulting Services www.mainsoft.fr
David MAREC
D'après Patrick Philippot :
Je ne comprends pas. Vous n'utilisez pas DDEML? Ou vous cherchez à encapsuler DDEML?
Sisi, j'utilise <ddeml.h>
J'ai écrit une classe serveur (aidé par celle écrite sur la base de MFC que j'ai trouvé) qui encapsule des objets "Topics".
Mais, si j'arrive désormais à lire du Texte, il me reste à comprendre pas mal de mécanismes, notamment comment lire autre chose que du texte, et comment avertir le client lorsqu'une donnée a changé !?
Aussi, je cherche une vrai méthode propre pour passer de std::string à HSZ et de std::string à LPBYTE.
Bref, j'avance à très petits pas, pour réinventer la roue, il me semble.
D'après Patrick Philippot :
Je ne comprends pas. Vous n'utilisez pas DDEML? Ou vous cherchez à
encapsuler DDEML?
Sisi, j'utilise <ddeml.h>
J'ai écrit une classe serveur (aidé par celle écrite sur la base de MFC
que j'ai trouvé) qui encapsule des objets "Topics".
Mais, si j'arrive désormais à lire du Texte, il me reste à comprendre
pas mal de mécanismes, notamment comment lire autre chose que du texte,
et comment avertir le client lorsqu'une donnée a changé !?
Aussi, je cherche une vrai méthode propre pour passer de
std::string à HSZ et de std::string à LPBYTE.
Bref, j'avance à très petits pas, pour réinventer la roue, il me semble.
Je ne comprends pas. Vous n'utilisez pas DDEML? Ou vous cherchez à encapsuler DDEML?
Sisi, j'utilise <ddeml.h>
J'ai écrit une classe serveur (aidé par celle écrite sur la base de MFC que j'ai trouvé) qui encapsule des objets "Topics".
Mais, si j'arrive désormais à lire du Texte, il me reste à comprendre pas mal de mécanismes, notamment comment lire autre chose que du texte, et comment avertir le client lorsqu'une donnée a changé !?
Aussi, je cherche une vrai méthode propre pour passer de std::string à HSZ et de std::string à LPBYTE.
Bref, j'avance à très petits pas, pour réinventer la roue, il me semble.
Arnaud Debaene
David MAREC wrote:
Salut les gens !
J'essaye d'écrire un serveur DDE en C++, mais sans les MFC, plus précisément à l'aide de la STL. Les exemples que j'ai trouvé jusqu'à présent sont :
1- Une source "C" fournie par la MSDN, dont je n'arrive pas à me dépatouiller. C'est un peu le souk dans l'exemple fourni.
2- Une source «C++/MFC» que je n'arrive pas à traduire.(je ne maitrise pas du tout les MFC).En fait, si, un peu mais ça finit par m'exploser dans les mains à la deuxième tentative de connexion.
Est ce qu'une bonne âme aurait une classe de ce type sous la main, une aide ?
Par pure curiosité, pourquoi est-ce que tu veux programmer un truc pareil aujourd'hui? DDE n'est plus utilisé pour les nouvelles applis depuis 10 ans!
Arnaud
David MAREC wrote:
Salut les gens !
J'essaye d'écrire un serveur DDE en C++, mais sans les MFC,
plus précisément à l'aide de la STL.
Les exemples que j'ai trouvé jusqu'à présent sont :
1- Une source "C" fournie par la MSDN, dont je n'arrive pas à me
dépatouiller. C'est un peu le souk dans l'exemple fourni.
2- Une source «C++/MFC» que je n'arrive pas à traduire.(je ne
maitrise pas du tout les MFC).En fait, si, un peu mais ça finit par
m'exploser dans les mains à la deuxième tentative de connexion.
Est ce qu'une bonne âme aurait une classe de ce type sous la main,
une aide ?
Par pure curiosité, pourquoi est-ce que tu veux programmer un truc pareil
aujourd'hui? DDE n'est plus utilisé pour les nouvelles applis depuis 10 ans!
J'essaye d'écrire un serveur DDE en C++, mais sans les MFC, plus précisément à l'aide de la STL. Les exemples que j'ai trouvé jusqu'à présent sont :
1- Une source "C" fournie par la MSDN, dont je n'arrive pas à me dépatouiller. C'est un peu le souk dans l'exemple fourni.
2- Une source «C++/MFC» que je n'arrive pas à traduire.(je ne maitrise pas du tout les MFC).En fait, si, un peu mais ça finit par m'exploser dans les mains à la deuxième tentative de connexion.
Est ce qu'une bonne âme aurait une classe de ce type sous la main, une aide ?
Par pure curiosité, pourquoi est-ce que tu veux programmer un truc pareil aujourd'hui? DDE n'est plus utilisé pour les nouvelles applis depuis 10 ans!
Arnaud
Patrick Philippot
David MAREC wrote:
Mais, si j'arrive désormais à lire du Texte, il me reste à comprendre pas mal de mécanismes, notamment comment lire autre chose que du texte,
Le handle créé par DdeCreateDataHandle peut pointer vers n'importe quoi.
et comment avertir le client lorsqu'une donnée a changé !?
DdePostAdvise
Ceci étant, Arnaud a raison. Aujourd'hui, il n'y a aucune bonne raison (j'allais dire excuse :-)) ) de programmer un serveur DDE alors que l'on peut faire beaucoup mieux et plus facilement avec un serveur Automation (COM). Surtout en MFC, c'est immédiat. Côté client je ne dis pas, parfois le serveur ne sait faire que du DDE. Mais côté serveur, à moins d'un cahier des charges particulièrement poussiéreux, je ne vois pas.
-- Patrick Philippot - Microsoft MVP MainSoft Consulting Services www.mainsoft.fr
David MAREC wrote:
Mais, si j'arrive désormais à lire du Texte, il me reste à comprendre
pas mal de mécanismes, notamment comment lire autre chose que du
texte,
Le handle créé par DdeCreateDataHandle peut pointer vers n'importe quoi.
et comment avertir le client lorsqu'une donnée a changé !?
DdePostAdvise
Ceci étant, Arnaud a raison. Aujourd'hui, il n'y a aucune bonne raison
(j'allais dire excuse :-)) ) de programmer un serveur DDE alors que l'on
peut faire beaucoup mieux et plus facilement avec un serveur Automation
(COM). Surtout en MFC, c'est immédiat. Côté client je ne dis pas,
parfois le serveur ne sait faire que du DDE. Mais côté serveur, à moins
d'un cahier des charges particulièrement poussiéreux, je ne vois pas.
--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Mais, si j'arrive désormais à lire du Texte, il me reste à comprendre pas mal de mécanismes, notamment comment lire autre chose que du texte,
Le handle créé par DdeCreateDataHandle peut pointer vers n'importe quoi.
et comment avertir le client lorsqu'une donnée a changé !?
DdePostAdvise
Ceci étant, Arnaud a raison. Aujourd'hui, il n'y a aucune bonne raison (j'allais dire excuse :-)) ) de programmer un serveur DDE alors que l'on peut faire beaucoup mieux et plus facilement avec un serveur Automation (COM). Surtout en MFC, c'est immédiat. Côté client je ne dis pas, parfois le serveur ne sait faire que du DDE. Mais côté serveur, à moins d'un cahier des charges particulièrement poussiéreux, je ne vois pas.
-- Patrick Philippot - Microsoft MVP MainSoft Consulting Services www.mainsoft.fr
David MAREC
Arnaud Debaene wrote:
Par pure curiosité, pourquoi est-ce que tu veux programmer un truc pareil aujourd'hui? DDE n'est plus utilisé pour les nouvelles applis depuis 10 ans!
Parce que je dois me connecter à un client qui ne supporte que le DDE et un format propriétaire pour lui fournir les informations d'un appareil qui me les communique dans un autre format propriétaire.
Arnaud Debaene wrote:
Par pure curiosité, pourquoi est-ce que tu veux programmer un truc pareil
aujourd'hui? DDE n'est plus utilisé pour les nouvelles applis depuis 10 ans!
Parce que je dois me connecter à un client qui ne supporte que le DDE et
un format propriétaire pour lui fournir les informations d'un appareil
qui me les communique dans un autre format propriétaire.
Par pure curiosité, pourquoi est-ce que tu veux programmer un truc pareil aujourd'hui? DDE n'est plus utilisé pour les nouvelles applis depuis 10 ans!
Parce que je dois me connecter à un client qui ne supporte que le DDE et un format propriétaire pour lui fournir les informations d'un appareil qui me les communique dans un autre format propriétaire.
David MAREC
D'après Patrick Philippot :
Le handle créé par DdeCreateDataHandle peut pointer vers n'importe quoi.
Certes, mais comment gérer le format dans ce cas ? Si je ne précise pas CF_TEXT, rien ne bouge.
DdePostAdvise
Bon, j'ai du le foirer, ça ne fonctionne pas.
-- Bouhouhou.J'en ai marre.
D'après Patrick Philippot :
Le handle créé par DdeCreateDataHandle peut pointer vers n'importe quoi.
Certes, mais comment gérer le format dans ce cas ?
Si je ne précise pas CF_TEXT, rien ne bouge.
Le handle créé par DdeCreateDataHandle peut pointer vers n'importe quoi.
Certes, mais comment gérer le format dans ce cas ? Si je ne précise pas CF_TEXT, rien ne bouge.
DdePostAdvise
Bon, j'ai du le foirer, ça ne fonctionne pas.
-- Bouhouhou.J'en ai marre.
Patrick Philippot
David MAREC wrote:
Le handle créé par DdeCreateDataHandle peut pointer vers n'importe quoi.
Certes, mais comment gérer le format dans ce cas ? Si je ne précise pas CF_TEXT, rien ne bouge.
Ce qui veut dire? Avez vous regardé ce que retourne DdeGetLastError ? Nous ne pouvons pas répondre avec si peu d'informations.
DdePostAdvise
Bon, j'ai du le foirer, ça ne fonctionne pas.
Idem. "Ça ne fonctionne pas" n'est pas la description précise d'un problème :-)) . Il faudrait essayer de faire un état plus précis de l'appli quand vous considérez que ça a planté ou que le résultat n'est pas conforme à vos attentes.
Comme ce protocole est assez tordu (c'est le moins que l'on puisse dire) je vous conseille de tester votre echange DDE dans 2 sessions différentes de VC++: une qui tourne le serveur et l'autre le client. Avec des breakpoints judicieux, vous verrez déjà si les notifications arrivent ou pas et ce qu'elles contiennent.
Bon courage.
-- Patrick Philippot - Microsoft MVP MainSoft Consulting Services www.mainsoft.fr
David MAREC wrote:
Le handle créé par DdeCreateDataHandle peut pointer vers n'importe
quoi.
Certes, mais comment gérer le format dans ce cas ?
Si je ne précise pas CF_TEXT, rien ne bouge.
Ce qui veut dire? Avez vous regardé ce que retourne DdeGetLastError ?
Nous ne pouvons pas répondre avec si peu d'informations.
DdePostAdvise
Bon, j'ai du le foirer, ça ne fonctionne pas.
Idem. "Ça ne fonctionne pas" n'est pas la description précise d'un
problème :-)) . Il faudrait essayer de faire un état plus précis de
l'appli quand vous considérez que ça a planté ou que le résultat n'est
pas conforme à vos attentes.
Comme ce protocole est assez tordu (c'est le moins que l'on puisse dire)
je vous conseille de tester votre echange DDE dans 2 sessions
différentes de VC++: une qui tourne le serveur et l'autre le client.
Avec des breakpoints judicieux, vous verrez déjà si les notifications
arrivent ou pas et ce qu'elles contiennent.
Bon courage.
--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Le handle créé par DdeCreateDataHandle peut pointer vers n'importe quoi.
Certes, mais comment gérer le format dans ce cas ? Si je ne précise pas CF_TEXT, rien ne bouge.
Ce qui veut dire? Avez vous regardé ce que retourne DdeGetLastError ? Nous ne pouvons pas répondre avec si peu d'informations.
DdePostAdvise
Bon, j'ai du le foirer, ça ne fonctionne pas.
Idem. "Ça ne fonctionne pas" n'est pas la description précise d'un problème :-)) . Il faudrait essayer de faire un état plus précis de l'appli quand vous considérez que ça a planté ou que le résultat n'est pas conforme à vos attentes.
Comme ce protocole est assez tordu (c'est le moins que l'on puisse dire) je vous conseille de tester votre echange DDE dans 2 sessions différentes de VC++: une qui tourne le serveur et l'autre le client. Avec des breakpoints judicieux, vous verrez déjà si les notifications arrivent ou pas et ce qu'elles contiennent.
Bon courage.
-- Patrick Philippot - Microsoft MVP MainSoft Consulting Services www.mainsoft.fr
David MAREC
D'après Patrick Philippot:
Certes, mais comment gérer le format dans ce cas ? Si je ne précise pas CF_TEXT, rien ne bouge.
Ce qui veut dire? Avez vous regardé ce que retourne DdeGetLastError ? Nous ne pouvons pas répondre avec si peu d'informations.
- Je décris tout ce qui suit de mémoire. -
Si je ne force pas le format lors du DDECreateDataHandle(), le client DDE n'arrive pas apparemment à comprendre le contenu de ce que je lui renvois. (Excel m'affiche #NOM?) D'où ma question sur la gestion types en DDE.
Je n'ai pas trouvé la moindre Doc, le moindre Tutorial, juste des exemples de code, la doc éparses des fonctions à utiliser et une courte introduction sur le site de Microsoft. Ceci reste incompréhensible sans les spécifications du protocole.
Donc, si j'avance, je bute à chaque pas. Et à ce rythme, j'aurai écrit ma classe vers la fin septembre.
DdePostAdvise
Bon, j'ai du le foirer, ça ne fonctionne pas.
Idem. "Ça ne fonctionne pas" n'est pas la description précise d'un problème :-)) . Il faudrait essayer de faire un état plus précis de l'appli quand vous considérez que ça a planté ou que le résultat n'est pas conforme à vos attentes.
Si je renvoie bien la valeur, (je passe par le message idoine dans le callback), le client ne voit rien.
Comme ce protocole est assez tordu (c'est le moins que l'on puisse dire)
Oui, hein.
Bon courage.
J'ai abandonné, faute de temps. Je ne peux pas me permettre de passer des semaines là dessus, alors que j'ai construit tout le protocole de communication Ethernet de l'appareil avec qui le serveur devrait causer en trois jours.
J'ai donc pompé la source «C pur» et je l'adapte à ma classe de communication. C'est goret, mais je n'ai plus le choix. Tant pis pour la classe DDEServer. Je suis tout de même étonné que je sois le seul à avoir cherché à le faire.
D'après Patrick Philippot:
Certes, mais comment gérer le format dans ce cas ?
Si je ne précise pas CF_TEXT, rien ne bouge.
Ce qui veut dire? Avez vous regardé ce que retourne DdeGetLastError ?
Nous ne pouvons pas répondre avec si peu d'informations.
- Je décris tout ce qui suit de mémoire. -
Si je ne force pas le format lors du DDECreateDataHandle(), le client DDE
n'arrive pas apparemment à comprendre le contenu de ce que je lui renvois.
(Excel m'affiche #NOM?)
D'où ma question sur la gestion types en DDE.
Je n'ai pas trouvé la moindre Doc, le moindre Tutorial, juste des exemples
de code, la doc éparses des fonctions à utiliser et une courte introduction
sur le site de Microsoft.
Ceci reste incompréhensible sans les spécifications du protocole.
Donc, si j'avance, je bute à chaque pas.
Et à ce rythme, j'aurai écrit ma classe vers la fin septembre.
DdePostAdvise
Bon, j'ai du le foirer, ça ne fonctionne pas.
Idem. "Ça ne fonctionne pas" n'est pas la description précise d'un
problème :-)) . Il faudrait essayer de faire un état plus précis de
l'appli quand vous considérez que ça a planté ou que le résultat n'est
pas conforme à vos attentes.
Si je renvoie bien la valeur, (je passe par le message idoine dans le
callback), le client ne voit rien.
Comme ce protocole est assez tordu (c'est le moins que l'on puisse dire)
Oui, hein.
Bon courage.
J'ai abandonné, faute de temps.
Je ne peux pas me permettre de passer des semaines là dessus, alors que j'ai
construit tout le protocole de communication Ethernet de l'appareil avec
qui le serveur devrait causer en trois jours.
J'ai donc pompé la source «C pur» et je l'adapte à ma classe de
communication.
C'est goret, mais je n'ai plus le choix.
Tant pis pour la classe DDEServer. Je suis tout de même étonné que je sois
le seul à avoir cherché à le faire.
Certes, mais comment gérer le format dans ce cas ? Si je ne précise pas CF_TEXT, rien ne bouge.
Ce qui veut dire? Avez vous regardé ce que retourne DdeGetLastError ? Nous ne pouvons pas répondre avec si peu d'informations.
- Je décris tout ce qui suit de mémoire. -
Si je ne force pas le format lors du DDECreateDataHandle(), le client DDE n'arrive pas apparemment à comprendre le contenu de ce que je lui renvois. (Excel m'affiche #NOM?) D'où ma question sur la gestion types en DDE.
Je n'ai pas trouvé la moindre Doc, le moindre Tutorial, juste des exemples de code, la doc éparses des fonctions à utiliser et une courte introduction sur le site de Microsoft. Ceci reste incompréhensible sans les spécifications du protocole.
Donc, si j'avance, je bute à chaque pas. Et à ce rythme, j'aurai écrit ma classe vers la fin septembre.
DdePostAdvise
Bon, j'ai du le foirer, ça ne fonctionne pas.
Idem. "Ça ne fonctionne pas" n'est pas la description précise d'un problème :-)) . Il faudrait essayer de faire un état plus précis de l'appli quand vous considérez que ça a planté ou que le résultat n'est pas conforme à vos attentes.
Si je renvoie bien la valeur, (je passe par le message idoine dans le callback), le client ne voit rien.
Comme ce protocole est assez tordu (c'est le moins que l'on puisse dire)
Oui, hein.
Bon courage.
J'ai abandonné, faute de temps. Je ne peux pas me permettre de passer des semaines là dessus, alors que j'ai construit tout le protocole de communication Ethernet de l'appareil avec qui le serveur devrait causer en trois jours.
J'ai donc pompé la source «C pur» et je l'adapte à ma classe de communication. C'est goret, mais je n'ai plus le choix. Tant pis pour la classe DDEServer. Je suis tout de même étonné que je sois le seul à avoir cherché à le faire.