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 :

ListBox Affichage par colones


Sujet :

C++

  1. #1
    Membre régulier
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Octobre 2016
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2016
    Messages : 60
    Points : 87
    Points
    87
    Par défaut ListBox Affichage par colones
    Bonsoir tous le monde,
    J' utilise ListBox pour afficher des petits messages de tailles variables ( entre 1 et 8 k )
    je souhaite afficher les messages organisées en lignes ( Ok ) VScrolling OK
    avec des bouts de texte sur 2/3 colonnes.
    C'est la que ça coince. Je n'arrive pas ä trouver la/les constantes MS de style à mettre en Oeuvre pour l'affichage en colonnes.
    quelqu'un voudra t'il bien me rafraichir la mémoire ?
    Merci Par avance

    Cordialement
    Ludwig

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 069
    Points : 12 113
    Points
    12 113
    Par défaut
    Quelle bibliothèque graphique, SVP.

  3. #3
    Membre régulier
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Octobre 2016
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2016
    Messages : 60
    Points : 87
    Points
    87
    Par défaut ListBox Affichage par colones
    Bonjour,
    Je développe à l'aide d'une machine virtuelle, dans cette machine j'ai la possibilité de caller n'importe quelle Librairie ou DLL.
    Pour installer une librairie on écris LIBRARY KERNEL32 Par exemple:

    les librairies installées sont les suivantes:

    LIBRARY KERNEL32
    LIBRARY GDI32
    LIBRARY USER32
    LIBRARY ADVAPI32
    LIBRARY SHELL32
    LIBRARY COMDLG32
    LIBRARY COMCTL32

    Pour rajouter des fonctions: on écrit FUNCTION: BeginPaint ( hwnd 'paint -- dc ) par exemple
    Pour Utiliser une fonction on fait

    ( Hwnd 'Paint )BeginPaint sachant que Hwnd et 'Paint sont les paramètres à passer à BeginPaint.
    ça marche comme en C++ sauf que c'est en notation polonaise inversé et qu'il n'y presque pas de syntaxe contraignante.
    On passe les paramètres et on calle la fonction.

    Un extrait des fonctions existantes.

    FUNCTION: DrawText ( hdc addr n 'rect style -- res )
    FUNCTION: PostQuitMessage ( n -- x )
    FUNCTION: DragAcceptFiles ( hwnd flag -- )
    FUNCTION: DragFinish ( hdrop -- )
    FUNCTION: DragQueryFile ( hdrop index zbuf zsiz -- n )
    FUNCTION: RegisterClass ( wndclass -- atom )
    FUNCTION: RegisterClassEx ( wndclass -- atom )
    FUNCTION: Beep ( freq duration -- res )
    FUNCTION: BeginPaint ( hwnd 'paint -- dc )
    FUNCTION: CallWindowProc ( 'old hwnd msg wparam lparam -- res )
    FUNCTION: CreateMenu ( -- hmenu )
    FUNCTION: DeleteDC ( dc -- flag )
    FUNCTION: DeleteObject ( hobj -- flag )
    FUNCTION: ExitProcess ( res -- x )


    les Dll actuellement utilisés:
    06F30000 C:\EASYWINDOWS\BIN\FGWVB32.DLL
    76D30000 OLE32
    703A0000 COMCTL32.DLL
    743A0000 COMDLG32.DLL
    75430000 SHELL32.DLL
    74480000 ADVAPI32.DLL
    75160000 USER32.DLL
    76C90000 GDI32.DLL
    76AE0000 KERNEL32.DLL


    On peut à peu près tout caller, sauf que moi je ne connais pas toutes les ressources possibles du côté de Micro Soft.
    Pour pouvoir caller des Macros écrites en C++, elles doivent se trouver dans un Dll et on doit pouvoir y accéder de la même façon que les Fonctions de MS

    Cordialement
    Ludwig

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 069
    Points : 12 113
    Points
    12 113
    Par défaut
    Ça répond pas à ma question, mais ça doit être tellement galère d'utiliser autre chose que Win32 de base que je fais cette assertion.
    (Pourquoi pas une "vraie" VM Windows avec tout ce qui va bien, dont un Plateforme SDK à jour ???)

    La documentation est assez explicite sur ce type de contrôle, assez rudimentaire.
    https://docs.microsoft.com/en-us/win...ols/list-boxes

    P.S.: Vous êtes complètement masochiste, utilisez une machine Windows avec les outils de développement à jour dessus. Votre productivité sera multipliée par au moins 100, sans exagération.

  5. #5
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 045
    Points : 11 368
    Points
    11 368
    Billets dans le blog
    10
    Par défaut
    Si je ne me trompe pas, avec une list box de base, il n'y a pas possibilité d'afficher des colonnes (en API Win32)
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  6. #6
    Membre régulier
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Octobre 2016
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2016
    Messages : 60
    Points : 87
    Points
    87
    Par défaut ListBox Affichage par colonne
    Salut tous le monde ,Un grand merci pour vos réponses.

    Ceci m'a été très utile.

    \ La documentation est assez explicite sur ce type de contrôle, assez rudimentaire.
    \ https://docs.microsoft.com/en-us/win...ols/list-boxes
    Juste pour infos:
    Comme déjà dit, j'utilise une MV en fait il faut dire processeur virtuel implanté en mémoire c.a.d. une vrai MV.
    La syntaxe C++ sert juste à voir la mise en Oeuvre des fonctions de MS.
    Pour le reste, ça se passe dans une autre galaxie.
    C'est largement inspiré des travaux de McCarthy (Lisp MIT)
    et Chuck Moore Astrophysiciens ( Ancien assistant de McCarthy).
    Pour ce qui est du développement c'est la valse à trois temps.

    Fondamentalement on ne programme pas pour réaliser une Apps.

    1) On rassemble des composants dans un interface Homme/Machine (Console Windows)
    2) On définit les actionneurs à rattacher aux composants
    3) On rassemble tous ceci dans un bloc de la block Chain



    Pour utiliser dans une apps on fait par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
     
    Id.ConfigToolTrading(C8A41186F4)Dlg	 RUN: S" Id.ConfigToolTrading(C8A41186F4)Dlg"        	MI_IDX$ $!  FindAndExecuteEX  ;
    Id.MiseAuPointDialogue(C8A41186F4)Dlg  	 RUN: S" Id.MiseAuPointDialogue(C8A41186F4)Dlg"		MI_IDX$ $!  FindAndExecuteEX  ;
    Id.TraçageCourbesRéduites(C8A41186F4)Dlg RUN: S" Id.TraçageCourbesRéduites(C8A41186F4)Dlg" 	MI_IDX$ $!  FindAndExecuteEX  ;
    Id.ChoixCouleur(C8A41186F4)Dlg		 RUN: S" Id.ChoixCouleur(C8A41186F4)Dlg" 		MI_IDX$ $!  FindAndExecuteEX  ;

    Par exemple l'identificateur Id.TraçageCourbesRéduites(C8A41186F4)Dlg est un objet à géométrie variable,

    vue par MS il fourni un nombre,
    vue par la machine virtuelle il fournit une chaine de caractère,
    vue par EasyWindows il fournit le nom d'un fichier Disque
    vu par la block Chain il fournit le nom du bloc,

    ce qui permet la recherche du bloc selon qu'il est:

    1) Installé à l'écran et actif
    2) Installé sur la machine mais non actif
    3) Présent sur le disque
    4) Disponible dans la Block Chain (Réseau)
    5) Non existant

    C'est FindAndExecuteEX qui se débrouille pour mettre les pendules à l'heure


    Le développement se fait sur la MV elle-même, y compris les routines rapides en Langage machine.

    Exemple: On veut disposer d'un SCANNER rapide pour les chaines de caractères et on n'en à pas, alors

    on tape CODE SCAN puis on raconte l'histoire et on fait END-CODE


    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
     
    CODE SCAN ( c-addr1 u char -- c-addr2 u2 )
       EDI PUSH                         \ save locals pointer
       EBX EAX MOV                      \ char in al
       0 [EBP] ECX MOV                  \ count in ecx
       ECX ECX OR  0<> IF
          4 [EBP] EDI MOV               \ get address to edi
          REPNE SCASB                   \ and scan the string
          0= IF                         \ if a match was found
             ECX INC                    \ advance the string
             EDI DEC                    \
          THEN                          \
          EDI 4 [EBP] MOV               \ and write the new address
       THEN                             \
       ECX EBX MOV                      \ tos is ecx
       4 # EBP ADD                      \ clean up stack
       EDI POP                          \ and restore pointer
       RET END-CODE

    Pour ne plus être obligé de chercher sur le net j'ai intégré la doc MS dans la machine comme suit:

    1) On construit les identificateurs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    \ Fonctions Help Micro Soft
     
     
           ENUM   Windows_Controls
           ENUM   About_Common_Controls
           ENUM   Custom_Draw
           ENUM   Control_Library
           ENUM   General_Control_Reference
           ENUM   Visual_Styles
     
    \ End Cst Micro Soft

    2) On fait le menu POPUP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    POPUP  "&Help Micro Soft"
     
           Windows_Controls			MENUITEM        "Windows Controls"			
           About_Common_Controls    	MENUITEM        "About Common Controls"
           Custom_Draw			MENUITEM        "Custom Draw"  
           Control_Library			MENUITEM        "Control Library"
           General_Control_Reference	MENUITEM        "General Control Reference"
           Visual_Styles			MENUITEM        "Visual Styles"
    END-POPUP
    3) On rajoute les commandes au SWITCH


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    Windows_Controls			RUN: S" https://docs.microsoft.com/en-us/windows/desktop/controls/window-controls" >SHELL ; 
    About_Common_Controls			RUN: S" https://docs.microsoft.com/en-us/windows/desktop/controls/common-controls-intro" >SHELL ;
    Custom_Draw				RUN: S" https://docs.microsoft.com/en-us/windows/desktop/controls/custom-draw" >SHELL ;
    Control_Library				RUN: S" https://docs.microsoft.com/en-us/windows/desktop/controls/individual-control-info" >SHELL ;
    General_Control_Reference               RUN: S" https://docs.microsoft.com/en-us/windows/desktop/controls/common-control-reference" >SHELL ;
    Visual_Styles				RUN: S" https://docs.microsoft.com/en-us/windows/desktop/controls/themes-overview" >SHELL ;
     
     
    SWITCH]
     
     
    CONSOLE-WINDOW +ORDER

    Le temps de taper le texte on recompile la machine et ça roule.

    Donc développement ultra rapide.

    Le seul vrai travail de programmation consiste à développer des composants nouveaux et des actionneurs.
    Le développement se fait OFF Line et en mode Interactif, ( Compilation + Interprétation ) ce qui facilite grandement le travail.
    Il me fallait les infos sur ListBox pour fabriquer un composant nouveau.
    Pour mémoire, la MV que j'utilise est un réseau neuronal et est capable de générer du code en automatique en fonction des données (Programmation par les données.)
    Vous avez probablement remarqué que la seule syntaxe c'est le BL qui sépare les mots. Donc pas de syntaxe à apprendre.

    Encore une fois merci,
    Cordialement

    Ludwig

  7. #7
    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 518
    Points
    41 518
    Par défaut
    Citation Envoyé par dragonjoker59 Voir le message
    Si je ne me trompe pas, avec une list box de base, il n'y a pas possibilité d'afficher des colonnes (en API Win32)
    En effet, une ListBox ne permet pas un affichage en colonnes genre "tableau Excel" (il faut une ListView pour ça).
    Par contre, elle a un mode qui permet, au lieu de scroller verticalement, de continuer la liste sur une autre colonne (et scroller horizontalement si ça dépasse la largeur de l'écran). À ma connaissance, c'est peut usité (surtout que la ListView en est aussi capable, en mieux).
    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.

Discussions similaires

  1. Affichage par defaut dans combobox
    Par creale10 dans le forum IHM
    Réponses: 10
    Dernier message: 11/02/2006, 09h04
  2. VBA affichage par défault formulaire unique
    Par hocine dans le forum Access
    Réponses: 3
    Dernier message: 04/01/2006, 11h50
  3. Affichage par ordre alphabétique
    Par masseur dans le forum Langage
    Réponses: 8
    Dernier message: 08/12/2005, 11h41
  4. AFFICHAGE PAR DEFAUT DANS DBLOOKUPCOMBOX
    Par AYITE dans le forum Bases de données
    Réponses: 2
    Dernier message: 20/02/2004, 20h57

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