Ma fenêtre est mal dimentionnée... comprand pas pourquoi

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Ma fenêtre est mal dimentionnée... comprand pas pourquoi

Message par gansta93 »

Bonjour,

Est-ce quelqu'un peut me dire pourquoi ça marche pas pour les dimentions, en plus le nom du fichier ne s'affiche pas correctement dans le StringGadget.

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 300, 200, #pb_window_systemmenu | #pb_window_ScreenCentered | #pb_window_minimizegadget | #pb_window_maximizegadget | #pb_window_sizegadget, "Afficheur de fonctions d'une DLL", 0) And CreateGadgetList(WindowID(0))
  TextGadget(0, 0, 0, 50, 20, "Librairie :")
  StringGadget(1, 50, 0, 230, 20, "", #pb_string_readonly)
  ButtonGadget(2, 280, 0, 20, 20, "...", #pb_button_default)
  ListIconGadget(3, 0, 20, 300, 180, "Fonction", 150, #PB_ListIcon_MultiSelect | #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
  AddGadgetColumn(3, 1, "Adresse de la fonction", 150)
  Repeat
    Select WaitWindowEvent()
      Case #PB_EventGadget
        Select EventGadgetID()
          Case 2
; Petit changement, on prand le dossier %windir\System par l'API
              initialpath$ = Space(#Max_Path)
GetSystemDirectory_(@initialpath$,#Max_Path)
If Right(initialpath$,1)<>"\"
initialpath$=initialpath$+"\"
EndIf
            librairie$ = OpenFileRequester("Choisissez une librairie de Windows", "" + initialpath$, "Fichiers DLL|*.DLL", 0)
            If librairie$
              SetGadgetText(1, librairie$)
              If OpenLibrary(0, librairie$)
                ExamineLibraryFunctions(0)
                
                resulta = NextLibraryFunction()
                ; début de la boucle jusqu'à ce que le résultat devienne faux
                i = 0
                While resulta
                  
                  AddGadgetItem(3, I, LibraryFunctionName())
                  SetGadgetItemText(3, I, Str(LibraryFunctionAddress()), 1)
                  resulta = NextLibraryFunction()
                Wend
                ; fin de la boucle
                CloseLibrary(0)
              Else
                MessageRequester("Erreur", "Impossible d'ouvrire la librairie '" + librairie$ + "'.", #mb_ok | #mb_iconstop)
              EndIf
            EndIf
        EndSelect
      Case #PB_Event_CloseWindow
        End
      Case #WM_Size
        ResizeGadget(2, WindowHeight() - 20, 0, 20, 20)
        ResizeGadget(1, 50, 0, WindowHeight() - 50 - 20, 20)
        ResizeGadget(3, 0, 20, WindowWidth(), WindowHeight() - 20)
    EndSelect
    Delay(20)
  ForEver
Else
  MessageRequester("Erreur", "Erreur initialisation.", #mb_ok | #mb_iconstop)
EndIf
End
Merci d'avance.
Dernière modification par gansta93 le ven. 07/janv./2005 18:58, modifié 2 fois.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Code : Tout sélectionner

      Case #WM_Size 
        ResizeGadget(2, WindowWidth() - 20, 0, 20, 20) 
        ResizeGadget(1, 50, 0, WindowWidth() - 50 - 20, 20) 
        ResizeGadget(3, 0, 20, WindowWidth(), WindowHeight() - 20) 

Trois fois rien! :)
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Merci, ça marche! :-D
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

:D pas mal ton prog !

Tu devrais éditer ton premier post pour ajouter # devant PB_Window_SystemMenu dans ton ouverture de fenêtre. Ca manque et ça pourrait perturber des débutants.
Malgré que tu sélectionnes l'Os (2000 ou XP) ça fonctionne sur Win Me.

Ce qui serait bien c'est de rajouter à quoi correspondent les numéros des adresses. J'ai pas l'habitude et ça me laisse perplexe, mais bon les pros s'y retrouveront.
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Bonjour,

Justemant, pour le dossier system, il faut que je retrouve le code pour retourner ce répertoir, il me semble qu'il y est sur 2Dev.
Et... que veux-tu dire par "numéro des adresses"?

Merci :-).
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

Oui, dans compilers de PureBasic
il y a la ATL.DLL que j'ai affiché avec ton prog pour exemple.
J'obtiens donc la liste des fonctions et leur adresse qui s'affichent dans ta listicon. Comme ceci :

Fonctions Adresses
DLLUnregisterServer 1597911549
DLLRegisterServer 1597911534
etc...

D'où ma perplexité face aux adresses de ces fonctions.
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Bonjour,

Euh... oui, mais je ne sais pas vraimant comment décrire cette colonne autremant
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Code edité, maintenant je passe par l'API pour avoir le dossier system ou system32.
Répondre