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
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
ListBox Affichage par colonne
Salut tous le monde ,Un grand merci pour vos réponses.
Ceci m'a été très utile.
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:
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:
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:
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:
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:
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