PrevNextUpHome BREW C++ Class Library & GUI Framework & XML Middleware : SophiaFramework 4.1

27.2. Customizing Standard Tracer

To customize the Standard Tracer of SophiaFramework, you have only to register the event dispatching rule to Tracer.

To register the event dispatching rule to Tracer, use the RegisterTracer function. To cancel the event dispatching rule being registered to Tracer, use the UnregisterTracer function.

Example 27.1. Registering the SREVT_CONTROL event dispatching rule: to the visible Responders, notifying Child Responders from foreground to background, forced dispatching.

SFRResponderPtr responder;
SFCError        error;

error = responder->RegisterTracer(SREVT_CONTROL, 
                                  STATUS_VISIBLE | TRACER_PROVIDE, 
                                  TRACER_FORWARD);

Example 27.2. Registering the rule of dispatching the events from SFEVT_KEY to SFEVT_KEY_RELEASE: to the enabled and visible Responders, not notifying Child Responders, not forced dispatching.

SFRResponderPtr responder;
SFCError        error;

error = responder->RegisterTracer(SFEVT_KEY, 
                                  SFEVT_KEY_RELEASE, 
                                  STATUS_VISIBLE | STATUS_ENABLE, 
                                  TRACER_NONE);

More than one dispatching rules for the same event have been registered to Tracer, the last registration of event dispatching rule is effective.

[Note] Note
The result of registering the following two event dispatching rules is different.

Example 27.3. 1. Registering the event dispatching rule to Tracer

SFRResponderPtr responder;

responder->RegisterTracer(SFEVT_KEY, 
                          STATUS_VISIBLE | STATUS_ENABLE, 
                          TRACER_NONE);
responder->RegisterTracer(SFEVT_KEY, 
                          SFEVT_KEY_RELEASE, 
                          STATUS_VISIBLE | STATUS_ENABLE, 
                          TRACER_NONE);
responder->RegisterTracer(SFEVT_KEY, 
                          SFEVT_KEY_RELEASE, 
                          STATUS_VISIBLE | STATUS_ENABLE, 
                          TRACER_FOCUS);

Example 27.4. 2. Registering the event dispatching rule to Tracer

SFRResponderPtr responder;

responder->RegisterTracer(SFEVT_KEY, 
                          SFEVT_KEY_RELEASE, 
                          STATUS_VISIBLE | STATUS_ENABLE, 
                          TRACER_NONE);
responder->RegisterTracer(SFEVT_KEY, 
                          SFEVT_KEY_RELEASE, 
                          STATUS_VISIBLE | STATUS_ENABLE, 
                          TRACER_FOCUS);
responder->RegisterTracer(SFEVT_KEY, 
                          STATUS_VISIBLE | STATUS_ENABLE, 
                          TRACER_NONE);