ActivateL是个好东西,好多人都想知道其内部实现,可惜苦于没有源代码。现在我把逆向代码贴出来,让大家一饱眼福,呵呵。错误在所难免。
void CCoeControl::ActivateL(void) { if (iFlags & 0x80000) { User::LeaveNoMemory(); } if (EFalse == IsActivated()) { iFlags |= 0x10; // set to Activate if (OwnsWindow()) { iWin->Activate(); if (CapturesPointer()) { if (IsReadyToDraw()) { iCoeEnv->WsSession()->PurgePointerEvents(); } } if (IsBackedUp()) { DrawNow(); } } //RCoeDynamicDataStorage 相关操作,这个类并没有任何资料,所以关于这个类的相关操作,我们无从得知。 } TInt ctrlCounts = CountComponentControls(); TInt index = 0; while (index < ctrlCounts) { CCoeControl* subCtrlPtr = ComponentControl(index); subCtrlPtr->ActivateL(); index++; } }