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

WinDev Discussion :

Création d'une fenêtre popup avec la Flat API


Sujet :

WinDev

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 564
    Par défaut Création d'une fenêtre popup avec la Flat API
    Voici un exemple montrant la création d'une fenêtre simple de type "Popup", il est basé sur la seule utilisation de la Flat API Windows bas niveau.

    Ce code est identique à celui qui serait utilisé par un programmeur C.
    La seule différence, c'est qu'avec WinDev on est obligé d'utiliser le "code du projet" comme point d'entré, puisque le code n'est pas réellement compilé et que l'on ne peut pas faire abstraction du run-time PC-Soft à savoir :
    1 - L'EXE qui n'est rien d'autre qu'une version modifiée de WD_Test.exe.
    2 - La DLL wd???wm64.dll ou wd???wm32.dll (Machine virtuelle).
    3 - La DLL wd???std64.dll ou wd???std32.dll (Fonctions standard).

    Comme vous pouvez le constater c'est très différent de ce à quoi vous êtes habitué, néanmoins c'est ce type de code qui est à la base de toutes les fenêtres WinDev que vous utilisez (dans l'API bas niveau le mot "fenêtre" = un champ dans le vocabulaire WinDev).

    Ce type de code réellement compilé en code machine produit un EXE de moins de 10 Ko, oui vous avez bien lu, moins de 10000 octets, rien à voir donc avec les monstres actuels, sans parler de la vitesse...

    Ce code "squelette" est écrit une fois pour toute, il suffit de le copier coller dans un nouveau projet pour pouvoir commencer à lui ajouter des muscles, de la peau, des cheveux, des habits, etc. pour produire l'application définitive.

    L'utilisation des API bas niveau permettent de booster les performances d'un projet WinDev, surtout lorsqu'on utilise des DLLs Win32 externes qui sont du véritable code machine.

    La partie la plus intéressante de ce code, est ce qu'on appel le "message cracker" (la fonction callback intitulée "WndProc") et la boucle de message principale qui figure ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    		// Main message pump.		
    		WHILE GetMessage(uMsg, Null, 0, 0)
    			TranslateMessage(uMsg)
    			DispatchMessage(uMsg)
    		END
    qui est le centre névralgique du traitement de tous les messages que Windows envoi à votre application. (le cœur du multitâche).

    Une autre chose à mon avis très importante lorsqu'on programmes l'API bas niveau avec WinDev, c'est de toujours afficher le code en anglais pour faciliter le copier coller d'un langage à l'autre. Car n'oubliez pas, l'API bas niveau, est le seul dénominateur commun de tous les langages de programmation Windows.

    Le fichier Mini.zip (attaché à ce post), contient le code qui peut être "compilé" soit en mode 32-bit, soit en mode 64.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/02/2011, 16h39
  2. création une fenêtre MDI avec java
    Par infoelectronique dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 21/01/2009, 17h01
  3. Réponses: 0
    Dernier message: 04/09/2008, 19h43
  4. Response.Redirect avec Création d'une fentre
    Par jerome.fortias dans le forum ASP.NET
    Réponses: 3
    Dernier message: 13/09/2007, 18h05
  5. [Javascript] Problème avec une fenêtre popup.
    Par mika0102 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/05/2005, 10h50

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