gestions des evenements du systeme

ankou

Membre enregistré
10 Février 2004
5
0
Voila j'ai besoin de porter une applis win sous macosX et je cherche les fonctions permettant de gerer les evenements que le systeme fourni a une applis ( clic de souris, appuis sur une touche, etc ...)
sous windows je sais le faire pas de problémes mais je ne connais pas sous mac
visiblement nativement c realisé avec l'appel de la fonction NSApplicationMain mais comment gerer ca soit meme ??
pour notion c une boucle infini qui prend
<font class="small">Code:</font><hr /><pre>
peekMessage(&amp;msg,NULL,0,0,PM_REMOVE);
translateMessage(&amp;msg);
DispatchMessage(&amp;Msg);
</pre><hr />
merci d'avance
 
Ce principe de gestion des évènements dans une boucle n'existe plus dans OSX, chaque évènement est distribué à l'objet actif (has focus), comme un champ de texte (NSTextField). Eventuellement tu peux intercepter les évènements au niveau de la fenêtre (NSWindow). Tu trouveras toute la doc nécessaire sur le site d'Apple EventsOtherInput
 
mpergand a dit:
Ce principe de gestion des évènements dans une boucle n'existe plus dans OSX, chaque évènement est distribué à l'objet actif (has focus), comme un champ de texte (NSTextField). Eventuellement tu peux intercepter les évènements au niveau de la fenêtre (NSWindow). Tu trouveras toute la doc nécessaire sur le site d'Apple EventsOtherInput

Faux !

Le principe de gestion des évènements dans une boucle est toujours là. Par contre, on fournit depuis longtemps des API gérant les évènements autours des objets. Le boucle est simplement masqué.
 
Le principe de gestion des évènements dans une boucle est toujours là. Par contre, on fournit depuis longtemps des API gérant les évènements autours des objets. Le boucle est simplement masqué.

La gestion des évènement dans une boucle n'est plus utilisée que pour les applications classic et non conseillée/obsolette pour carbon. En Cocoa, il est peut-être possible de simuler une boucle avec la méthode currentEvent de NSApplication, mais c'est certainement une mauvaise solution.

Dire que la gestion des évènement dans une boucle n'existe plus plutôt que de dire qu'elle est masquée, obsolette, déconseillée, etc, me semblait plus simple pour un débutant en programmation Cocoa.
 
mpergand a dit:
Dire que la gestion des évènement dans une boucle n'existe plus plutôt que de dire qu'elle est masquée, obsolette, déconseillée, etc, me semblait plus simple pour un débutant en programmation Cocoa.

Formuler la question comme ça, je suis d'accord.
 
je ne suis pas reelement un débutant mais j'avoue que je n'ai jamais eu l'occas d'avoir a utiliser la gestion des evenements a la main
en fait le logiciel que je tente de porter sous mac utilise le wndproc et les handle events et je voulais faire de la meme facon sur la version mac
 
Eddy58 a dit:
Les classes NSResponder et NSEvent contiennent toutes les méthodes nécessaires.....

Je serai d'avis de faire une transposition en partant de la nature des évènements et des actions déclenchées. Ensuite les traduire en se basant sur les paradigmes utilisés dans cocoa, comme le target/action, la délégation, etc.
Bref il faut comprendre comme ça fonctionne en cocoa. C'est pas compliqué, c'est même plus simple que sur Win32 et même carbon.
La connaissance des objets précités t'aide à comprendre le processus de traitement d'un évènement dans cocoa. C'est donc c'est vrai un pré-requis.