本文整理汇总了C++中TWsEvent::Type方法的典型用法代码示例。如果您正苦于以下问题:C++ TWsEvent::Type方法的具体用法?C++ TWsEvent::Type怎么用?C++ TWsEvent::Type使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TWsEvent
的用法示例。
在下文中一共展示了TWsEvent::Type方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: HandleWsEventL
void CEPongAppUi::HandleWsEventL(const TWsEvent &aEvent, CCoeControl *aDestination)
{
if (aEvent.Type() == EEventUser)
{
TApaSystemEvent* eventData = reinterpret_cast<TApaSystemEvent*> (aEvent.EventData());
if ((*eventData) == EApaSystemEventShutdown)
{
eventData++;
if ((*eventData) == KGoomMemoryLowEvent)
{
return; // skip default handling
}
}
}
if (aEvent.Type() == EEventFocusGained)
{
if (iAppView)
iAppView->startEngine();
}
else if (aEvent.Type() == EEventFocusLost)
{
if (iAppView)
iAppView->stopEngine(ETrue);
}
CAknAppUi::HandleWsEventL(aEvent, aDestination);
}
示例2: HandleWsEvent
int HandleWsEvent(_THIS, const TWsEvent& aWsEvent)
{
switch (aWsEvent.Type())
{
case EEventSwitchOff:
SDL_PrivateQuit();
return 0;
case EEventPointerBufferReady:
return PointerBufferReadyEvent(_this/*, aWsEvent.Time()*/);
case EEventPointer: /* Mouse pointer events */
return PointerEvent(_this, aWsEvent);
case EEventKeyDown: /* Key events */
return KeyDownEvent(_this, aWsEvent);
case EEventKeyUp: /* Key events */
return KeyUpEvent(_this, aWsEvent);
case EEventFocusGained: /* SDL window got focus */
return FocusGainedEvent(_this);
case EEventFocusLost: /* SDL window lost focus */
return FocusLostEvent(_this);
case EEventModifiersChanged:
return ModifiersChangedEvent(aWsEvent);
case EEventScreenDeviceChanged:
return ScreenDeviceChanged();
case ESDLWsEvent:
return InternalEvent(aWsEvent);
default:
return 0;
}
}
示例3: GetWgEvent
void CButton::GetWgEvent()
{
#ifdef __DEBUG
__LOGSTR1("GetWgEvent,iStatus: %d",iStatus.Int());
#endif
if(iStatus == KErrNone)
{
TWsEvent e;
iWs.GetEvent(e);
#ifdef __DEBUG
__LOGSTR1("event: %d",e.Type());
#endif
switch(e.Type())
{
case EEventPointer:
case EEventPointerEnter:
case EEventDragDrop:
{
__LOGSTR("SendClose");
iMconnect->SendClose();
break;
}
case EEventFocusGained:
__LOGSTR("Focus gained");
iIsFocus = ETrue;
//iColor = KRgbGreen;
break;
case EEventFocusLost:
__LOGSTR("Focus lost");
iIsFocus = EFalse;
//iColor = KRgbRed;
break;
case EEventKeyDown:
__LOGSTR2("EEventKeyDown,iIsFocus: %d,iScanCode: %d",iIsFocus,e.Key()->iScanCode);
if(iIsFocus && e.Key()->iScanCode == 167)
{
iMconnect->SendClose();
}
break;
}
}
Draw();
iWs.Flush();
WaitWgEvent();
}
示例4: HandleApplicationSpecificEventL
/**
Handle the user defined events.\n
Handle the System events
Call made to the static implementation CEikAppUi::HandleSystemEventL().\n
*/
void CDefocusingEdwinUi::HandleApplicationSpecificEventL(TInt , const TWsEvent& aEvent)
{
if(aEvent.Type() == (EEventUser + 1))
{
Exit();
}
else
{
CEikAppUi::HandleSystemEventL(aEvent);
}
}
示例5: if
void CMicroDialog::CMicroDialogInt::EventLoopL(void)
{
TRequestStatus eventStatus,timerStatus;
iWsSession.EventReady(&eventStatus);
iTimer.After(timerStatus,100000);
iDoLoop=ETrue;
TInt focus=EFalse;
while(iDoLoop)
{
User::WaitForAnyRequest();
if(eventStatus.Int()!=KRequestPending)
{
User::LeaveIfError(eventStatus.Int());
TWsEvent event;
iWsSession.GetEvent(event);
switch(event.Type())
{
case EEventFocusLost:
focus=EFalse;
break;
case EEventFocusGained:
focus=ETrue;
break;
case EEventFocusGroupChanged:
if(iWsSession.GetFocusWindowGroup()==iOwner->iId)
iRootWin.SetOrdinalPosition(0);
break;
case EEventKey:
iOwner->iCallback->MicroDialogKey(*(event.Key()));
break;
}
iWsSession.EventReady(&eventStatus);
}
else if(timerStatus.Int()!=KRequestPending)
{
User::LeaveIfError(timerStatus.Int());
if(focus) iOwner->iCallback->MicroDialogTimer();
iTimer.After(timerStatus,100000);
}
else
{
iOwner->iCallback->MicroDialogRequest();
}
}
iTimer.Cancel();
iWsSession.EventReadyCancel();
}
示例6: HandleWsEventL
void COokjorAppUi::HandleWsEventL(const TWsEvent &aEvent, CCoeControl *aDestination)
{
switch (aEvent.Type())
{
//case KAknUidValueEndKeyCloseEvent: 0x101F87F0 that's the red key press handling
case 0x101F87F0:
{
TApaTask task(iEikonEnv->WsSession( ));
task.SetWgId(CEikonEnv::Static()->RootWin().Identifier());
task.SendToBackground();
}
break;
default:
{
CAknAppUi::HandleWsEventL(aEvent, aDestination);
}
}
}
示例7: GetWgEvent
void CMyServer::GetWgEvent()
{
#ifdef __DEBUG
__LOGSTR1("GetWgEvent,iStatus: %d",iStatus.Int());
#endif
if(iStatus == KErrNone)
{
TWsEvent e;
iWs.GetEvent(e);
#ifdef __DEBUG
__LOGSTR1("event: %d",e.Type());
#endif
}
TInt WgId = iWs.GetFocusWindowGroup();
CApaWindowGroupName* gn = CApaWindowGroupName::NewLC(iWs, WgId);
#ifdef __DEBUG
__LOGSTR2("focused app with uid: 0x%x,config uid: 0x%x",gn->AppUid(),iConfig.iUid);
#endif
if(gn->AppUid() == iConfig.iUid)
{
Show();
//Draw();
//iWindow.SetVisible(ETrue);
//iWs.Flush();
#ifdef __DEBUG
__LOGSTR("UIDs ==");
#endif
}else{
//iWindow.SetVisible(EFalse);
Hide();
iWs.Flush();
#ifdef __DEBUG
__LOGSTR("UIDs !=");
#endif
}
WaitWgEvent();
}
示例8: EPOC_HandleWsEvent
int EPOC_HandleWsEvent(_THIS, const TWsEvent& aWsEvent)
{
int posted = 0;
SDL_keysym keysym;
// SDL_TRACE1("hws %d", aWsEvent.Type());
switch (aWsEvent.Type())
{
case EEventPointer: /* Mouse pointer events */
{
const TPointerCursorMode mode = Private->EPOC_WsSession.PointerCursorMode();
if(mode == EPointerCursorNone)
{
return 0; //TODO: Find out why events are get despite of cursor should be off
}
const TPointerEvent* pointerEvent = aWsEvent.Pointer();
TPoint mousePos = pointerEvent->iPosition;
/*!! TODO Pointer do not yet work properly
//SDL_TRACE1("SDL: EPOC_HandleWsEvent, pointerEvent->iType=%d", pointerEvent->iType); //!!
if (Private->EPOC_ShrinkedHeight) {
mousePos.iY <<= 1; // Scale y coordinate to shrinked screen height
}
if (Private->EPOC_ShrinkedWidth) {
mousePos.iX <<= 1; // Scale x coordinate to shrinked screen width
}
*/
posted += SDL_PrivateMouseMotion(0, 0, mousePos.iX, mousePos.iY); /* Absolute position on screen */
switch (pointerEvent->iType)
{
case TPointerEvent::EButton1Down:
posted += SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_LEFT, 0, 0);
break;
case TPointerEvent::EButton1Up:
posted += SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_LEFT, 0, 0);
break;
case TPointerEvent::EButton2Down:
posted += SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_RIGHT, 0, 0);
break;
case TPointerEvent::EButton2Up:
posted += SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_RIGHT, 0, 0);
break;
case TPointerEvent::EButton3Down:
posted += SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_MIDDLE, 0, 0);
break;
case TPointerEvent::EButton3Up:
posted += SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_MIDDLE, 0, 0);
break;
} // switch
break;
}
case EEventKeyDown: /* Key events */
{
#ifdef SYMBIAN_CRYSTAL
// special case: 9300/9500 rocker down, simulate left mouse button
if (aWsEvent.Key()->iScanCode == EStdKeyDeviceA)
{
const TPointerCursorMode mode = Private->EPOC_WsSession.PointerCursorMode();
if(mode != EPointerCursorNone)
posted += SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_LEFT, 0, 0);
}
#endif
(void*)TranslateKey(_this, aWsEvent.Key()->iScanCode, &keysym);
#ifndef DISABLE_JOYSTICK
/* Special handling */
switch((int)keysym.sym) {
case SDLK_CAPSLOCK:
if (!isCursorVisible) {
/* Enable virtual cursor */
HAL::Set(HAL::EMouseState, HAL::EMouseState_Visible);
}
else {
/* Disable virtual cursor */
HAL::Set(HAL::EMouseState, HAL::EMouseState_Invisible);
}
isCursorVisible = !isCursorVisible;
break;
}
#endif
posted += SDL_PrivateKeyboard(SDL_PRESSED, &keysym);
break;
}
case EEventKeyUp: /* Key events */
{
#ifdef SYMBIAN_CRYSTAL
// special case: 9300/9500 rocker up, simulate left mouse button
if (aWsEvent.Key()->iScanCode == EStdKeyDeviceA)
{
posted += SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_LEFT, 0, 0);
}
//.........这里部分代码省略.........
示例9: EPOC_HandleWsEvent
int EPOC_HandleWsEvent(_THIS, const TWsEvent& aWsEvent)
{
int posted = 0;
SDL_keysym keysym;
switch (aWsEvent.Type()) {
case EEventPointer: /* Mouse pointer events */
{
const TPointerEvent* pointerEvent = aWsEvent.Pointer();
TPoint mousePos = pointerEvent->iPosition;
//SDL_TRACE1("SDL: EPOC_HandleWsEvent, pointerEvent->iType=%d", pointerEvent->iType); //!!
if (Private->EPOC_ShrinkedHeight) {
mousePos.iY <<= 1; /* Scale y coordinate to shrinked screen height */
}
posted += SDL_PrivateMouseMotion(0, 0, mousePos.iX, mousePos.iY); /* Absolute position on screen */
if (pointerEvent->iType==TPointerEvent::EButton1Down) {
posted += SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_LEFT, 0, 0);
}
else if (pointerEvent->iType==TPointerEvent::EButton1Up) {
posted += SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_LEFT, 0, 0);
}
else if (pointerEvent->iType==TPointerEvent::EButton2Down) {
posted += SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_RIGHT, 0, 0);
}
else if (pointerEvent->iType==TPointerEvent::EButton2Up) {
posted += SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_RIGHT, 0, 0);
}
//!!posted += SDL_PrivateKeyboard(SDL_PRESSED, TranslateKey(aWsEvent.Key()->iScanCode, &keysym));
break;
}
case EEventKeyDown: /* Key events */
{
(void*)TranslateKey(aWsEvent.Key()->iScanCode, &keysym);
/* Special handling */
switch((int)keysym.sym) {
case SDLK_CAPSLOCK:
if (!isCursorVisible) {
/* Enable virtual cursor */
HAL::Set(HAL::EMouseState, HAL::EMouseState_Visible);
}
else {
/* Disable virtual cursor */
HAL::Set(HAL::EMouseState, HAL::EMouseState_Invisible);
}
isCursorVisible = !isCursorVisible;
break;
}
posted += SDL_PrivateKeyboard(SDL_PRESSED, &keysym);
break;
}
case EEventKeyUp: /* Key events */
{
posted += SDL_PrivateKeyboard(SDL_RELEASED, TranslateKey(aWsEvent.Key()->iScanCode, &keysym));
break;
}
case EEventFocusGained: /* SDL window got focus */
{
//Private->EPOC_IsWindowFocused = ETrue;
/* Draw window background and screen buffer */
RedrawWindowL(_this);
break;
}
case EEventFocusLost: /* SDL window lost focus */
{
//Private->EPOC_IsWindowFocused = EFalse;
// Wait and eat events until focus is gained again
/*
while (ETrue) {
Private->EPOC_WsSession.EventReady(&Private->EPOC_WsEventStatus);
User::WaitForRequest(Private->EPOC_WsEventStatus);
Private->EPOC_WsSession.GetEvent(Private->EPOC_WsEvent);
TInt eventType = Private->EPOC_WsEvent.Type();
Private->EPOC_WsEventStatus = KRequestPending;
//Private->EPOC_WsSession.EventReady(&Private->EPOC_WsEventStatus);
if (eventType == EEventFocusGained) {
RedrawWindowL(_this);
break;
}
}
*/
break;
}
case EEventModifiersChanged:
{
TModifiersChangedEvent* modEvent = aWsEvent.ModifiersChanged();
TUint modstate = KMOD_NONE;
if (modEvent->iModifiers == EModifierLeftShift)
modstate |= KMOD_LSHIFT;
//.........这里部分代码省略.........
示例10: HandleWsEvent
// -----------------------------------------------------------------------------
// CGameController::HandleWsEvent
// This function is called by the CWsEventReceiver
// Active Object, whenever it receives a Windows Server
// event.
// -----------------------------------------------------------------------------
//
void CGameController::HandleWsEvent( const TWsEvent& aWsEvent )
{
TInt eventType = aWsEvent.Type();
// Handle Key and Screen Size change Events.
switch( eventType )
{
case EEventKeyDown:
{
if( iGame )
iGame->HandleKeyEvent( aWsEvent.Key()->iScanCode, EFalse );
break;
}
case EEventKeyUp:
{
if( iGame )
iGame->HandleKeyEvent( aWsEvent.Key()->iScanCode, ETrue );
break;
}
case( EEventScreenDeviceChanged ): // The screen size has changed.
{
TPixelsTwipsAndRotation pixnrot;
iWsScreenDevice->GetScreenModeSizeAndRotation(
iWsScreenDevice->CurrentScreenMode(),
pixnrot
);
if( pixnrot.iPixelSize != iWindow->Size() )
{
// Update the window.
iWindow->SetExtent( TPoint( 0, 0 ),
pixnrot.iPixelSize
);
// If a game is running, notify it about the change.
if( iGame )
{
iGame->SetScreenSize( pixnrot.iPixelSize.iWidth,
pixnrot.iPixelSize.iHeight
);
// Call eglSwapBuffers after the window size has changed.
// This updates the window size used by egl.
eglSwapBuffers( iEglDisplay, iEglSurface );
}
}
break;
}
case EEventFocusLost:
{
iIsAppInFocus = EFalse;
break;
}
case EEventFocusGained:
{
iIsAppInFocus = ETrue;
break;
}
case EEventWindowVisibilityChanged:
{
// Check if the event is for the iWindow
if( aWsEvent.Handle() ==
reinterpret_cast<TUint32>( this )
)
{
if( aWsEvent.VisibilityChanged()->iFlags &
TWsVisibilityChangedEvent::ECanBeSeen
)
{
iIsVisible = ETrue;
}
else
iIsVisible = EFalse;
}
break;
}
case EEventNull:
case EEventKey:
case EEventUser:
case EEventWindowGroupListChanged:
case EEventModifiersChanged:
case EEventSwitchOn:
case EEventPassword:
case EEventWindowGroupsChanged:
case EEventErrorMessage:
case EEventPointer:
case EEventPointerEnter:
case EEventPointerExit:
//.........这里部分代码省略.........
示例11: GetWgEvent
void CMyServer::GetWgEvent()
{
__LOGSTR1("GetWgEvent,iStatus: %d",iStatus.Int());
if(iStatus == KErrNone)
{
TWsEvent e;
iWs.GetEvent(e);
__LOGSTR1("event: %d",e.Type());
switch(e.Type())
{
case EEventPointer:
case EEventPointerEnter:
//case EEventDragDrop:
{
__LOGSTR("EventPointer");
//обработчик клика
switch(iTypeEvent)
{
case ETypeCall:
{
if( e.Pointer()->iType == TPointerEvent::EButton1Down )
{
//iCaller->Cancel();
iCaller->Call(iDrawTextOld);
}
break;
}
case ETypeSearch:
if( e.Pointer()->iType == TPointerEvent::EButton1Down )
{
LaunchStandardBrowser();
break;
}
}
break;
}
}
}
/* TInt WgId = iWs.GetFocusWindowGroup();
TUint handle = iWs.GetWindowGroupHandle(WgId);
RWindowGroup wg_test = RWindowGroup(iWg);
__LOGSTR2("handle: %d, constuct: %d",handle,wg_test.Construct(handle));
CApaWindowGroupName* gn = CApaWindowGroupName::NewLC(iWs, WgId);
__LOGSTR2("focused app with uid: 0x%x,config uid: 0x%x",gn->AppUid(),iConfig.iUid);
if(gn->AppUid() == TUid::Uid(0xa0002f97))
{
CApaWindowGroupName* test = CApaWindowGroupName::NewL(iWs,WgId);
__LOGSTR2("1: system: %d, hidden: %d",test->IsSystem(),test->Hidden());
test->SetSystem(ETrue);
test->SetHidden(ETrue);
__LOGSTR2("2: system: %d, hidden: %d",test->IsSystem(),test->Hidden());
CEikonEnv* env = new CEikonEnv;
env->ConstructL();
}
if(gn->AppUid() == iConfig.iUid)
{
iOldName = iEngine->ActiveProfileL()->ProfileName().Name();
Draw(iOldName);
__LOGSTR("UIDs ==");
}else{
iWindow.SetVisible(EFalse);
iWs.Flush();
__LOGSTR("UIDs !=");
}*/
WaitWgEvent();
}
示例12: EPOC_HandleWsEvent
int EPOC_HandleWsEvent(_THIS, const TWsEvent& aWsEvent)
{
int posted = 0;
SDL_keysym keysym;
// SDL_TRACE1("hws %d", aWsEvent.Type());
switch (aWsEvent.Type())
{
case EEventPointer: /* Mouse pointer events */
{
/* const TPointerCursorMode mode = EpocSdlEnv::PointerMode();
if(mode == EPointerCursorNone)
{
return 0; //TODO: Find out why events are get despite of cursor should be off
}
*/
const TPointerEvent* pointerEvent = aWsEvent.Pointer();
const TPoint mousePos = EpocSdlEnv::WindowCoordinates(pointerEvent->iPosition);
/*!! TODO Pointer do not yet work properly
//SDL_TRACE1("SDL: EPOC_HandleWsEvent, pointerEvent->iType=%d", pointerEvent->iType); //!!
if (Private->EPOC_ShrinkedHeight) {
mousePos.iY <<= 1; // Scale y coordinate to shrinked screen height
}
if (Private->EPOC_ShrinkedWidth) {
mousePos.iX <<= 1; // Scale x coordinate to shrinked screen width
}
*/
posted += SDL_PrivateMouseMotion(0, 0, mousePos.iX, mousePos.iY); /* Absolute position on screen */
switch (pointerEvent->iType)
{
case TPointerEvent::EButton1Down:
posted += SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_LEFT, 0, 0);
break;
case TPointerEvent::EButton1Up:
posted += SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_LEFT, 0, 0);
break;
case TPointerEvent::EButton2Down:
posted += SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_RIGHT, 0, 0);
break;
case TPointerEvent::EButton2Up:
posted += SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_RIGHT, 0, 0);
break;
case TPointerEvent::EButton3Down:
posted += SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_MIDDLE, 0, 0);
break;
case TPointerEvent::EButton3Up:
posted += SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_MIDDLE, 0, 0);
break;
} // switch
break;
}
case EEventKeyDown: /* Key events */
{
#ifdef SYMBIAN_CRYSTAL
// special case: 9300/9500 rocker down, simulate left mouse button
if (aWsEvent.Key()->iScanCode == EStdKeyDeviceA)
{
const TPointerCursorMode mode = Private->EPOC_WsSession.PointerCursorMode();
if(mode != EPointerCursorNone)
posted += SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_LEFT, 0, 0);
}
#endif
(void*)TranslateKey(_this, aWsEvent.Key()->iScanCode, &keysym);
#ifndef DISABLE_JOYSTICK
/* Special handling */
switch((int)keysym.sym) {
case SDLK_CAPSLOCK:
if (!isCursorVisible) {
/* Enable virtual cursor */
HAL::Set(HAL::EMouseState, HAL::EMouseState_Visible);
}
else {
/* Disable virtual cursor */
HAL::Set(HAL::EMouseState, HAL::EMouseState_Invisible);
}
isCursorVisible = !isCursorVisible;
break;
}
#endif
posted += SDL_PrivateKeyboard(SDL_PRESSED, &keysym);
break;
}
case EEventKeyUp: /* Key events */
{
#ifdef SYMBIAN_CRYSTAL
// special case: 9300/9500 rocker up, simulate left mouse button
if (aWsEvent.Key()->iScanCode == EStdKeyDeviceA)
{
posted += SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_LEFT, 0, 0);
}
//.........这里部分代码省略.........
示例13: TestMessageQueueOverflowL
/**
Test delivery group messages in case when event queue is overflow
*/
void CTMessage::TestMessageQueueOverflowL()
{
const TInt numMaxMessages = 60;
TInt numWasteMessages = 0;
TInt numWgMessages = 5;
TInt gotRealWasteMessages = 0;
TInt gotRealWgMessages = 0;
const TInt oneSecond = 1000000;
const TInt allPossibleMessages = 500;
RWsSession senderWsSession;
RWindowGroup senderGroupWin;
TInt sndrHanGrpWin = 7777;
RWsSession receiverWsSession;
RWindowGroup receiverGroupWin;
TInt rcvrHanGrpWin = 8888;
TRequestStatus testStatus;
TRequestStatus timerStatus;
TWsEvent wasteEvent;
TWsEvent event;
RTimer timer;
timer.CreateLocal();
CleanupClosePushL(timer);
// Create sender WsSession and the window group
User::LeaveIfError(senderWsSession.Connect());
CleanupClosePushL(senderWsSession);
senderGroupWin = RWindowGroup(senderWsSession);
User::LeaveIfError(senderGroupWin.Construct(sndrHanGrpWin));
CleanupClosePushL(senderGroupWin);
// Create reciever WsSession and the window group
User::LeaveIfError(receiverWsSession.Connect());
CleanupClosePushL(receiverWsSession);
receiverGroupWin = RWindowGroup(receiverWsSession);
User::LeaveIfError(receiverGroupWin.Construct(rcvrHanGrpWin));
CleanupClosePushL(receiverGroupWin);
TInt err = KErrNone;
// Send waste events to the receiver and overflow the event queue
for (TInt ind = 0; ind < numMaxMessages; ind++)
{
wasteEvent.SetType(sndrHanGrpWin);
err = senderWsSession.SendEventToWindowGroup(receiverGroupWin.Identifier(), wasteEvent);
if (err != KErrNone)
{
numWasteMessages = ind; // Real number waste messages that was sent
break;
}
}
// Send messages to the receiver
for (TInt ind = 0; ind < numWgMessages; ind++)
{
TInt uidData = ind + sndrHanGrpWin;
TPtr8 msg((unsigned char*) &uidData, sizeof(uidData));
err = senderWsSession.SendMessageToWindowGroup(receiverGroupWin.Identifier(), TUid::Uid(uidData), msg);
if (err != KErrNone)
{
LOG_MESSAGE2(_L("UnExpected Error Code = %d"),err);
numWgMessages = ind; // Real number window group messages that was sent
}
}
// Check and count sent messages
for (TInt ind = 0; ind < allPossibleMessages; ind++)
{
receiverWsSession.EventReady(&testStatus);
timer.After(timerStatus, oneSecond);
User::WaitForRequest(testStatus, timerStatus);
if (testStatus == 0)
{
// Test incoming events
receiverWsSession.GetEvent(event);
if (event.Type() == sndrHanGrpWin)
{
++gotRealWasteMessages;
}
else if (event.Type() == EEventMessageReady)
{
if (gotRealWgMessages == 0)
{
for (TInt ind = 0; ind < numMaxMessages; ind++)
{
wasteEvent.SetType(sndrHanGrpWin);
err = senderWsSession.SendEventToWindowGroup(receiverGroupWin.Identifier(), wasteEvent);
if (err == KErrNone)
{
++numWasteMessages;
//.........这里部分代码省略.........