MessageRequester centré sur la fenêtre !

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

MessageRequester centré sur la fenêtre !

Message par Ar-S »

Voilà un petit code (pour windows) permettant de centrer la fenêtre d'un MessageRequester par rapport à votre fenêtre plutôt qu'au centre de l'écran.
je l'ai trouvé sur le site : http://gushh.net/blog/

Code : Tout sélectionner

; This snippet was based on the following code by Microsoft:
; http://support.microsoft.com/kb/180936

EnableExplicit
 
Procedure.i CenterMsgCallBack( uMsg.i, wParam.i, lParam.i ) 
	Select uMsg
    Case #HCBT_ACTIVATE
      
			Define.RECT typFormRect, typRectMsg
			Define.i plMsgHook, hwnd
			Define.i lxPos, lyPos
			hwnd = GetParent_(wParam)
      
			If hwnd
				plMsgHook 	= GetWindowLong_( hwnd, #GWL_USERDATA )

				If plMsgHook 
          GetWindowRect_( hwnd, typFormRect )
					GetWindowRect_( wParam, typRectMsg )
					lxPos = (typFormRect\left + (typFormRect\right - typFormRect\left) / 2) - ((typRectMsg\right - typRectMsg\left) / 2)
					lyPos = (typFormRect\top  +	(typFormRect\bottom - typFormRect\top) / 2) - ((typRectMsg\bottom - typRectMsg\top) / 2)
					SetWindowPos_( wParam, 0, lxPos, lyPos, 0, 0,	#SWP_NOSIZE | #SWP_NOZORDER | #SWP_NOACTIVATE ) 
					UnhookWindowsHookEx_(plMsgHook)
					SetWindowLong_( hwnd, #GWL_USERDATA, #Null )
        EndIf
      EndIf
  EndSelect
EndProcedure 
 
Procedure.i CenteredMessageRequester( Title.s, Text.s, flags.i=#Null, hwnd.i=#Null )
  
	Define.i lInstance, lThreadID, plMsgHook
  
	If Not hwnd
		hwnd = WindowID( GetActiveWindow() )
  EndIf
  
	If hwnd
		lInstance = GetWindowLong_( hwnd, #GWL_HINSTANCE )
		lThreadID = GetCurrentThreadId_()
		If lInstance And lThreadID
			plMsgHook = SetWindowsHookEx_(#WH_CBT, @CenterMsgCallBack(), lInstance, lThreadID)
			SetWindowLong_(	hwnd, #GWL_USERDATA, plMsgHook )
			ProcedureReturn MessageBox_( hwnd, Text, Title, flags )
    EndIf
  EndIf
EndProcedure
 
 
;- Exemple du CenteredMessageRequester
 
OpenWindow( 0, 200, 200, 400, 200, "test" )
MessageRequester( ":(", "MessageRequester au centre de l'ecran (comme d'hab quoi)", #MB_APPLMODAL | #MB_ICONERROR )
CenteredMessageRequester( ":)", "MessageRequester au centre de votre fenêtre ! (yeah)", #MB_APPLMODAL | #MB_ICONEXCLAMATION )	
Voilou :D
~~~~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
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: MessageRequester centré sur la fenêtre !

Message par venom »

Merci Ar-S,

sa peut toujours servir :P





@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Re: MessageRequester centré sur la fenêtre !

Message par flaith »

Netmaestro avait fait ce code aussi pour le messagerequester centré par rapport à la fenêtre parente :

Code : Tout sélectionner

;-HOOK MessageRequester
Procedure HookProc(nCode, wParam, lParam)
  Select nCode
    Case #HCBT_CREATEWND
      *pcbt.CBT_CREATEWND = lParam
      *pcs.CREATESTRUCT = *pcbt\lpcs
      cn$ = Space(#MAX_PATH)
      GetClassName_(wParam, @cn$, #MAX_PATH-1)
      If cn$ = "#32770"
        *pcs\x = WindowX(0)+WindowWidth(0)/2-*pcs\cx/2
        *pcs\y = WindowY(0)+WindowHeight(0)/2-*pcs\cy/2
      EndIf
  EndSelect
  ProcedureReturn CallNextHookEx_(Hook, nCode, wParam, lParam)
EndProcedure
 
Procedure Messagerequester_wc(title$, body$, flags=0)
  Hook = SetWindowsHookEx_(#WH_CBT, @HookProc(), #Null, GetCurrentThreadId_())
  result = MessageRequester(title$, body$, flags)
  UnhookWindowsHookEx_(Hook)
  ProcedureReturn result
EndProcedure
:mrgreen:
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: MessageRequester centré sur la fenêtre !

Message par Ar-S »

MAis qu'est-ce que NetMaestro n'a pas fait ? :)
~~~~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
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: MessageRequester centré sur la fenêtre !

Message par Kwai chang caine »

Ar-S a écrit :MAis qu'est-ce que NetMaestro n'a pas fait ? :)
Le UseGIFImageDecoder() :cry:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: MessageRequester centré sur la fenêtre !

Message par Ar-S »

Kwai chang caine a écrit :
Ar-S a écrit :MAis qu'est-ce que NetMaestro n'a pas fait ? :)
Le UseGIFImageDecoder() :cry:
ahlala ne perds pas espoir, je suis sur qu'un fan va finir par le faire.... un jour... :roll:
~~~~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
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: MessageRequester centré sur la fenêtre !

Message par Kwai chang caine »

Que les dieux de la prog t'entendent :roll: :cry:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Anonyme

Re: MessageRequester centré sur la fenêtre !

Message par Anonyme »

avec ca tu devrais pouvoir t'en sortir kcc :

http://www.onicos.com/staff/iz/formats/gif.html#header
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: MessageRequester centré sur la fenêtre !

Message par Kwai chang caine »

:lol: :lol: Tu As oublié que tu parle a Kong Cong C'est fou, le roi du code fou :lol: :lol:

Si je savais lire et interprété ça...y'a longtemps que j'aurais ouvert une epicerie fine de code source :D
Et que je vous brouterais pas les noyaux a propos d'un passage de tableau de string...

Remarque, j'aurais jamais du me lancer dans la gestion des strings et de la mémoire....j'arrive deja meme pas a me rappeller de la couleur de ceux de ma femme :oops:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Re: MessageRequester centré sur la fenêtre !

Message par flaith »

Dear KCC, une petite aide pour récupérer les infos au niveau octet et bit (en regardant ce qu'il y a dans les headers du gif) :

Code : Tout sélectionner

val.b = %01010010

val_bit123.b = val & %00001110
val_bit456.b = val & %01110000

Debug RSet(Bin(val_bit123),8,"0")
Debug RSet(Bin(val_bit456),8,"0")
:mrgreen:
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: MessageRequester centré sur la fenêtre !

Message par Kwai chang caine »

Mes amis.....je vous aime beaucoup soyez en certain...ma vie sans vous tous serait un enfer 8)

Mais il n'en reste pas moins, qu'il ne vous viendrais pas a l'idée d'expliquer a votre chien le theoreme de pythagore :lol:
Car il vous regarderais parler,..... avec certe dans les yeux tout l'amour que vous méritez...mais aussi derriere ce regard plein de tendresse ..deceleriez vous un soupçon d'incomprehension :D

J'ai parfois honte, mais la premiere image qu'il me viens quand j'entend le mot "BIT" c'est surement la meme que celle d'une femme :oops:
Je biens tout juste de comprendre dans mon voyage dans la memoire ce qu'est un octet...et encore c'est limite clair dans mon esprit :oops:

Faut dire que comme ça fait 30 ans que je "programme" en VB.....il n'est aucun besoin de dimensionner, connaitre la memoire, savoir ce qu'est un bit, un octet ..etc...
En fait VB esquinte plus qu'il n'apprend...car on passe a coté de milliers de choses fondamentales...et on fait des programmes sans meme avoir une once d'idée de ce que l'on fait.
Donc si on reste dans VB..on est "le meilleur programmeur du monde" enfin on s'auto intronise comme ça..
Mais si on en sort comme je l'ai fait avec PB....on se rend compte des degats...et si en plus on est pas de mauvaise fois.....on se rend compte que son trone n'est autre que celui en porcelaine ou nous "siegeons" tous une fois par jour :?
En fin de compte VB c'est le windev des années 80

Qu'est ce que j'aimerais etre a coté de vous au coin d'un feu, nos chien a nos pied, en train de tricoter, et discuter des heures durant de tout les fondamentaux de la programmation afin de combler ce trou beant qui me sert de base à la programmation :oops:

Donc pour faire "CHRIS"...mon bon FLAITH, je n'ai aucune idée du message que tu as voulu faire naitre dans l'evier qui me sert de tete, en deposant ton super code qui fait des jolis 0 et 1, :oops:
MAis merci de me parler comme si je pouvais comprendre 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: MessageRequester centré sur la fenêtre !

Message par Ar-S »

Je me joindrai à vous au quoi du feu, j'amène les chips et de l'aspirine :mrgreen:
~~~~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
Avatar de l’utilisateur
GeBonet
Messages : 453
Inscription : ven. 29/févr./2008 16:17
Localisation : Belgique

Re: MessageRequester centré sur la fenêtre !

Message par GeBonet »

Bonjour,

Ce n'est peut-être pas le lieu ou le post... Mais c'est une occasion de répondre à un état d'âme...
Pour réconforter KCC et l'empêcher de se déprécier... Il ne doit pas penser que autant d'année en VB soit si mauvaises... Et que la programmation, ce n'est pas QUE PB...
@KCC...
Faut dire que comme ça fait 30 ans que je "programme" en VB.....il n'est aucun besoin de dimensionner, connaitre la mémoire, savoir ce qu'est un bit, un octet ..etc...
En fait VB esquinte plus qu'il n'apprend...car on passe a coté de milliers de choses fondamentales...et on fait des programmes sans même avoir une once d'idée de ce que l'on fait.
Donc si on reste dans VB..on est "le meilleur programmeur du monde" enfin on s'auto intronise comme ça..
Mais si on en sort comme je l'ai fait avec PB....on se rend compte des dégâts...et si en plus on est pas de mauvaise fois.....on se rend compte que son trône n'est autre que celui en porcelaine ou nous "siégeons" tous une fois par jour : ?
En fin de compte VB c'est le Windev des années 80
En fait, VB, c'est 19 ans pour le 1.0...Sorti en mai 1991 Et Windev 1.0 en 1993.... ils en sont au 14.0
Mais le problème général n'est pas tant dans le ou les langages... Mais des applications !
ICI nous sommes sur un Forum dédié essentiellement à UN langage et ses arcanes... Pour y trouver ou donner des astuces pour les plus initiés, ou pour les plus "nouveaux" une forme d'approche équivalente à celle que les "pionniers" ont trouvé avec les premiers Micro et langages proposés, soit proche de la machine ! Et surtout beaucoup de plaisir dans les découvertes du langage et des supports du langage…

Il ne faut pas se tromper, VB comme Windev et un tas d'autres truc du genre sont dédiés en premier lieu au développement d'applications complète pour des clients finaux... C'est ce que l'on appelle le domaine du "Pro", ou la capacité n'est pas tant dans la connaissance d'un langage ou autre mais dans la résolution d'APPLICATIONS, et résolution de problèmes pour des clients finaux, point. Et là les connaissances sont beaucoup plus axées sur la possibilité d'appréhender les problèmes clients que la résolution d'un lecteur d'une image "gif" ou autre... Les connaissances générales autres que informatique sont bien souvent aussi importantes si pas plus que celle d'un langage qui ne doit alors être que l'outil. La complexité est déplacée vers la capacité d'analyse des problèmes d'applications complète et complexe par rapport aux langages qui eux doivent être plus orienté et favorable à faciliter le développement de l'application elle-même et non nécessairement du langage lui même !

D’où l'importance de ce vous appeler les "RAD", ou une grosse partie de la conception est préparé et prête à l'emploi… Tendance qui gagne les IDE, avec leur "VisualDesigner", PureFORM… De mon "temps", ma deuxième grosse application, après la première pour un client en 1979… Aura été justement de me créer un "IDE" pour gérer les sortie écrans (menu, fiche de fichiers appelé aujourd'hui fenêtres), et deux ou trois utilitaires, pour éviter les séquences répétitives… Comme la gestion de fichiers, et la production de documents… Ensemble que j'aurai perfectionné a travers les QB, jusque l'apparition justement de VB, Accès et Windev…

D’où la confusion, ou certains, la majorité, comme ici sur le forum PB, sont à la recherche d'une capacité d'être un autre "Fred", "NetMaestro", "SRod", "Gnozal", "Flyppe", "SDI" et j'en oublie plein d'autres… Personnages cités, qui sont presque tous orientés développement de "Langages", d'utilitaires, de jeux ou d'effets quelconques pour la beauté de la programmation… Encore en "service", ou semi retraité (comme moi qui y trouve un passe temps)…
Et les langages, sont tout compte fait aussi et même les premières applications spécifiques.
L'orientation du langage qui est ciblé (qu'il soit "Gestion" ou "Graphique", "Jeux", "Net", "Domotique", "etc."), ici PB, va souvent, au début, être dépendant des idées de l'auteur initial, puis de la tendance produite par le retour des utilisateurs pour devenir le plus ouvert possible avec l'âge. Puis en finalité, pour les survivants être convergeant avec les concurrents comme PowerBasic, Realbasic, FreeBasic, KBasic et notre PureBasic…. Sont essentiellement séparés par leurs philosophies de prix et maintenance des Upgrades voir de relation et même collaboration avec les auteursEn jouant avec PB, nous sommes plus près des "DIEUX" qu'avec les autres et ne parler pas de "VB", "Windev" ou là les dieux sont carrément invisible, et on donc rejoins leurs conditions, ils sont invisibles et on ne peut que les imaginer.

Excusez ma longueur, mais, il ne faut pas que l'un ou l'autre se déprécie, et que nous sachions tous que quelques part nous sommes tous utiles, y compris souvent (si pas plus) dans nos "bêtises"...

N'est-ce pas, KCC... 8) :lol: Autant d'année dans quoique ce soit est une VRAI expérience !
Bises à tous.
JG.
Windows 7 et Windows 8.1 Pb 5.0 jusque 5.24 Lts 64 et 5.3 (64)/b]
“Ceux qui rêvent éveillés ont conscience de mille choses qui échappent à ceux qui ne rêvent qu’endormis.”
-Edgar Allan Poe-
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: MessageRequester centré sur la fenêtre !

Message par Ar-S »

Et un topic au bon goût de

Image

:mrgreen:
~~~~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
Avatar de l’utilisateur
GeBonet
Messages : 453
Inscription : ven. 29/févr./2008 16:17
Localisation : Belgique

Re: MessageRequester centré sur la fenêtre !

Message par GeBonet »

@Ar-s
Je ne sais comment prendre ton message... ? :oops:
Si ce n'est que pour quelqu'un qui n'émet pas beaucoup, je n'aurai pas grand chose à dire ? :wink:
Ben, non... Pas par rapport à ce que vous faite en général... Qui est aussi souvent très éducatif !
Choses auxquelles je suis bien trop "nouveaux" en PB pour compléter, ou me mêler à vos expertises techniques.
A part quelque fois ou le domaine fait partie des redécouvertes de à 20 ou 30 ans...
Et puis il y a des tonne de code à explorer, à comprendre, pour que j'ai vraiment le temps de participer... 10 ans de retard au moins ça ne se rattrape pas comme ça !
Si tu veux une idée de mon curriculum...
http://www.developpez.net/forums/d66451 ... purebasic/
Si tu ne sais pas à quoi, je ressemble, j'existe aussi sur le trombinoscope...
A+
PS: Dans ce cas ci, j'ai eu pas mal d'échange avec Kcc en MP, pour penser être un "amis" pour lui...?
--- Et si je sors de ces échanges, c'est pour peut-être l'aider encore mieux...
--- Car j'estime qu'il ne s'estime pas assez et c'est dommage car il travaille beaucoup !
Windows 7 et Windows 8.1 Pb 5.0 jusque 5.24 Lts 64 et 5.3 (64)/b]
“Ceux qui rêvent éveillés ont conscience de mille choses qui échappent à ceux qui ne rêvent qu’endormis.”
-Edgar Allan Poe-
Répondre