znsoft
管理员
管理员
  • 积分27394分
  • 威望58364点
  • 贡献值1000点
  • 金币32枚
  • 银豆80颗
  • 社区居民
  • 社区明星
  • 阅读:2476
  • 回复:1

如何检测硬件按钮!

楼主#
更多 发布于:2005-06-20 09:48
  在Palm编程中,有些程序需要用到硬件按钮来实现一些快捷功能,下面这段代码就演示了如何判断常用的6个硬件按钮,其他的按钮可类似处理!

static void AppEventLoop(void)
{
    Err error;
    EventType event;
    Boolean isDatebookKey;  //日期按钮
    Boolean isAddressKey;   //地址按钮
    Boolean isMemoListKey;  //memo 按钮
    Boolean isToDoListKey;  //to do按钮
    Boolean isCalculateKey; //计算器按钮
    Boolean isFindKey;      //查找
    Boolean isHouse;        //小房子

    do
    {
        EvtGetEvent(&event, evtWaitForever);
        isDatebookKey = (event.eType == keyDownEvent)
                                 && (TxtCharIsHardKey(event.data.keyDown.modifiers, event.data.keyDown.chr))
                                 && (event.data.keyDown.chr == vchrHard1);

        isAddressKey = (event.eType == keyDownEvent)
                              && (TxtCharIsHardKey(event.data.keyDown.modifiers, event.data.keyDown.chr))
                              && (event.data.keyDown.chr == vchrHard2);

        isMemoListKey = (event.eType == keyDownEvent)
                                && (TxtCharIsHardKey(event.data.keyDown.modifiers, event.data.keyDown.chr))
                                && (event.data.keyDown.chr == vchrHard3);

        isToDoListKey = (event.eType == keyDownEvent)
                                && (TxtCharIsHardKey(event.data.keyDown.modifiers, event.data.keyDown.chr))
                                && (event.data.keyDown.chr == vchrHard4);

        isCalculateKey = (event.eType == keyDownEvent)
                               && (TxtCharIsHardKey(event.data.keyDown.modifiers, event.data.keyDown.chr))
                               && (event.data.keyDown.chr == vchrCalc);

        // 注意:House和Find按钮不需要用到TxtCharIsHardKey()
        isHouse = (event.eType == keyDownEvent) && (event.data.keyDown.chr == vchrLaunch); 

        isFindKey = (event.eType == keyDownEvent) && (event.data.keyDown.chr == vchrFind);

        SysHandleEvent(&event))
            if (!SysHandleEvent(&event))
                if (! MenuHandleEvent(0, &event, &error))
                    if (! AppHandleEvent(&event))
                        FrmDispatchEvent(&event);

    } while (event.eType != appStopEvent);
}
喜欢0
http://www.51pda.cn 数码新社区
shanshan1
禁止发言
禁止发言
  • 积分942分
  • 威望9510点
  • 贡献值0点
  • 金币0枚
  • 银豆0颗
沙发#
发布于:2016-10-29 22:57
用户被禁言,该主题自动屏蔽!

返回顶部