FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» I Love You
par JL35 Aujourd'hui à 16:25

» MARK_ON déclenche un événement ON_CLICK à la place de ...
par Jean Claude Hier à 18:08

» mise a jour calculatrice
par joeeee2017 Hier à 15:57

» [solved] 3D_LINE How to ?
par Jicehel Hier à 11:01

» Convertisseur de base 10 de 2 à 36
par gigi75 Mar 17 Oct 2017 - 18:49

» calculatrice avec touches movibles
par joeeee2017 Dim 15 Oct 2017 - 1:11

» CORTANA
par gigi75 Sam 14 Oct 2017 - 16:32

» Calculatrice
par Jean Claude Sam 14 Oct 2017 - 12:30

» Compilateur FBPano
par jean_debord Jeu 12 Oct 2017 - 9:53

» KGF_dll - nouvelles versions
par Klaus Mar 10 Oct 2017 - 18:49

» à propos de Panoramic_Editor [Résolu]
par Klaus Mar 10 Oct 2017 - 3:19

» Un petit "coucou" à tous les Panoramiciens !
par Jack Ven 6 Oct 2017 - 10:24

» Pourquoi le compilateur stagne
par mindstorm Mer 4 Oct 2017 - 20:38

» Panoramic ?
par Marc37 Mer 4 Oct 2017 - 0:39

» Premiers pas avec Arduino
par Marc37 Mer 4 Oct 2017 - 0:29

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Octobre 2017
LunMarMerJeuVenSamDim
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
CalendrierCalendrier

Partagez | 
 

 Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Jack
Admin
avatar

Nombre de messages : 1764
Date d'inscription : 28/05/2007

MessageSujet: Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5   Mar 15 Déc 2015 - 11:32

Version instantanée du 15 décembre 2015 : PANORAMIC V 0.9.27i4

Je viens de mettre à disposition une nouvelle version instantanée.

Voici les changements par rapport à la version V 0.9.27i3 du 9 décembre 2015:

- il n'y a aucune limite au nombre de librairies, de commandes et de fonctions. J'ai quand même mis une limite sur les numéros pour éviter des nombres très grands : ils doivent être inférieurs ou égaux à 10000.

- correction d'un mauvais affichage d'erreur ("Library already defined" sur un mauvais numéro de librairie)

- correction d'un bug : lors de l'appel d'une fonction dans une librairie (DLL), les paramètres peuvent être des expressions. Par exemple, handle(n) est accepté.

- LIBRARY$(N) fournit le nom de la librairie numéro N ou "_" (underscore) si la librairie n'a pas été déclarée.

- Attention, les appels de fonction sans paramètre ne fonctionnent pas

_________________
username : panoramic@jack-panoramic password : panoramic123


Dernière édition par Jack le Mar 15 Déc 2015 - 22:12, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://panoramic.free-boards.net
Klaus

avatar

Nombre de messages : 10074
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5   Mar 15 Déc 2015 - 12:08

Merci, Jack. Je le prends tout de suite.

Citation :
- Attention, les appels de fonction sans paramètre ne fonctionnent pas
Peux-tu me dire si c'est temporaire ? J'imaginais passer la chaîne vide en tant qu'identifiant des types des paramètres, comme ceci:
Code:
    function "KGFupdate","KGFupdate",n%,"","stdcall"
à la place de
Code:
res% = dll_call0("KGFupdate")
Ca serait quand-même bien, car il y a pas mal de fonctions sans paramètres, dans KGF.dll ainsi que dans les DLLs de Windows.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10074
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5   Mar 15 Déc 2015 - 12:48

Rapport d'étape:
La limite de 10 fonctions a effectivement été levée. Pourtant, il reste une limite à 51 fonctions qui passent, et on a une violation de mémoire à la 52ème.

Je mets au point un module #INCLUDE pour la définition de toutes les fonctions de KGF.dll. Certes, il y en a beaucoup. Mais le module est paramétrable pour définir soit tout, soit un groupe particulier de fonctions. Mais ça ne va pas loin, car ça plante à la 52ème fonction. Voici le code que j'ai à ce jour. J'ai mis deux EXIT_SUB avec un commentaire, dans les lignes 85 et 87. Tel quel, ça s'exécute bien, le EXIT_SUB en ligne 85 étant activé. Mais en le mettant en commentaire, la ligne suivante provoque la violation d'acces:
Code:
' KGF_library.bas
'
' Ce module doit être inclus dan un programme par #INCLUDE.
' Cette directive doit être placée à la fin du source,
' afin d'éviter un décalage des numéros de ligne.
' Ce module contient les définitions des fonctions de KGF.dll,
' dans le contexte des versions Panoramic V0.9/27i3 et suivants.

KGF_library(1,"KGF.dll","*") : ' tester le module
message "ok"
end

' if 1=2  : ' pour éviter une exécution "en ligne"
sub KGF_library(n%,dll$,typ$)
  if n%>0 then library n%,dll$
 
  ' ***** gestion des sockets client/server
  if (typ$="*") or (typ$="socket")
    function "CreateServerSocket","CreateServerSocket",n%,"II","stdcall"
    function "DeleteServerSocket","DeleteServerSocket",n%,"","stdcall"
    function "GetServerSocket","GetServerSocket",n%,"","stdcall"
    function "CreateClientSocket","CreateClientSocket",n%,"III","stdcall"
    function "DeleteClientSocket","DeleteClientSocket",n%,"","stdcall"
  end_if

  ' ***** fonctions diverses
  if (typ$="*") or (typ$="divers")
    function "ResetKGF","ResetKGF",n%,"","stdcall"
    function "GetWindowProcessName","GetWindowProcessName",n%,"II","stdcall"
    function "GetWindowProcessHandles","GetWindowProcessHandles",n%,"II","stdcall"
    function "SetFormProperties","SetFormProperties",n%,"III","stdcall"
    function "GetHighPerformanceTimer","GetHighPerformanceTimer",n%,"I","stdcall"
    function "GetObjectTree","GetObjectTree",n%,"III","stdcall"
    function "AssociateFileExtension","AssociateFileExtension",n%,"II","stdcall"
    function "DrawToCanvas","DrawToCanvas",n%,"IIIIII","stdcall"
    function "GetWindowsFoldersPath","GetWindowsFoldersPath",n%,"II","stdcall"
    function "DeleteFileToRecycleBin","DeleteFileToRecycleBin",n%,"I","stdcall"
    function "TestComboBox","TestComboBox",n%,"III","stdcall"
    function "ReadBinaryFileToPanoramic","ReadBinaryFileToPanoramic",n%,"IIII","stdcall"
    function "ClipboardCopy","ClipboardCopy",n%,"I","stdcall"
    function "KGFdllVersion","KGFdllVersion",n%,"I","stdcall"
    function "PanoramicVersion","PanoramicVersion",n%,"I","stdcall"
    function "KGFupdate","KGFupdate",n%,"","stdcall"
    function "RandomValue","RandomValue",n%,"I","stdcall"
  end_if
 
  ' ***** fonctions designer
  if (typ$="*") or (typ$="designer")
    function "DesignDrag","DesignDrag",n%,"II","stdcall"
    function "UnregisterObjectFromDesigner","UnregisterObjectFromDesigner",n%,"","stdcall"
    function "RegisterObjectForDesigner","RegisterObjectForDesigner",n%,"III","stdcall"
    function "DesignerFunction","DesignerFunction",n%,"IIII","stdcall"
  end_if
 
  ' ***** fonctions XML
  if (typ$="*") or (typ$="xml")
    function "LoadXmlFromFile","LoadXmlFromFile",n%,"I","stdcall"
    function "LoadXmlFromObject","LoadXmlFromObject",n%,"I","stdcall"
    function "LoadXmlFromString","LoadXmlFromString",n%,"I","stdcall"
    function "FreeXml","FreeXml",n%,"I","stdcall"
    function "GetPreviousXmlSister","GetPreviousXmlSister",n%,"I","stdcall"
    function "GetNextXmlSister","GetNextXmlSister",n%,"I","stdcall"
    function "GetXmlParent","GetXmlParent",n%,"I","stdcall"
    function "GetFirstXmlChild","GetFirstXmlChild",n%,"I","stdcall"
    function "GetXmlTop","GetXmlTop",n%,"I","stdcall"
    function "GetXmlData","GetXmlData",n%,"II","stdcall"
    function "SetXmlData","SetXmlData",n%,"III","stdcall"
    function "GetXmlName","GetXmlName",n%,"II","stdcall"
    function "SetXmlName","SetXmlName",n%,"IIII","stdcall"
    function "SelectXmlElementByPath","SelectXmlElementByPath",n%,"IIII","stdcall"
    function "GetXmlElementByAddress","GetXmlElementByAddress",n%,"III","stdcall"
    function "GetXmlElementAddress","GetXmlElementAddress",n%,"I","stdcall"
    function "SaveXmlToFile","SaveXmlToFile",n%,"II","stdcall"
    function "SaveXmlToMemo","SaveXmlToMemo",n%,"II","stdcall"
    function "SaveXmlToString","SaveXmlToString",n%,"II","stdcall"
    function "AddXmlElement","AddXmlElement",n%,"III","stdcall"
    function "DeleteXmlElement","DeleteXmlElement",n%,"I","stdcall"
  end_if
 
  ' ***** fonctions TabObject
  if (typ$="*") or (typ$="tabobject")
    function "CreateTabObject1","CreateTabObject1",n%,"I","stdcall"
    function "DeleteTabObject1","DeleteTabObject1",n%,"I","stdcall"
    function "TabObjectGeometry1","TabObjectGeometry1",n%,"IIIII","stdcall"
  exit_sub          : ' <========== OK jusqu'ici
    function "AddTabObjectTab1","AddTabObjectTab1",n%,"II","stdcall"
  exit_sub          : ' <========== Violation d'accès ici !
    function "AddObjectToTabObjectTab1","AddObjectToTabObjectTab1",n%,"III","stdcall"
    function "AddSimpleObjectToTabObjectTab1","AddSimpleObjectToTabObjectTab1",n%,"III","stdcall"
    function "CreateTabObject","CreateTabObject",n%,"I","stdcall"
    function "TabObjectGeometry","TabObjectGeometry",n%,"IIIII","stdcall"
    function "AddTabObjectTab","AddTabObjectTab",n%,"II","stdcall"
    function "AddObjectToTabObjectTab","AddObjectToTabObjectTab",n%,"III","stdcall"
    function "AddSimpleObjectToTabObjectTab","AddSimpleObjectToTabObjectTab",n%,"III","stdcall"
    function "DeleteTabObject","DeleteTabObject",n%,"II","stdcall"
    function "TabObjectFunction","TabObjectFunction",n%,"IIIIII","stdcall"
    function "CreateImageList","CreateImageList",n%,"I","stdcall"
    function "AddImageToImageList","AddImageToImageList",n%,"III","stdcall"
    function "DeleteImageList","DeleteImageList",n%,"I","stdcall"
  end_if

  ' ***** fonctions LabelPictureButton
  if (typ$="*") or (typ$="picturebutton")
    function "IdentifyLabelPictureButton","IdentifyLabelPictureButton",n%,"","stdcall"
    function "ConfigureLabelPictureButtonGeometry","ConfigureLabelPictureButtonGeometry",n%,"IIIII","stdcall"
    function "ConfigureLabelPictureButtonStyle","ConfigureLabelPictureButtonStyle",n%,"IIIIII","stdcall"
    function "LabelPictureButtonFunction","LabelPictureButtonFunction",n%,"IIIII","stdcall"
    function "CreateLabelPictureButtonContainer","CreateLabelPictureButtonContainer",n%,"III","stdcall"
    function "DeleteLabelPictureButton","DeleteLabelPictureButton",n%,"I","stdcall"
    function "CreateLabelPictureButton","CreateLabelPictureButton",n%,"IIIIII","stdcall"
    function "CreateSimpleLabelPictureButton","CreateSimpleLabelPictureButton",n%,"IIIIII","stdcall"
    function "CreateLabelPictureButtonElement","CreateLabelPictureButtonElement",n%,"IIIIII","stdcall"
    ' function "DeleteLabelPictureButton","DeleteLabelPictureButton",n%,"I","stdcall"
  end_if
 
  ' ***** fonctions ObjectGroup
  if (typ$="*") or (typ$="objectgroup")
    function "CreateObjectGroup","CreateObjectGroup",n%,"","stdcall"
    function "AddObjectToObjectGroup","AddObjectToObjectGroup",n%,"II","stdcall"
    function "ObjectGroupFunction","ObjectGroupFunction",n%,"III","stdcall"
    function "DeleteObjectGroup","DeleteObjectGroup",n%,"I","stdcall"
  end_if
 
  ' ***** fonctions ButtonArray
  if (typ$="*") or (typ$="buttonarray")
    function "IdentifyButtonArrayButton","IdentifyButtonArrayButton",n%,"","stdcall"
    function "CreateButtonArray","CreateButtonArray",n%,"IIIII","stdcall"
    function "DeleteButtonArray","DeleteButtonArray",n%,"I","stdcall"
    function "SetButtonArrayGeometry","SetButtonArrayGeometry",n%,"IIIII","stdcall"
  end_if
 
  ' ***** fonctions paramètres étendus
  if (typ$="*") or (typ$="extendedparameters")
    function "AddExtendedParameters","AddExtendedParameters",n%,"IIIIII","stdcall"
    function "ClearExtendedParameters","ClearExtendedParameters",n%,"","stdcall"
    function "CheckExtendedParameters","CheckExtendedParameters",n%,"I","stdcall"
  end_if
 
  ' ***** fonctions de gestion des ressources
  if (typ$="*") or (typ$="resource")
    function "GetIndexOfResourceType","GetIndexOfResourceType",n%,"III","stdcall"
    function "GetListOfResources","GetListOfResources",n%,"II","stdcall"
    function "GetResourceIndexItemData","GetResourceIndexItemData",n%,"IIII","stdcall"
    function "AddNewResource","AddNewResource",n%,"IIII","stdcall"
    function "AddNewResourceEX","AddNewResourceEX",n%,"IIII","stdcall"
    function "ReplaceExistingResource","ReplaceExistingResource",n%,"IIII","stdcall"
    function "DeleteExistingResource","DeleteExistingResource",n%,"III","stdcall"
    function "FindExistingResource","FindExistingResource",n%,"III","stdcall"
    function "ExtractExistingResource","ExtractExistingResource",n%,"IIII","stdcall"
  end_if
 
  ' ***** fonctions binaires
  if (typ$="*") or (typ$="bin")
    function "bin_ROL","bin_ROL",n%,"II","stdcall"
    function "bin_ROR","bin_ROR",n%,"II","stdcall"
    function "bin_SHL","bin_SHL","II","stdcall"
    function "bin_SHR","bin_SHR",n%,"II","stdcall"
    function "bin_WROL","bin_WROL",n%,"II","stdcall"
    function "bin_WROR","bin_WROR",n%,"II","stdcall"
    function "bin_WSHL","bin_WSHL",n%,"II","stdcall"
    function "bin_WSHR","bin_WSHR",n%,"II","stdcall"
    function "bin_BROL","bin_BROL",n%,"II","stdcall"
    function "bin_BROR","bin_BROR",n%,"II","stdcall"
    function "bin_BSHL","bin_BSHL",n%,"II","stdcall"
    function "bin_BSHR","bin_BSHR",n%,"II","stdcall"
  end_if
 
  ' ***** fonctions IPC
  if (typ$="*") or (typ$="ipc")
    function "IPCGetHandle","IPCGetHandle",n%,"III","stdcall"
    function "IPCSendMessage","IPCSendMessage",n%,"III","stdcall"
  end_if
 
  ' ***** fonctions de gestion de fichiers
  if (typ$="*") or (typ$="file")
    function "FolderSelectNoCreate","FolderSelectNoCreate",n%,"III","stdcall"
    function "FolderSelectWithCreate","FolderSelectWithCreate",n%,"III","stdcall"
    function "FolderSelect","FolderSelect",n%,"IIII","stdcall"
    function "FileOpen","FileOpen",n%,"IIII","stdcall"
    function "SelectFileToOpen","SelectFileToOpen",n%,"III","stdcall"
    function "FileCreate","FileCreate",n%,"IIII","stdcall"
    function "GetFileAttributes","GetFileAttributes",n%,"I","stdcall"
    function "GetFileDate","GetFileDate",n%,"II","stdcall"
    function "GetVolumeList","GetVolumeList",n%,"","stdcall"
    function "IsFileLocked","IsFileLocked",n%,"I","stdcall"
  end_if
 
  ' ***** fonctions de gestion d'objets particuliers
  if (typ$="*") or (typ$="specialobjects")
    function "ValueListEditor","ValueListEditor",n%,"IIIIII","stdcall"
    function "MaskEdit","MaskEdit",n%,"IIIIII","stdcall"
  end_if
 
  '***** fonctions de gestion de fenêtres
  if (typ$="*") or (typ$="window")
    function "WindowTopMost","WindowTopMost","IsFileLocked",n%,"II","stdcall"
    function "WindowTranparency","WindowTranparency",n%,"II","stdcall"
    function "SetMinimizeMaximize","SetMinimizeMaximize",n%,"II","stdcall"
    function "SetCloseBox","SetCloseBox",n%,"II","stdcall"
    function "FixedFormSize","FixedFormSize",n%,"II","stdcall"
    function "AttachWindowToWindow","AttachWindowToWindow",n%,"II","stdcall"
    function "ShowMessageModal","ShowMessageModal",n%,"IIIIII","stdcall"
    function "ShowMessageModalEX","ShowMessageModalEX",n%,"IIIIII","stdcall"
    function "ShowMessageModalChoixSortie","ShowMessageModalChoixSortie",n%,"II","stdcall"
  end_if


  ' ***** fonctions d'interception de clics
  if (typ$="*") or (typ$="clickhook")
    function "ClickIt","ClickIt",n%,"II","stdcall"
    function "ClickSetHook","ClickSetHook",n%,"II","stdcall"
    function "ClickClearHook","ClickClearHook",n%,"I","stdcall"
    function "ClickSetLink","ClickSetLink",n%,"II","stdcall"
    function "ClickDefineRect","ClickDefineRect",n%,"IIIII","stdcall"
    function "ClickSetLinkRect","ClickSetLinkRect",n%,"III","stdcall"
  end_if
 
  ' ***** fonctions gérant des processus
  if (typ$="*") or (typ$="process")
    function "IsProgramRunning","IsProgramRunning",n%,"I","stdcall"
    function "SetFormParent","SetFormParent",n%,"III","stdcall" forward;
    function "LoadProgramMinimized","LoadProgramMinimized",n%,"II","stdcall"
    function "KillProcessByHandle","KillProcessByHandle",n%,"I","stdcall"
  end_if
 
  ' ***** fonctions de gestion de souris
  if (typ$="*") or (typ$="mouse")
    function "MousePosition","MousePosition",n%,"II","stdcall"
    function "MouseLeftClick","MouseLeftClick",n%,"II","stdcall"
    function "MouseRightClick","MouseRightClick",n%,"II","stdcall"
    function "AbsoluteMousePosition","AbsoluteMousePosition",n%,"II","stdcall";
    function "AbsoluteMouseLeftClick","AbsoluteMouseLeftClick",n%,"II","stdcall";
    function "AbsoluteMouseRightClick","AbsoluteMouseRightClick",n%,"II","stdcall"
    function "MouseWheel","MouseWheel",n%,"III","stdcall"
    function "AbsoluteMouseWheel","AbsoluteMouseWheel",n%,"III","stdcall"
    function "GetMousePosition","GetMousePosition",n%,"III","stdcall"
    function "GetAbsoluteMousePosition","GetAbsoluteMousePosition",n%,"II","stdcall"
    function "MouseFunction""MouseFunction",n%,"III","stdcall"
    function "MouseHighlight","MouseHighlight",n%,"III","stdcall"
  end_if
 
  ' ***** fonctions de gestion des media players
  if (typ$="*") or (typ$="player")
    function "SelectMultiPlayerType","SelectMultiPlayerType",n%,"I","stdcall"
    function "CreatePlayer","CreatePlayer",n%,"IIIII","stdcall"
    function "CreateMultiPlayer","CreateMultiPlayer",n%,"IIIII","stdcall"
    function "MovePlayer","MovePlayer",n%,"II","stdcall"
    function "MoveMultiPlayer","MoveMultiPlayer",n%,"III","stdcall"
    function "ResizePlayer","ResizePlayer",n%,"IIII","stdcall"
    function "ResizeMultiPlayer","ResizeMultiPlayer",n%,"IIIII","stdcall"
    function "DeletePlayer","DeletePlayer",n%,"","stdcall"
    function "DeleteMultiPlayer","DeleteMultiPlayer",n%,"I","stdcall"
    function "LoadFileIntoPlayer","LoadFileIntoPlayer",n%,"I","stdcall"
    function "LoadFileIntoMultiPlayer","LoadFileIntoMultiPlayer",n%,"II","stdcall"
    function "PlayPlayer","PlayPlayer",n%,"","stdcall"
    function "PlayMultiPlayer","PlayMultiPlayer",n%,"I","stdcall"
    function "PausePlayer","PausePlayer",n%,"","stdcall"
    function "PauseMultiPlayer","PauseMultiPlayer",n%,"I","stdcall"
    function "StopPlayer","StopPlayer",n%,"","stdcall"
    function "StopMultiPlayer","StopMultiPlayer",n%,"I","stdcall"
    function "MutePlayer","MutePlayer",n%,"I","stdcall"
    function "MuteMultiPlayer","MuteMultiPlayer",n%,"II","stdcall"
    function "VolumePlayer","VolumePlayer",n%,"I","stdcall"
    function "VolumeMultiPlayer","VolumeMultiPlayer",n%,"II","stdcall"
    function "LoopPlayer","LoopPlayer",n%,"I","stdcall"
    function "LoopMultiPlayer","LoopMultiPlayer",n%,"II","stdcall"
    function "GetPlayerInfo","GetPlayerInfo",n%,"I","stdcall"
    function "GetMultiPlayerInfo","GetMultiPlayerInfo",n%,"II","stdcall"
    function "GetCaptureDriverNames","GetCaptureDriverNames",n%,"I","stdcall"
    function "ConnectToCaptureDevice","ConnectToCaptureDevice",n%,"IIIIII","stdcall"
    function "DisconnectFromCaptureDevice","DisconnectFromCaptureDevice",n%,"","stdcall"
    function "ConnectCaptureDeviceToMultiPlayer","ConnectCaptureDeviceToMultiPlayer",n%,"II","stdcall"
  end_if

  ' ***** fonctions TreeView
  if (typ$="*") or (typ$="treeview")
    function "CreateTreeViewContext","CreateTreeViewContext",n%,"IIIII","stdcall"
    function "CreateTreeView","CreateTreeView",n%,"I","stdcall"
    function "ResizeTreeView","ResizeTreeView",n%,"IIIIII","stdcall"
    function "DeleteTreeView","DeleteTreeView",n%,"II","stdcall"
    function "AddTreeViewRootNode","AddTreeViewRootNode",n%,"II","stdcall"
    function "AddTreeViewChildNode","AddTreeViewChildNode",n%,"II","stdcall"
  end_if

  ' ***** fonctions d'impression
  if (typ$="*") or (typ$="printer")
    function "PrinterManager","PrinterManager",n%,"IIII","stdcall"
    function "PrinterPrintText","PrinterPrintText",n%,"IIIIII","stdcall"
    function "PrinterDrawArc","PrinterDrawArc",n%,"IIIIII","stdcall"
    function "PrinterFunction","PrinterFunction",n%,"IIIIII","stdcall"
    function "GetPrinterCount","GetPrinterCount",n%,"","stdcall"
    function "GetPrinterNames","GetPrinterNames",n%,"I","stdcall"
    function "SelectWindowsPrinter","SelectWindowsPrinter",n%,"II","stdcall"
    function "ResetPrinterQueue","ResetPrinterQueue",n%,"","stdcall"
    function "GetPrinterQueueInformation","GetPrinterQueueInformation",n%,"II","stdcall"
  end_if

  ' ***** fonctions d'images
  if (typ$="*") or (typ$="picture")
    function "Rotate90","Rotate90",n%,"","stdcall"
    function "RotateM90","RotateM90",n%,"","stdcall"
    function "Rotate180","Rotate180",n%,"","stdcall"
    function "ScreenCopy","ScreenCopy",n%,"I","stdcall"
    function "LoadPicture","LoadPicture",n%,"","stdcall"
    function "SavePicture","SavePicture",n%,"","stdcall"
    function "GetPictureHeight","GetPictureHeight",n%,"","stdcall"
    function "GetPictureWidth","GetPictureWidth",n%,"","stdcall"
    function "GetClipboardPictureWidth","GetClipboardPictureWidth",n%,"","stdcall"
    function "GetClipboardPictureHeight","GetClipboardPictureHeight",n%,"","stdcall"
    function "ResizePicture","ResizePicture",n%,"II","stdcall"
    function "ModifyPicture","ModifyPicture",n%,"IIIIII","stdcall"
    function "SetPictureFilter","SetPictureFilter",n%,"III","stdcall"
    function "ReplacePictureColor","ReplacePictureColor",n%,"IIIIII","stdcall"
    function "TorturePicture","TorturePicture",n%,"IIII","stdcall"
    function "SetPictureGrayScale","SetPictureGrayScale",n%,"","stdcall"
    function "MirrorPicture","MirrorPicture",n%,"I","stdcall"
    function "SetPictureBrightness","SetPictureBrightness",n%,"I","stdcall"
    function "SetPictureGamma","SetPictureGamma",n%,"I","stdcall"
    function "CreatePictureGradientColor","CreatePictureGradientColor",n%,"IIII","stdcall"
    function "ReframePicture","ReframePicture",n%,"III","stdcall"
    function "FloodfillPictureToBorderColor","FloodfillPictureToBorderColor",n%,"IIII","stdcall"
    function "SetImmediateMode","SetImmediateMode",n%,"I","stdcall"
    function "SetIconPictureMode","SetIconPictureMode",n%,"II","stdcall"
    function "ExtractRectangleFromPicture","ExtractRectangleFromPicture",n%,"IIII","stdcall"
  end_if

  ' ***** fonction de gestion des régions
  if (typ$="*") or (typ$="region")
    function "WindowEllipticHole","WindowEllipticHole",n%,"IIIIII","stdcall"
    function "WindowRegionHole","WindowRegionHole",n%,"III","stdcall"
    function "WindowAddEllipticRegion","WindowAddEllipticRegion",n%,"IIIII","stdcall"
    function "WindowRectangleHole","WindowRectangleHole",n%,"IIIIII","stdcall"
    function "WindowAddRectangleRegion","WindowAddRectangleRegion",n%,"IIIII","stdcall"
    function "WindowRegionAsWindow","WindowRegionAsWindow",n%,"II","stdcall"
    function "WindowGetWindowRegion","WindowGetWindowRegion",n%,"II","stdcall"
    function "WindowCreateNewWindowRegion","WindowCreateNewWindowRegion",n%,"I","stdcall"
    function "WindowAddPolygonRegion","WindowAddPolygonRegion",n%,"II","stdcall"
    function "WindowCreateRegionFromBMP","WindowCreateRegionFromBMP",n%,"IIIII","stdcall"
  end_if
 
 
 
  ' ... suite à venir...

end_sub
' end_if
Je précise que la fonction AddTabObjectTab1 est bien définie en KGF.dll, comme toutes les autres. En mettant en commentaire toutes les autres fonctions de cette section, on a la violation de mémoire sur la première fonction de la section suivante, etc.

Il y a encore quelque part un dépassement de table...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jack
Admin
avatar

Nombre de messages : 1764
Date d'inscription : 28/05/2007

MessageSujet: Re: Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5   Mar 15 Déc 2015 - 22:15

Version instantanée du 15 décembre 2015 : PANORAMIC V 0.9.27i5

Je viens de mettre à disposition une nouvelle version instantanée.

Elle corrige le bug de la V 0.9.27i4 qui limitait le nombre de commandes et de fonctions à 51.

@Klaus:
le non-fonctionnement des fonctions sans paramètres n'est bien-sûr que temporaire, mais j'ai préféré sortir une version sans cette possibilité plutôt que d'attendre encore.

_________________
username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://panoramic.free-boards.net
mindstorm

avatar

Nombre de messages : 534
Age : 48
Localisation : charente
Date d'inscription : 13/02/2013

MessageSujet: Re: Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5   Mar 15 Déc 2015 - 22:43

merci Jack
pour se beau cadeau de noel
may the FORCE be with YOU

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10074
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5   Mer 16 Déc 2015 - 0:05

Merci, Jack !

Citation :
Elle corrige le bug de la V 0.9.27i4 qui limitait le nombre de commandes et de fonctions à 51.
Ca marche parfaitement, maintenant.

Citation :
le non-fonctionnement des fonctions sans paramètres n'est bien-sûr que temporaire, mais j'ai préféré sortir une version sans cette possibilité plutôt que d'attendre encore.
Je comprends, et ça me va. Je peux donc continuer la mise au point.

Je te remercie de ta grande réactivité !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jicehel

avatar

Nombre de messages : 5858
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5   Mer 16 Déc 2015 - 1:09

Merci Jack, même si je ne programme plus pour le moment, je suis toujours et c'est une belle avancée
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10074
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5   Ven 18 Déc 2015 - 1:36

Toujours un bug avec CREATE_HIDE et PICTURE ainsi que le positionnement des forms !

Le programme ci-après marche bien, et montre comment ça devrait marcher:
Code:
dim Sversion$ : Sversion$ = "V00.00"
dim verdat$ : verdat$ = "jj/mm/aaaa"
' create_hide
FormApropos()
create_show
show 3100
end


' ===== création de la fenêtre A-propos
sub FormApropos()
form 3100 : hide 3100 : top 3100,100 : left 3100,300 : command_target_is 3100
  width 3100,400 : height 3100,200
create_show
picture 3101 : full_space 3101  : print_target_is 3101
font_name 3101,"Courier" : font_size 3101,10 : font_bold 3101
print_locate 40,20  : print "Programme: "+"Synedit_Editor"
print_locate 40,40  : print "Version:   "+Sversion$
print_locate 40,60  : print "Date:      "+verdat$
print_locate 40,80  : print "Auteur:    "+"Klaus"
create_hide
end_sub

Après avoir vérifié le fonctionnement de cette version, dé-commenter la ligne 3. Et on constate 2 problèmes:
1. le positionnement de la form n'est pas bon, contrairement à ce qui a été dit au niveau des notes pour la version V0.0.27i5
2. le picture ne s'adapte pas du tout à la taille de la form par la commande FULL_SPACE qui est simplement ignorée

Jack, pourrais-tu regarder cela ? C'est dommage, tout marchait si bien...

EDIT

La position et les dimensions d'une fenêtre sont mémorisées dans une structure TWindowPlacement. On peut la récupérer et obtenir ainsi largeur et hauteur, afin d'utiliser ces valeurs (éventuellement adaptées) pour un objet sur lequel on applique FULL_SPACE, même si la form est cachée suite à un CREATE_HIDE. J'ai fait une petite fonction qui retourne le rectangle d'origine d'une form, quelque soit son état (normal, maximisé ou minimisé):
Code:
// cette fonction retourne le rectangle de la dimension d'origine d'une form
function GetRealMetrics(f: TForm): TRect;
var
   wp: TWindowPlacement;
begin
  wp.length := SizeOf(TWindowPlacement);
  GetWindowPlacement(f.Handle,@wp);
  result := wp.rcNormalPosition;
  {
  autres valeurs disponibles:
    Top  (position normale)    wp.rcNormalPosition.Top;
    Left (position normale)    wp.rcNormalPosition.Left;
    Top  (position maximisée)  wp.ptMaxPosition.Y;
    Left (position maximisée)  wp.ptMaxPosition.X;
    Top  (position réduite)    wp.ptMinPosition.Y;
    Left (position réduite)    wp.ptMinPosition.X;
   }
end;
Ca peut peut-être servir pour ce cas ? Aussi bien pour dimensionner un objet FULL_SPACE que pour positionner la form en CREATE_HIDE, en chargeant des valeurs de wp.rcNormalPosition, puis utiliser SetWindowPlacement pour les imposer ?

EDIT

J'ai inséré dans KGF.dll le code suivant:
Code:
// cette fonction retourne le rectangle de la dimension d'origine d'une form
function GetRealMetrics(hnd: HWND): TRect;
var
   wp: TWindowPlacement;
begin
  wp.length := SizeOf(TWindowPlacement);
  GetWindowPlacement(hnd,@wp);
  result := wp.rcNormalPosition;
  {
  autres valeurs disponibles:
    Top  (position normale)    wp.rcNormalPosition.Top;
    Left (position normale)    wp.rcNormalPosition.Left;
    Top  (position maximisée)  wp.ptMaxPosition.Y;
    Left (position maximisée)  wp.ptMaxPosition.X;
    Top  (position réduite)    wp.ptMinPosition.Y;
    Left (position réduite)    wp.ptMinPosition.X;
   }
end;
function TestMetrics(hnd: HWND; px,py,pw,ph: pinteger):integer; stdcall; export;
var
  r: TRect;
begin
  r := GetRealMetrics(hnd);
  px^ := r.Left;
  py^ := r.Top;
  pw^ := r.Right - r.Left + 1;
  ph^ := r.Bottom - r.Top + 1;
  result := 0;
end;
Et j'ai fait un programme Panoramic comme ceci:
Code:
dim res%, x%, y%, w%, h%
create_hide
dll_on "KGF.dll"
form 1 : top 1,200 : left 1,300
form 2 : top 2,230 : left 2,380
res% = dll_call5("TestMetrics",handle(1),adr(x%),adr(y%),adr(w%),adr(h%))
message "form 1: x="+str$(x%)+"  y="+str$(y%)+"  w="+str$(w%)+"  h="+str$(h%)
res% = dll_call5("TestMetrics",handle(2),adr(x%),adr(y%),adr(w%),adr(h%))
message "form 2: x="+str$(x%)+"  y="+str$(y%)+"  w="+str$(w%)+"  h="+str$(h%)
show 1
show 2
end
Je crée donc 2 fenêtres en mode CREATE_HIDE, à des emplacements imposés par des commandes TOP et LEFT. Sans la commande CREATE_HIDE, les résultats sont ceux auxquels on peut s'attendre. Mais avec CREATE_HIDE, je constate 2 anomalies:
1. les valeurs x et y sont toujours identiques
2. à la première exécution, les valeurs retournées sont:
form 1: x=130  y=130  w=321  h=241
form 2: x=156  y=156  w=321  h=241
à la deuxième exécution:
form 1: x=26  y=130  w=321  h=241
form 2: x=52  y=156  w=321  h=241
à la troisième exécution:
form 1: x=130  y=130  w=321  h=241
form 2: x=156  y=156  w=321  h=241
etc.

Si l'on ajoute une troisième et une quatrième form, la série se poursuit, toujours de la même manière, avec toujours x=y et un écart de 26 pixels d'une form à l'autre.

Je pense qu'il y a quelque chose à creuser, là.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10074
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5   Ven 18 Déc 2015 - 15:21

J'ai trouvé la solution pour le positionnement !

J'ai créé la fonction suivante dans ma DLL:
Code:
function SetNormalWindowPosition(hnd: HWND; x,y,w,h: integer):integer; stdcall; export;
var
   wp: TWindowPlacement;
begin
  wp.length := SizeOf(TWindowPlacement);
  GetWindowPlacement(hnd,@wp);
  wp.rcNormalPosition.Left := x;
  wp.rcNormalPosition.Top := y;
  wp.rcNormalPosition.Right := x+w-1;
  wp.rcNormalPosition.Bottom := y+h-1;
  wp.showCmd := 0;
  SetWindowPlacement(hnd,@wp);
  result := 0;
end;
et je l'utilise comme suit:
Code:
dim res%, x%, y%, w%, h%
create_hide
dll_on "KGF.dll"
form 1 : top 1,200 : left 1,300
res% = dll_call5("SetNormalWindowPosition",handle(1),300,200,320,240)
form 2 : top 2,230 : left 2,380
res% = dll_call5("SetNormalWindowPosition",handle(2),380,230,320,240)
res% = dll_call5("TestMetrics",handle(1),adr(x%),adr(y%),adr(w%),adr(h%))
message "form 1: x="+str$(x%)+"  y="+str$(y%)+"  w="+str$(w%)+"  h="+str$(h%)
res% = dll_call5("TestMetrics",handle(2),adr(x%),adr(y%),adr(w%),adr(h%))
message "form 2: x="+str$(x%)+"  y="+str$(y%)+"  w="+str$(w%)+"  h="+str$(h%)
show 1
show 2
Ainsi, j'impose de force mes valeurs de LEFT/TOP et les valeurs par défaut d'une form pour WIDTH/HEIGHT. C'est mémorisé dans la form, mais elle reste cachée. Puis au moment du SHOW, elle apparaît à la bonne place.

EDIT

HEUREKA ! Ceci résout en même temps le problème du FULL_SPACE pour un PICTURE placé dans une FORM créée avec CREATE_HIDE ! Cette fonction SetNormalWindowPosition est LA solution en Panoramic avec KGF.dll, pour contourner ce bug dans Panoramic. Et je pense que le code de cette fonction pourrait servir de correction dans Panoramic !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 7994
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: RE   Mar 29 Déc 2015 - 21:48

SNIFF !!!...

On a perdu le visuel windows des objets, on est retourné au coins carrés...
Crying or Very sad
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5   

Revenir en haut Aller en bas
 
Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Version instantanée du 7 janvier 2015 : PANORAMIC V 0.9.26i5
» Version instantanée du 30 mai 2015 : PANORAMIC V 0.9.26i6
» version instantanée du 22 mai 2010: redimensionner SPRITE
» PANORAMIC_IDE: version instantanée du 25 septembre 2010
» Version instantanée 26 septembre 2014 : PANORAMIC V 0.9.26i2

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Ce qui est en cours ...-
Sauter vers: