MessageRequester(), API & co.

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Octavius
Messages : 312
Inscription : jeu. 26/juil./2007 12:10

MessageRequester(), API & co.

Message par Octavius »

Bonjour,

Je sais que PureBasic utilise les API Windows pour afficher les "requester" ainsi que pour ouvrir des fenêtre avec OpenWindow().

Du coup je me demandais s'il y avait moyen d'avoir le look #PB_Window_Tool (paramètre de OpenWindow()) avec les MessageRequester() d'une manière ou d'une autre. J'ai essayé de simplement ajouter #PB_Window_Tool dans les paramètres de MessageRequester() mais ça ne marche pas, alors je suppose qu'il faut passer par les API.
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Re: MessageRequester(), API & co.

Message par lepiaf31 »

Cela ne semble pas possible, en tout cas pas facilement même avec les APIs. En effet, la fonction qui ouvre un requester ne renvoi pas le handle de la fenêtre. Voilà la doc sur les fenetres de type messageRequester: http://msdn.microsoft.com/en-us/library ... 85%29.aspx (même les APIs ne renvoient pas le handle de la fenetre crée, donc elle est difficilement modifiable).
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Re: MessageRequester(), API & co.

Message par lepiaf31 »

Finalement avec un thread et le nom de la fenetre on s'en sort pas trop mal :

Code : Tout sélectionner

Procedure thread(*titleWindow)
  titleWindow.s = PeekS(*titleWindow)
  string.s = Space(1024)
  ok = 0
  
  Repeat
    ;on liste les fenetre ouvertes
    hwnd = FindWindow_(0,0)
    While hwnd <> 0
      ;on ne considère pas les fenetres invisibles ou de type 'outil'
      If GetWindowLong_(hWnd, #GWL_STYLE) & #WS_VISIBLE = #WS_VISIBLE And GetWindowLong_(hWnd, #GWL_EXSTYLE) & #WS_EX_TOOLWINDOW <> #WS_EX_TOOLWINDOW
        GetWindowText_(hwnd, @string, 1024)
        
        If Trim(string) = titleWindow ;on a trouvé le fenetre cherchée
          ;on change ses attributs
          SetWindowLong_(hwnd, #GWL_EXSTYLE, GetWindowLong_(hwnd, #GWL_EXSTYLE)|#WS_EX_TOOLWINDOW)
          ok = 1
          
        EndIf
      EndIf
      
      hwnd = GetWindow_(hwnd, #GW_HWNDNEXT) ;fenetre suivante
    Wend
    Delay(1)
  Until ok
EndProcedure
  

name.s = "test"
CreateThread(@thread(), @name)
MessageRequester(name, "petit test")
Voilà ce que j'obtiens:
Image
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: MessageRequester(), API & co.

Message par Ar-S »

Sympa ça lepiaf :)
Faut bien penser à killer les threads ensuite.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Re: MessageRequester(), API & co.

Message par lepiaf31 »

Ar-S a écrit :Sympa ça lepiaf :)
Faut bien penser à killer les threads ensuite.
Pas besoin, si tu regardes bien le code tu verra que la boucle du thread se termine dès que la fenetre devient de type 'outil' (ok passe à 1) donc le thread fini bien par se terminé =)
Octavius
Messages : 312
Inscription : jeu. 26/juil./2007 12:10

Re: MessageRequester(), API & co.

Message par Octavius »

Génial !

Merci beaucoup lepiaf :o
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Re: MessageRequester(), API & co.

Message par lepiaf31 »

De rien =)
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: MessageRequester(), API & co.

Message par dayvid »

et ba ya un connaiseur ici a ce que je voie, t'es un bon toi, bravo !
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Répondre