⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aphearsay.c

📁 本电子词典是名人928的学习机代码,主要是电子学习机AP,其他还没有传
💻 C
📖 第 1 页 / 共 3 页
字号:
/****************************************************************************/
/*                                                                          */
/*              Copyright (C) 2005 SHENZHEN MEIJIN CO.LTD                   */
/*                                                                          */
/* FILE NAME:   ApHearSay.c                                                 */
/* MODULE NAME: AP应用程序                                                  */
/* DESCRIPTION: HearSayAP的函数                                             */
/*              数码复读学习界面                                            */
/*                                                                          */
/* FUNCTIONS:                                                               */
/*                                                                          */
/****************************************************************************/
/*    NAME         DATE               REMARKS                               */
/* ==========  ============   ==============================================*/
/*   DennyHan    2006-03-09         V1.00B                                  */
/****************************************************************************/

// 包含必要的头文件
#include	"Ap.h"
#include	"ApHearSay.h"
#include	"ApHearSayHook.h"


#ifndef HEARSAY_HELP_ID
#define	HEARSAY_HELP_ID	(UINT)((const UINT8*)"\
1. 按[1]键播放。\r\n\
2. 按[2]键停止播放。\r\n\
3. 对于*.MST文本,播放过程中,声音和文字同步,按[左右]方向键浏览上、下句,同时播放相应位置的语音。\r\n\
4. 对于*.MST文件,系统根据本身设置的断点自动复读指定的范围。按[3]键开始复读,复读完设定的次数后,自动复读下一句,一直复读完毕。\r\n\
5. 对于*.MTL、*.TXT文本,播放过程中,按[上下]方向键、[翻页]键进行文本浏览。\r\n\
6. 对于*.MTL、*.TXT文本,需手动复读。即手动设置“A、B”点,对“A—B”点间的内容进行复读。按[1]键开始播放,并将播放起点自动作为“A”点,此时按字母[A]键将设置新的“A”点,再按字母[B]键设置“B”点,并开始从“A” 点到“B”点复读。\r\n\
7. 手动复读时,按字母[A]键设置新的“A”点,并开始从新的“A”点到原来的“B”点复读;按字母[B]键设置新的“B”点,并开始从原来的“A”点到新的“B”点复读;\r\n\
8. 按[3]键重新复读,此时,按[1]键从“B”点开始播放,并将“B”没置为新的A点,按[2]键,停止复读,并将光标停在“B”点;此时按[1]键将“B”点变成新的“A”点。\r\n\
9. 按[S]键进入复读次数设置画面,系统默认为三次,按键重新更改次数,按[确认]或[1]键保存设置。\r\n\
10. 在没有设置“A、B”点的情况下,按[3]键,复读无效。设置有“A”点,而没有“B”点,按[3]键,复读无效。\r\n\
11. 系统默认“A”点在左,“B”点在右。\r\n\
12. 按[4]键进入跳查的反白状态,正在播放的声音停止。按键可以移动反白块。按住[SHIFT]键再按方向键,可连续反白。\r\n\
13. 按[退出]返回到上一层画面。\r\n\
")
#endif


/****************************************************************************/
// Global 变量
RrParam		g_RrParam;

// 内部函数说明
INT  HearSayEventProc       ( APGUI_STRUCT *pGui, UINT uEvent, UINT uParam );
INT  HearSayEvent_Initialize( APGUI_STRUCT *pGui, UINT uEvent, UINT uParam );
INT  HearSayEvent_Destroy   ( APGUI_STRUCT *pGui, UINT uEvent, UINT uParam );
//INT  HearSayEvent_Exit      ( APGUI_STRUCT *pGui, UINT uEvent, UINT uParam );
INT  HearSayEvent_Draw      ( APGUI_STRUCT *pGui, UINT uEvent, UINT uParam );
INT  HearSayDraw_ProBar     ( APGUI_STRUCT *pGui, UINT uEvent, UINT uParam );
INT  HearSayEvent_TimerPolling(APGUI_STRUCT *pGui, UINT uEvent, UINT uParam);

// Ap应用的GUI结构
#define	HS_BWR_GUI(p)	(pGui+1)
const APGUI_STRUCT  g_aHearSayGui[] =
{
    GUI_RESERVE_MARK,                   // UINT     uReserveMark;
    0,                                  // INT16    nX;
    0,                                  // INT16    nY;
    LCD_SCREEN_WIDTH,                   // UINT16   uWidth;
    LCD_SCREEN_HEIGHT,                  // UINT16   uHeight;
    (FPGUIHANDLEEVENT)HearSayEventProc,   // FPGUIHANDLEEVENT    fpHandleFunc;
    NULL,                               // UINT     uCurrentIme;
    0,                                  // INT      nCtrlParam1;
    0,                                  // INT      nCtrlParam2;
    0,                                  // INT      nCtrlParam3;
    //-------------------------------------
    GUI_RESERVE_MARK,                       // UINT     uReserveMark;
    HEARSAY_BWR_X,                          // INT16    nX;
    HEARSAY_BWR_Y,                          // INT16    nY;
    HEARSAY_BWR_W,                          // UINT16   uWidth;
    HEARSAY_BWR_H,                          // UINT16   uHeight;
    (FPGUIHANDLEEVENT)HearSayBrowserProc,   // FPGUIHANDLEEVENT    fpHandleFunc;
	(INT)((   BROWSER_OPTION_MARK
	| SYSTLIB<<16// BROWSER_OPTION_ALIGNLEFT 
	| BROWSER_OPTION_RELOAD)),//(BROWSER_OPTION_MARK|BROWSER_OPTION_RELOAD),                  // UINT     uCurrentIme;
    HEARSAY_BWR_LINEH,                      // INT      nCtrlParam1;    // Line space is 1
    0,                                      // INT      nCtrlParam2;
    0,                                      // INT      nCtrlParam3;
    //-------------------------------------
	// AP的内部控件之GUI模板
    //=============================================
    // Play
    GUI_RESERVE_MARK,                       // UINT     uReserveMark;
    HEARSAY_BTN1_X,                         // INT16    nX;
    HEARSAY_BTN1_Y,                         // INT16    nY;
    HEARSAY_BTN1_W,                         // UINT16   uWidth;
    HEARSAY_BTN1_H,                         // UINT16   uHeight;
    (FPGUIHANDLEEVENT)HearSayBar1Proc,     // FPGUIHANDLEEVENT    fpHandleFunc;
    HEARSAY_BTN1_T,
    (HEARSAY_BTN1_CMD+(HEARSAY_BTN1_KEY<<16)),
//	('Q' + ('Q' << 16)),
    0,                                      // INT      nCtrlParam3;
    0,                                      // INT      nCtrlParam4;

    GUI_RESERVE_MARK,                       // UINT     uReserveMark;
    HEARSAY_BTN1_X,                         // INT16    nX;
    HEARSAY_BTN1_Y,                         // INT16    nY;
    HEARSAY_BTN1_W,                         // UINT16   uWidth;
    HEARSAY_BTN1_H,                         // UINT16   uHeight;
    (FPGUIHANDLEEVENT)HearSayBar1Proc,     // FPGUIHANDLEEVENT    fpHandleFunc;
    HEARSAY_BTN1_T,
    (HEARSAY_BTN1_CMD+(HEARSAY_BTN11_KEY<<16)),
//	('q' + ('q' << 16)),
    0,                                      // INT      nCtrlParam3;
    0,                                      // INT      nCtrlParam4;
    //=============================================
    // Stop
    GUI_RESERVE_MARK,                       // UINT     uReserveMark;
    HEARSAY_BTN2_X,                         // INT16    nX;
    HEARSAY_BTN2_Y,                         // INT16    nY;
    HEARSAY_BTN2_W,                         // UINT16   uWidth;
    HEARSAY_BTN2_H,                         // UINT16   uHeight;
    (FPGUIHANDLEEVENT)HearSayBar12Proc,     // FPGUIHANDLEEVENT    fpHandleFunc;
    HEARSAY_BTN2_T,
    (HEARSAY_BTN7_CMD+(HEARSAY_BTN2_KEY<<16)),
//	('W' + ('W' << 16)),
    0,                                      // INT      nCtrlParam3;
    0,                                      // INT      nCtrlParam4;

    GUI_RESERVE_MARK,                       // UINT     uReserveMark;
    HEARSAY_BTN2_X,                         // INT16    nX;
    HEARSAY_BTN2_Y,                         // INT16    nY;
    HEARSAY_BTN2_W,                         // UINT16   uWidth;
    HEARSAY_BTN2_H,                         // UINT16   uHeight;
    (FPGUIHANDLEEVENT)HearSayBar12Proc,     // FPGUIHANDLEEVENT    fpHandleFunc;
    HEARSAY_BTN2_T,
    (HEARSAY_BTN7_CMD+(HEARSAY_BTN22_KEY<<16)),
//	('w' + ('w' << 16)),
    0,                                      // INT      nCtrlParam3;
    0,                                      // INT      nCtrlParam4;

#if 0
    //----------------------
    GUI_RESERVE_MARK,                       // UINT     uReserveMark;
    HEARSAY_BTN3_X,                         // INT16    nX;
    HEARSAY_BTN3_Y,                         // INT16    nY;
    HEARSAY_BTN3_W,                         // UINT16   uWidth;
    HEARSAY_BTN3_H,                         // UINT16   uHeight;
    (FPGUIHANDLEEVENT)HearSayBar3Proc,    // FPGUIHANDLEEVENT    fpHandleFunc;
    HEARSAY_BTN3_T,
    (HEARSAY_BTN3_CMD+(HEARSAY_BTN3_KEY<<16)),
    0,                                      // INT      nCtrlParam3;
    0,                                      // INT      nCtrlParam4;
#else
    //----------------------
    GUI_RESERVE_MARK,                       // UINT     uReserveMark;
    HEARSAY_BTN3_X,                         // INT16    nX;
    HEARSAY_BTN3_Y,                         // INT16    nY;
    HEARSAY_BTN3_W,                         // UINT16   uWidth;
    HEARSAY_BTN3_H,                         // UINT16   uHeight;
    (FPGUIHANDLEEVENT)HearSayBar2Proc,    // FPGUIHANDLEEVENT    fpHandleFunc;
    HEARSAY_BTN3_T,
    (HEARSAY_BTN2_CMD+(HEARSAY_BTN3_KEY<<16)),
//	('E' + ('E' << 16)),
    0,                                      // INT      nCtrlParam3;
    0,                                      // INT      nCtrlParam4;

    GUI_RESERVE_MARK,                       // UINT     uReserveMark;
    HEARSAY_BTN3_X,                         // INT16    nX;
    HEARSAY_BTN3_Y,                         // INT16    nY;
    HEARSAY_BTN3_W,                         // UINT16   uWidth;
    HEARSAY_BTN3_H,                         // UINT16   uHeight;
    (FPGUIHANDLEEVENT)HearSayBar2Proc,    // FPGUIHANDLEEVENT    fpHandleFunc;
    HEARSAY_BTN3_T,
    (HEARSAY_BTN2_CMD+(HEARSAY_BTN33_KEY<<16)),
//	('e' + ('e' << 16)),
    0,                                      // INT      nCtrlParam3;
    0,                                      // INT      nCtrlParam4;
#endif
    //=============================================
    GUI_RESERVE_MARK,                       // UINT     uReserveMark;
	HEARSAY_BTN4_X,                         // INT16    nX;
    HEARSAY_BTN4_Y,                         // INT16    nY;
    HEARSAY_BTN4_W,                         // UINT16   uWidth;
    HEARSAY_BTN4_H,                         // UINT16   uHeight;
    (FPGUIHANDLEEVENT)HearSayBar4Proc,     // FPGUIHANDLEEVENT    fpHandleFunc;
    HEARSAY_BTN4_T,
    (HEARSAY_BTN4_CMD+(HEARSAY_BTN4_KEY<<16)),
//	('R' + ('R' << 16)),
    0,                                      // INT      nCtrlParam3;
    0,                                      // INT      nCtrlParam4;

    GUI_RESERVE_MARK,                       // UINT     uReserveMark;
	HEARSAY_BTN4_X,                         // INT16    nX;
    HEARSAY_BTN4_Y,                         // INT16    nY;
    HEARSAY_BTN4_W,                         // UINT16   uWidth;
    HEARSAY_BTN4_H,                         // UINT16   uHeight;
    (FPGUIHANDLEEVENT)HearSayBar4Proc,     // FPGUIHANDLEEVENT    fpHandleFunc;
    HEARSAY_BTN4_T,
    (HEARSAY_BTN4_CMD+(HEARSAY_BTN44_KEY<<16)),
//	('r' + ('r' << 16)),
    0,                                      // INT      nCtrlParam3;
    0,                                      // INT      nCtrlParam4;
    //----------------------
    NULL,                                   // 结束符
};

/****************************************************************************/
/* FUNCTION:   INT ApComHearSay(INT *pRet,const char *pTitle, UINT8 *pFile)*/
/* DESCRIPTION:运行桌面GUI界面                                             */
/* INPUTS:     nParam                                                      */
/*              Pointer to                                                  */
/* OUTPUTS:    NONE                                                        */
/* RETURN:     NONE                                                        */
/****************************************************************************/
/*    NAME         DATE               REMARKS                               */
/* ==========  ============   ==============================================*/
/*   DennyHan    2006-01-26          First Issue                            */
/****************************************************************************/
INT ApComHearSay(INT *pRet,const char *pTitle, UINT8 *pFile)
{
INT			nRet;

#if 0
	ApComHSTest(&nRet,pTitle,pFile);
#endif
	memset(&g_RrParam,0,sizeof(g_RrParam));

	g_RrParam.pTitle=(const UINT8*)pTitle;
    g_RrParam.pFile=(UINT8*)pFile;
    g_RrParam.nApRet=-1;

    // if 同步教材
	g_RrParam.bSyncMtlEntry = FALSE;
    if( (stricmp((char*)pTitle,(const char*)"同步教材"))==0)
    {
        g_RrParam.bSyncMtlEntry = TRUE;
    }

    //==================================
	HearsayHook_DisableLcdClose();
	HearsayHook_DisableBkgndPlay();
	//=======================================
	nRet=EXIT_CODE_NORMAL;
	if (ApHearsayIniParam())
	{
        // 运行GUI
		nRet = RunAp( (APGUI_STRUCT*)g_aHearSayGui);

		// Release temp buffer
		if (g_RrParam.pTBuf)
		{
			MemFree(g_RrParam.pTBuf);
		}
	}
	//=======================================
    *pRet = g_RrParam.nApRet;

	HearsayHook_EnableBkgndPlay();
	HearsayHook_EnableLcdClose();
    return nRet;
}


// HearSay应用各事件处理函数跳转表
const APEV_HANDLE_TABLE g_aHearSayEvTable[] =
{
    {EVENT_DRAW,        (FPGUIHANDLEEVENT)HearSayEvent_Draw      },
    {EVENT_INITIALIZE,  (FPGUIHANDLEEVENT)HearSayEvent_Initialize},
    {EVENT_DESTROY,     (FPGUIHANDLEEVENT)HearSayEvent_Destroy   },
	{EVENT_VOICE,		(FPGUIHANDLEEVENT)HearSayEvent_Voice    },
	{EVENT_CMDEXP,		(FPGUIHANDLEEVENT)HearSayEvent_BrowserEx},
    {NULL,              NULL}
};

const APEV_HANDLE_TABLE_EX g_aHearSayEvTableEx[] =
{
    {EVENT_TIMER,       APHS_TIMERID,       (FPGUIHANDLEEVENT)HearSayEvent_TimerPolling},

    {EVENT_KEY,			MVK_ENTER,			(FPGUIHANDLEEVENT)HearSayEvent_KeyEnter},
    {EVENT_KEY,			MVK_ESC,			(FPGUIHANDLEEVENT)HearSayEvent_KeyEsc},

    {EVENT_KEY,         MVK_UP,             (FPGUIHANDLEEVENT)HearSayEvent_KeyUp},
    {EVENT_KEYREPEAT,   MVK_UP,             (FPGUIHANDLEEVENT)HearSayEvent_KeyUp},
    {EVENT_KEYUP,       MVK_UP,             (FPGUIHANDLEEVENT)HearSayEvent_KeyUp},

    {EVENT_KEY,         MVK_DOWN,           (FPGUIHANDLEEVENT)HearSayEvent_KeyUp},//Down},
    {EVENT_KEYREPEAT,   MVK_DOWN,           (FPGUIHANDLEEVENT)HearSayEvent_KeyUp},//Down},
    {EVENT_KEYUP,       MVK_DOWN,           (FPGUIHANDLEEVENT)HearSayEvent_KeyUp},//Down},

    {EVENT_KEY,         MVK_LEFT,           (FPGUIHANDLEEVENT)HearSayEvent_KeyLeftRight},
    {EVENT_KEYREPEAT,   MVK_LEFT,           (FPGUIHANDLEEVENT)HearSayEvent_KeyLeftRight},
////    {EVENT_KEYUP,       MVK_LEFT,           (FPGUIHANDLEEVENT)HearSayEvent_KeyLeftRight},

    {EVENT_KEY,         MVK_RIGHT,          (FPGUIHANDLEEVENT)HearSayEvent_KeyLeftRight},
    {EVENT_KEYREPEAT,   MVK_RIGHT,          (FPGUIHANDLEEVENT)HearSayEvent_KeyLeftRight},
////    {EVENT_KEYUP,       MVK_RIGHT,          (FPGUIHANDLEEVENT)HearSayEvent_KeyLeftRight},

    {EVENT_KEY,         MVK_PAGEUP,         (FPGUIHANDLEEVENT)HearSayEvent_KeyUp},//PgUp},
    {EVENT_KEYREPEAT,   MVK_PAGEUP,         (FPGUIHANDLEEVENT)HearSayEvent_KeyUp},//PgUp},
    {EVENT_KEYUP,       MVK_PAGEUP,         (FPGUIHANDLEEVENT)HearSayEvent_KeyUp},//PgUp},

    {EVENT_KEY,         MVK_PAGEDOWN,       (FPGUIHANDLEEVENT)HearSayEvent_KeyUp},//PgDn},
    {EVENT_KEYREPEAT,   MVK_PAGEDOWN,       (FPGUIHANDLEEVENT)HearSayEvent_KeyUp},//PgDn},
    {EVENT_KEYUP,       MVK_PAGEDOWN,       (FPGUIHANDLEEVENT)HearSayEvent_KeyUp},//PgDn},

    {EVENT_KEY,         'A',                (FPGUIHANDLEEVENT)HearSayEvent_KeyAB},

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -