Comment accéder à un gadget depuis une DLL ?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Comment accéder à un gadget depuis une DLL ?

Message par Shadow »

Bonjour,

Savez-vous comment je peux accéder à un gadget depuis un DLL ?
Dans ce code d'exemple, j'essais de redimensionner un gadget depuis la DLL, c'est un exemple.
Je n'y arrive pas !

Code : Tout sélectionner

; Cet exemple qui vient de l'aide de PureBasic, est un squelette modifié pour construire facilement une DLL en utilisant PureBasic.
; Règles à suivre:
; - Dans la DLL, ne jamais écrire de code en dehors d'une procédure, sauf pour les variables ou les déclarations de Structures.
; - Les routines DirectX Init ne doivent pas être initialisées dans la Procédure AttachProcess()
;   
; Il y a 4 procédures appelées automatiquement: AttachProcess(), DetachProcess(), AttachThread() et DetachThread().
; Si vous ne les utiliser pas, il suffit de les enlever.

#TESTDLL = 0 ; 0 Pour compiler le programme en "Shared DLL", 1 pour tester le programme.

CompilerIf #TESTDLL = 0
  
  ;{ Le code de la DLL:
  CompilerIf #PB_Compiler_OS = #PB_OS_Windows
    
    ; Ces 4 procédures qui suivent, sont spécifiques à Windows.
         
    ; Cette procédure est appelée une fois, lorsque le programme charge la bibliothèque pour la première fois.
    ; Toutes les opérations d'init peuvent être effectuées ici (mais pas l'init de DirectX). 
    ProcedureDLL AttachProcess(Instance)
    EndProcedure
    
    ; Appelé lorsque le programme libère la DLL.
    ProcedureDLL DetachProcess(Instance)
    EndProcedure
    
    ; Ces deux dernières, sont appelés lorsqu'un thread dans un programme appelle ou libère la DLL.
    
    ; Atache un Thread à la DLL.
    ProcedureDLL AttachThread(Instance)
    EndProcedure
    
    ; Libère le Thread de la DLL.
    ProcedureDLL DetachThread(Instance)
    EndProcedure
    
  CompilerEndIf
  
  ; Votre code de la DLL est ici.
  
  Enumeration
    #Window
  EndEnumeration
  
  ProcedureDLL GadgetResize(*Gadget, X.i, Y.i, W.i, H.i)
    ResizeGadget(*Gadget, X.i, Y.i, W.i, H.i)
    MessageRequester("Info", Str(*Gadget) + ", " + Str(X.i) + ", " + Str(Y.i) + ", " + Str(W.i) + ", " + Str(H.i), 64)
    ProcedureReturn 1
  EndProcedure
  
  ;}
  
CompilerElse
  
  If OpenLibrary(0, "Test Dll.dll") Or OpenLibrary(0, "PureBasic.so")
    
    If OpenWindow(NumeroFenetre.i, 0, 0, 220, 100, "Maou, #PB_Window_SystemMenu | #PB_Window_ScreenCentered")
      ButtonGadget(1, 10, 60, 200, 30, "Fermer")
      
      *G = GadgetID(1)
      MessageRequester("Result", Str(CallFunction(0, "GadgetResize", *G, 20, 40, 280, 50)), 64)
      
      Repeat
        Event = WaitWindowEvent()
        
        Select Event
            
          Case #PB_Event_Gadget
            Select EventGadget()
              Case 1 
                CloseWindow(NumeroFenetre.i)
                Event = #PB_Event_CloseWindow
            EndSelect
            
        EndSelect
      Until Event = #PB_Event_CloseWindow
      
    Else
      MessageRequester("Erreur !", "Ne peux pas ouvrir la fenêtre !", 64)
    EndIf
    
  EndIf
  
CompilerEndIf
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Re: Comment accéder à un gadget depuis une DLL ?

Message par Patrick88 »

bin, ils t'ont répondu, non ?

mk-soft : There you have to deal a little bit with the SDK of Purebasic. Là, il faut s'occuper un peu du SDK de Purebasic.


ShadowStorm Post subject: Access a gadget from a DLL PostPosted: Fri Aug 14, 2020 8:50 am
http://forums.purebasic.com/english/vie ... f06301464e

:roll:
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Comment accéder à un gadget depuis une DLL ?

Message par Shadow »

Exacte la réponses m'as été donné sur le forum anglais :)
https://www.purebasic.fr/english/viewto ... 67ed8cb24d
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Répondre