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

C++ Discussion :

PostMessage


Sujet :

C++

  1. #1
    tsp
    tsp est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 82
    Points : 54
    Points
    54
    Par défaut PostMessage
    Bonjour,
    je vais tenter d'etre clair. D'un coté j'ai un programme PowerBuilder (il pourrait etre en n'importe quoi d'autre cela ne changerait rien), de l'autre j'ai une DLL en C++. J'envoi à ma dll C++ (depuis PB) un lot de requete SQL ainsi qu'une chaine de connexion à une base. Ma dll se connecte à la base, execute les requetes et envoi les resultats à PB avec des SendMessages (1 send message pour renvoyer un message d'erreur s'il y a, 1 sendmessage pour le header de mon result set si il y a une table en retour, et 1 sendmessage par ligne de la table). Par conséquent lorsque j'envoie le lot de requete a ma dll, je ne sais absolument pas le nombre de send message que fera ma dll. Tout ceci marche bien. Mais j'aimerais essayer l'evenement PostMessage pour poster tous les messages sans attendre que PB les traite. Mais je ne peux pa envoyer une variable declaré coté C++ a mon appli PB avec le PostMessage, celle ci n'etant pas reconnu coté PB. Je dois donc, pour que ça fonctionne, créer une variable texte coté PB, l'envoyer à la DLL C++, la modifier coté C++ et la renvoyer à PB. Hors comme je l'ai dis plus haut j'effectue plusieurs envoie PostMessage consécutif et si j'utilise la meme variable pour tous, lorsque que le message sera pris en compte coté PB elle n'aura pas la valeur voulue mais la derniere valeur assignée du coté C++.

    Donc ma question est assez simple, comment pourrais-je faire, ne connaissant pas au départ (coté PB) le nombre de PostMessage à effectuer (donc le nombre de variable a envoyer a ma DLL) ? Si quelqu'un à une idée ... merci

  2. #2
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2006
    Messages : 58
    Points : 74
    Points
    74
    Par défaut
    Je te propose l'algo suivant :

    - allouer un tableau de, par exemple, 10 lignes coté PB
    - appeler la DLL, et lui donner les 10 lignes
    - la DLL lit les 10 premières lignes et les copie dans les emplacements fournis par PB via des PostMessage
    - la DLL envoie un SendMessage dans lequel elle demande à PB de confirmer que les 10 lignes ont été recues et traitées
    - puis on passe au lot de 10 lignes suivant
    - à la fin du traitement la DLL envoie un message spécial pour indiquer que c'est fini

  3. #3
    tsp
    tsp est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 82
    Points : 54
    Points
    54
    Par défaut
    effectivement c'est une idée interessante mais j'en ai eu une autre. Continuer de faire des SendMessage à PB et du coté PB recupérer ma ligne (qui est une instruction rapide) et faire un Post de la fonction qui traite ma ligne.

  4. #4
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2006
    Messages : 58
    Points : 74
    Points
    74
    Par défaut
    Ca se tient aussi, la seule contrainte étant que la fonction qui copie la ligne et fait le Post doit rester performante.

  5. #5
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par tsp
    Mais je ne peux pa envoyer une variable declaré coté C++ a mon appli PB avec le PostMessage, celle ci n'etant pas reconnu coté PB
    il doit bien y avoir un moyen, avec COM peut être, ou encore:
    http://powerbuilder.sys-con.com/read/42615.htm
    http://www.pbdr.com/pbtips/ap/cppdtcnv.htm
    http://www.sybase.com/detail?id=44538

  6. #6
    tsp
    tsp est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 82
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par Aurelien.Regat-Barrel
    Pour cette voie là je regarderais qd j'aurais le temps un peu plus tard lol.

    Sinon ma méthode me donne le résultat souhaité.
    En fait je recupere betement ma string et je post ma fonction. Que je post ma fonction ou que je l'execute immediatement, le temps de travail est identique. La seule différence, et c'est ce que je cherchais à faire, et que ma DLL finis de travailler beaucoup plus tôt quand je poste la fonction.

    Par exemple : tps de travail de PB pour afficher 3183 lignes : environ 7 secondes (point suivant à améliorer lol)
    tps de travail de la DLL , en ne postant pas la fonction : environ 7 secondes (logique)
    en postant la fonction : moins de 1 seconde.

    merci

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

Discussions similaires

  1. Probleme PostMessage
    Par Mogwaï dans le forum Windows
    Réponses: 11
    Dernier message: 15/09/2005, 15h05
  2. Send/PostMessage problème de handle
    Par bibmari dans le forum C++Builder
    Réponses: 18
    Dernier message: 21/06/2005, 16h55
  3. [MFC] PostMessage, multithread
    Par Joeleclems dans le forum MFC
    Réponses: 6
    Dernier message: 24/05/2005, 16h17
  4. [WinAPI C++] MultiThreading et PostMessage
    Par Gruik dans le forum Windows
    Réponses: 7
    Dernier message: 29/03/2004, 15h58
  5. [MFC] Ctrl/Alt+touches avec PostMessage
    Par Fladnag dans le forum MFC
    Réponses: 4
    Dernier message: 10/02/2004, 14h33

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