欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

continue (5千字)

continue (5千字)

// 卸载汉王手写系统
void HW_Uninstall(void)
{
    MemHandle memHandlePref, memHandle1, memHandle2;
    void *procP;
    HW_PREF* pPrefs;
    UnloadRecognitionDB();    // 卸载汉字识别编码库
    UnloadPhraseDB();        // 卸载多元词组联想库
    
    if (!FtrGet('HW99', 10, (UInt32*)&memHandlePref)) {
        pPrefs = (HW_PREF*) MemHandleLock(memHandlePref);
        pPrefs->bInstallHW = false;
        PrefSetAppPreferences('HW99', 6, 0, pPrefs, sizeof(HW_PREF), true);
    }
    FtrGet('HW99', 11, (UInt32*)&memHandle1);
    FtrGet('HW99', 12, (UInt32*)&memHandle2);
    MemHandleUnlock(memHandlePref);
    MemHandleFree(memHandlePref);
    MemHandleFree(memHandle1);
    MemHandleFree(memHandle2);
    FtrUnregister('HW99', 10);
    FtrUnregister('HW99', 11);
    FtrUnregister('HW99', 12);
    if (!FtrGet('HW99', 13, (UInt32*)&procP))
        SysSetTrapAddress(sysTrapSysHandleEvent, procP);
    FtrUnregister('HW99', 13);
    FtrUnregister('HW99', 24);
}
void GetSettings(void)
{
    FormPtr frm;
    MemHandle memHandlePref;
    HW_PREF* pPref;
    UInt16 select;
    
    frm = FrmGetActiveForm(); // a3 = frm
    if (!FtrGet('HW99', 10, (UInt32 *)&memHandlePref)) {
        pPref = (HW_PREF*)MemHandleLock(memHandlePref); // a2
        pPref->flags = 0;
        if (FrmGetControlValue(frm, FrmGetObjectIndex(frm, 1008)))
            pPref->flags |= HW_NUMERIC;
        if (FrmGetControlValue(frm, FrmGetObjectIndex(frm, 1010)))
            pPref->flags |= HW_ENGLISH;
        if (FrmGetControlValue(frm, FrmGetObjectIndex(frm, 1012)))
            pPref->flags |= HW_SYMBOL;
        if (FrmGetControlValue(frm, FrmGetObjectIndex(frm, 1011)))
            pPref->flags |= HW_SUBCOMMONCCHAR;
        if (FrmGetControlValue(frm, FrmGetObjectIndex(frm, 1009)))
            pPref->flags |= HW_COMMONCCHAR;
        if (FrmGetControlValue(frm, FrmGetObjectIndex(frm, 1013)))
            pPref->flags |= HW_TRA2SIMPLIFIED;
        if (FrmGetControlValue(frm, FrmGetObjectIndex(frm, 1003)))
            pPref->bSplitScreen = true;
        else
            pPref->bSplitScreen = false;
        if (FrmGetControlValue(frm, FrmGetObjectIndex(frm, 1060)))
            pPref->flags |= HW_HALF2FULL, pPref->bHalfToFull = true;
        else
            pPref->bHalfToFull = false;
        if (FrmGetControlValue(frm, FrmGetObjectIndex(frm, 1061)))
            pPref->flags |= HW_UPPER2LOWER, pPref->bUpperToLower = true;
        else
            pPref->bUpperToLower = false;
        if (FrmGetControlValue(frm, FrmGetObjectIndex(frm, 1062)))
            pPref->flags |= HW_LOWER2UPPER, pPref->bLowerToUpper = true;
        else
            pPref->bLowerToUpper = false;
        select = FrmGetControlGroupSelection(frm, 3);
        if (select == frmNoSelectedControl)
            pPref->PenColor = 4;
        else
            pPref->PenColor = FrmGetObjectId(frm, select) + 7;
        select = FrmGetControlGroupSelection(frm, 4);
        pPref->RecogWaitTime = FrmGetObjectId(frm, select) - 19;
        select = FrmGetControlGroupSelection(frm, 2);
        pPref->PenThickness = FrmGetObjectId(frm, select) - 28;
        MemHandleUnlock(memHandlePref);
    }
}
UInt32 HWGBIMEMain(UInt16 cmd, void * UNUSED_PARAM(cmdPBP), UInt16 launchFlags)
{
    UInt16 error, RegCode;
    MemHandle    memHandle;
    HW_PREF* prefs;
    UInt16 sz;
    LocalID DbId;
    
    error = RomVersionCompatible (0x3503000, launchFlags);
    if (error) return (error);
    
    switch (cmd)
    {
    case sysAppLaunchCmdNormalLaunch:
        FrmGotoForm(HW_MainForm);
        EventLoop();
        GetSettings();
        FrmCloseAllForms();
    
        if (!FtrGet('HW99', 10, (UInt32 *)&memHandle)) {
            prefs = (HW_PREF*)MemHandleLock(memHandle); // a3 = ptr
            PrefSetAppPreferences('HW99', 6, 0, prefs, sizeof(HW_PREF), true/*in 'saved' database*/);
            MemHandleUnlock(memHandle);
        }
        break;
    case sysAppLaunchCmdSystemReset:
        sz = sizeof(HW_PREF);
        memHandle = MemHandleNew(sz);
        prefs = (HW_PREF*)MemHandleLock(memHandle);
        //////////////////////////////////////////////////////////////////////
        // Preferences (including those stored in the "unsaved" database)
        // survive a soft reset because they reside in the storage heap.
        // Features are deleted upon a soft reset. For this reason, preferences
        // are more appropriate for storing application state than feature are.
        //
        // The "saved" preferences database is backed up when a user performs
        // the HotSync operation. The "unsaved" preferences database is not
        // backed up by default. (The user can use a third-party tool to set the
        // backup bit in the "unsaved" preferences database, which would cause it
        // to be backed up.) Both the "saved" and the "unsaved" preferences
        // reside in the storage heap and thus persist across soft resets.
        // The only way that preferences are lost is if a hard reset is performed.
        ///////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////
        // PrefGetAppPreferences() function returns the version number of the
        // preference structure that it retrieved from the database.
        ///////////////////////////////////////////////////////////////////////
        // If HW has already been run and its preferences indicates it's installed,
        // then install HW system
        if (PrefGetAppPreferences('HW99', 0, prefs, &sz, true) != noPreferenceFound &&
            prefs->bInstallHW &&
            !HW_Install() &&
            (DbId = DmFindDatabase(0, "HWPenS-1")) != 0)
        {
            SysNotifyRegister(0, DbId, 'sync', 0, 0, 0);
        }
        MemHandleUnlock(memHandle);
        MemHandleFree(memHandle);
        break;
    case sysAppLaunchCmdNotify:
        if (!FtrGet('HW99', 10, (UInt32 *)&memHandle)) {
            prefs = (HW_PREF*)MemHandleLock(memHandle);
            RegCode = ChkReg();
            if (RegCode == 99) {
                prefs->bReged = 0xff; // 是注册用户
                PrefSetAppPreferences('HW99', 6, 0, prefs, 32, true); // 写入"saved" preferences
            }
            MemHandleUnlock(memHandle);
        }
        break;
    case HWDefinedCmd:
        if (!FtrGet('HW99', 10, (UInt32 *)&memHandle)) {
            prefs = (HW_PREF*)MemHandleLock(memHandle);
            prefs->bHalfScrnInput = true;
            _967c();
            prefs->bHalfScrnInput = false;
            MemHandleUnlock(memHandle);
        }
        break;
    }
    return 0;
}
UInt32 _PilotMain(UInt16 cmd, void * UNUSED_PARAM(cmdPBP), UInt16 launchFlags)
{
    return HWGBIMEMain(cmd, cmdPBP, launchFlags);
}

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功