Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 | |
| | Auteur | Message |
---|
Jack Admin
Nombre de messages : 2394 Date d'inscription : 28/05/2007
| Sujet: Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Mar 15 Déc 2015 - 9: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 - 20:12, édité 1 fois | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Mar 15 Déc 2015 - 10: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. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Mar 15 Déc 2015 - 10: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... | |
| | | Jack Admin
Nombre de messages : 2394 Date d'inscription : 28/05/2007
| Sujet: Re: Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Mar 15 Déc 2015 - 20: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 | |
| | | mindstorm
Nombre de messages : 685 Age : 55 Localisation : charente Date d'inscription : 13/02/2013
| Sujet: Re: Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Mar 15 Déc 2015 - 20:43 | |
| merci Jack pour se beau cadeau de noel may the FORCE be with YOU
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Mar 15 Déc 2015 - 22: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é ! | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Mar 15 Déc 2015 - 23:09 | |
| Merci Jack, même si je ne programme plus pour le moment, je suis toujours et c'est une belle avancée | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Jeu 17 Déc 2015 - 23: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... EDITLa 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 ? EDITJ'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 identiques2. à 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à. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Ven 18 Déc 2015 - 13: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. EDITHEUREKA ! 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 ! | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: RE Mar 29 Déc 2015 - 19:48 | |
| SNIFF !!!... On a perdu le visuel windows des objets, on est retourné au coins carrés... | |
| | | Contenu sponsorisé
| Sujet: Re: Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 | |
| |
| | | | Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |