Page 1 sur 1
MessageRequester(), API & co.
Publié : mer. 02/juin/2010 17:45
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.
Re: MessageRequester(), API & co.
Publié : mer. 02/juin/2010 20:00
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).
Re: MessageRequester(), API & co.
Publié : mer. 02/juin/2010 20:23
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:

Re: MessageRequester(), API & co.
Publié : mer. 02/juin/2010 21:00
par Ar-S
Sympa ça lepiaf
Faut bien penser à killer les threads ensuite.
Re: MessageRequester(), API & co.
Publié : jeu. 03/juin/2010 18:37
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é =)
Re: MessageRequester(), API & co.
Publié : lun. 07/juin/2010 16:33
par Octavius
Génial !
Merci beaucoup lepiaf

Re: MessageRequester(), API & co.
Publié : lun. 07/juin/2010 17:11
par lepiaf31
De rien =)
Re: MessageRequester(), API & co.
Publié : mar. 08/juin/2010 16:34
par dayvid
et ba ya un connaiseur ici a ce que je voie, t'es un bon toi, bravo !