Difference between revisions of "Mac OS X Implementing HIView"
From Apache OpenOffice Wiki
(→Events) |
|||
Line 39: | Line 39: | ||
=== Handlers === | === Handlers === | ||
− | + | The Handler is OSStatus type, and is used when events are detected. | |
+ | |||
+ | e.g. : we created HandleHIViewEvent() | ||
+ | |||
+ | using GetEventParameter, itself using the parameters described in Apple documentation. | ||
+ | |||
+ | Code sample : | ||
+ | <pre> | ||
+ | OSStatus HandleHIViewEvent(EventHandlerCallRef inHandlerCallRef, EventRef inEvent, void* inUserData) | ||
+ | { | ||
+ | ImplSalYieldMutexAcquire(); | ||
+ | OSStatus status = noErr; | ||
+ | CGContextRef mrContext; | ||
+ | HIRect bounds; // 1 | ||
+ | status = GetEventParameter (inEvent, | ||
+ | kEventParamCGContextRef, | ||
+ | typeCGContextRef, | ||
+ | NULL, | ||
+ | sizeof (CGContextRef), | ||
+ | NULL, | ||
+ | &mrContext); | ||
+ | |||
+ | //require_noerr(status, CantGetGraphicsContext); // 2 | ||
+ | HIViewGetBounds ((HIViewRef) inUserData, &bounds); | ||
+ | //require_noerr(status, CantGetBoundingRectangle); | ||
+ | ImplSalYieldMutexRelease(); | ||
+ | |||
+ | return status; | ||
+ | } | ||
+ | </pre> | ||
=== Controls === | === Controls === |
Revision as of 16:03, 12 March 2007
Contributors
Eric Bachard[ericb]
Sébastien Plisson [plipli]
Introduction
This page is part of [Native Controls Implementation] and the objective is to use HIView for HIComboboxes or other HI* controls.
Current code implementation
Events
Two sorts of events are needed:
- for objects (ClasskEventClassHIObject ) :
kEventHIObjectConstruct kEventHIObjectInitialize kEventHIObjectDestruct
- for controls themselves ( Class kEventClassControl ) :
kEventControlDraw kEventControlInitialize kEventControlHitTest kEventControlGetPartRegion kEventControlBoundsChanged
Current implementation : see vcl/aqua/aquavclevents.hxx for more informations about the syntax.
Handlers
The Handler is OSStatus type, and is used when events are detected.
e.g. : we created HandleHIViewEvent()
using GetEventParameter, itself using the parameters described in Apple documentation.
Code sample :
OSStatus HandleHIViewEvent(EventHandlerCallRef inHandlerCallRef, EventRef inEvent, void* inUserData) { ImplSalYieldMutexAcquire(); OSStatus status = noErr; CGContextRef mrContext; HIRect bounds; // 1 status = GetEventParameter (inEvent, kEventParamCGContextRef, typeCGContextRef, NULL, sizeof (CGContextRef), NULL, &mrContext); //require_noerr(status, CantGetGraphicsContext); // 2 HIViewGetBounds ((HIViewRef) inUserData, &bounds); //require_noerr(status, CantGetBoundingRectangle); ImplSalYieldMutexRelease(); return status; }
Controls
[FIXME]
Usefull Links
Reference
HIVIew : [reference]
or : [same in .pdf format]