Symbian 自动获取键盘锁状态事件(非RAknKeyLock方式)
2010-03-27 15:50:00 来源:WEB开发网_LIT(KFormat, "Key:%d, Value:%d, err:%dx0a0d");
TBuf<64> buf;
buf.Format(KFormat, i, value, err);
TRAP_IGNORE(iFile.WriteL(buf));
}
iKeyLock.DisableWithoutNote();
for(TInt i=1; i<=6; i++)
{
TInt value=0;
TInt err = cenrep->Get(i, value);
_LIT(KFormat, "Key:%d, Value:%d, err:%dx0a0d");
TBuf<64> buf;
buf.Format(KFormat, i, value, err);
TRAP_IGNORE(iFile.WriteL(buf));
}
Keylock enabled: 1, 0, 0, 0, 0, 0
Keylock disabled: 0, 0, 0, 0, 0, 0
That means the key 1 is for keylock state
Step 6. Use CCenRepNotifyHandler to monitor the keylock state changes, verified on both emulator and N95.
Result: See the snapshots in the attached .zip package. When the keys are locked we draw a rect and when unlocked we clear it.
首先,我们先做一个假设,当前键盘锁状态是保存在Central Repository中.然后我们要验证这个假设:
在模拟器里,我们通过加锁键盘和解锁键盘,来查看在Central Repository中所有文件的变化,反复测试后发现只有101f8765.cre产生了变化!所以我们就推测键盘锁状态就是保存在这个文件当中!
接着,我们分别拷贝未锁和已锁两个状态下的101f8765.cre,对比分析,结合"epoc32eleasewinscw udebzprivate10202be9101f8765.txt"文件发现,只有一位不同,正是键盘锁状态的"1"和"0"!加上实际情况的测试结果,足以证实我们的假设是正确的.
既然知道了键盘锁状态在Central Repository中保存位置,那么我们就可以用"CCenRepNotifyHandler"来监测该状态值的变化,来实现自动获取键盘锁状态的功能!
更多精彩
赞助商链接