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

📄 ui_dialog.s01

📁 MP3 整个 SDK
💻 S01
字号:
	NAME	ui_dialog(17)
	RSEG	COM_CTRL(0)
	EXTERN	ClearScreen
	EXTERN	PutS
	EXTERN	ResShowMultiString
	EXTERN	ResShowPic
	EXTERN	SetTextPos
	EXTERN	UpdateScreen
	EXTERN	ap_get_message
	EXTERN	ap_handle_hotkey
	EXTERN	ui_auto_update
	PUBLIC	ui_dialog
	EXTERN	?CLZ80B_4_04_L00
	EXTERN	?C_V_SWITCH_L06
	EXTERN	?BANK_CALL_DIRECT_L08
	EXTERN	?BANK_LEAVE_DIRECT_L08
	EXTERN	?BANK_FAST_LEAVE_L08
	EXTERN	?ENT_AUTO_DIRECT_L09
	RSEG	COM_CTRL
ui_dialog:
; 1.	/*
; 2.	*******************************************************************************
; 3.	*                ACTOS AP
; 4.	*        ap common lib, file/folder delete control file 
; 5.	*
; 6.	*        (c) Copyright, Actions Co,Ld.                             
; 7.	*             All Right Reserved                          
; 8.	*
; 9.	*  $Id: ui_dialog.c,v 1.1.1.1 2006/05/22 03:24:01 selina Exp $
; 10.	*******************************************************************************
; 11.	*/ 
; 12.	#pragma codeseg(COM_CTRL)
; 13.	
; 14.	#include "ap_music.h"
; 15.	
; 16.	/*
; 17.	//===================================================================
; 18.	接口: int ui_dialog(dialog_t *dialog, int string_id)
; 19.	input:
; 20.	    typedef struct
; 21.	    {
; 22.	    WORD HeadIcon;//头部图标的ID值
; 23.	    WORD HeadStr;//头部信息的ID值
; 24.	    char *string;//信息显示区的显示的字串首址
; 25.	    }dialog_t;
; 26.	
; 27.	    dialog_t dialog: 要显示的对话框的信息
; 28.	    int string_id: 显示用的语言
; 29.	
; 30.	output:
; 31.	    return int:  NULL: 选中了OK
; 32.	                 RESULT_IGNORE: 时间到了未按确定,按了PLAY键,或选中了NO
; 33.	                 其他非0的值: 当热键返回    
; 34.	//===================================================================
; 35.	*/
; 36.	
; 37.	int ui_dialog(dialog_t *dialog,int string_id)
; 38.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65532
	PUSH	IY
	LD	L,(IX+2)
	LD	H,(IX+3)
	PUSH	HL
	POP	IY
; 39.	    char key;
; 40.	    bool Selectflag = FALSE; //false(NO); true(YES)
; 41.	    bool need_draw = TRUE;
; 42.	    
; 43.	//    SetAsciiFont(FONT_TYPE_LARGE); //ASCII码用大字体
; 44.	    ClearScreen(NULL);
	LD	DE,0
	CALL	LWRD ClearScreen
; 45.	    ui_auto_update = FALSE;  
	XOR	A
	LD	(ui_auto_update),A
; 46.	
; 47.	
; 48.	    //显示要求显示的信息
; 49.	    if (dialog->string != NULL)
	LD	(IX-3),A
	LD	A,(IY+4)
	OR	(IY+5)
	JR	Z,?0003
?0002:
; 50.	    {
; 51.	        SetTextPos(0, 16);
	LD	C,16
	LD	E,0
	CALL	LWRD SetTextPos
; 52.	        PutS(dialog->string, -1);
	LD	C,255
	LD	E,(IY+4)
	LD	D,(IY+5)
	CALL	LWRD PutS
?0003:
; 53.	    }
; 54.	    
; 55.	    //显示头部图标    
; 56.	    if (dialog->HeadIcon != NULL)
	LD	A,(IY+0)
	OR	(IY+1)
	JR	Z,?0005
?0004:
; 57.	    {
; 58.	        ResShowPic(dialog->HeadIcon, 0, 0);
	LD	C,0
	PUSH	BC
	LD	E,(IY+0)
	LD	D,(IY+1)
	CALL	LWRD ?0030
	POP	AF
?0005:
; 59.	    }
; 60.	
; 61.	    //显示头部的信息
; 62.	    if (dialog->HeadStr != NULL)
	LD	A,(IY+2)
	OR	(IY+3)
	JR	Z,?0007
?0006:
; 63.	    {
; 64.	        ResShowMultiString(dialog->HeadStr, string_id, 16, 0);            
	LD	C,0
	PUSH	BC
	LD	C,16
	PUSH	BC
	LD	C,(IX+4)
	LD	E,(IY+2)
	LD	D,(IY+3)
	LD	A,BYTE3 ResShowMultiString
	LD	HL,LWRD ResShowMultiString
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
	POP	AF
?0007:
; 65.	    }
; 66.	
; 67.	    //显示选择按钮(默认N0)
; 68.	    ResShowPic(DELNO,100,0);
	LD	C,0
	PUSH	BC
	CALL	LWRD ?0031
	POP	AF
?0009:
; 69.	
; 70.	    while(1)
; 71.	    {
; 72.	        UpdateScreen(NULL);
	LD	DE,0
	CALL	LWRD UpdateScreen
; 73.	        key = ap_get_message();                          //获取消息
	CALL	LWRD ap_get_message
; 74.	        
; 75.	        switch (key)
	LD	E,A
	CALL	LWRD ?C_V_SWITCH_L06
	DEFW	7
	DEFB	5
	DEFB	6
	DEFB	30
	DEFB	33
	DEFB	48
	DEFB	69
	DEFB	70
	DEFW	?0021
	DEFW	?0012
	DEFW	?0012
	DEFW	?0016
	DEFW	?0016
	DEFW	?0016
	DEFW	?0012
	DEFW	?0012
?0012:
; 76.	        {
; 77.	        case AP_KEY_NEXT:                            //YES和NO之间切换
; 78.	        case AP_KEY_PREV:
; 79.	        case AP_KEY_NEXT | AP_KEY_HOLD:
; 80.	        case AP_KEY_PREV | AP_KEY_HOLD:
; 81.	            if(Selectflag)
	XOR	A
	OR	(IX-3)
	JR	Z,?0014
?0013:
; 82.	            {
; 83.	                Selectflag = FALSE;
; 84.	                ResShowPic(DELNO,100,0);
	LD	C,0
	PUSH	BC
	CALL	LWRD ?0031
	POP	AF
	LD	(IX-3),0
; 85.	            }
; 86.	            else
	JR	?0009
?0014:
; 87.	            {
; 88.	                Selectflag = TRUE;
; 89.	                ResShowPic(DELYES,100,0);
	LD	C,A
	PUSH	BC
	LD	C,100
	LD	DE,2
	CALL	LWRD ?0030
	POP	AF
	LD	(IX-3),1
?0015:
; 90.	            }
; 91.	            break;
	JR	?0009
?0016:
; 92.	        
; 93.	        case AP_KEY_MODE | AP_KEY_UP:
; 94.	            if(Selectflag)            
?0017:
; 95.	            {//YES时按下MODE键的处理
; 96.	            }
; 97.	            else
?0018:
; 98.	            {    
; 99.	                return RESULT_IGNORE;//NO时按下MODE键的处理
; 100.	            }
?0019:
?0020:
; 101.	        
; 102.	        case AP_MSG_WAIT_TIMEOUT://8秒退出    
; 103.	        case AP_KEY_PLAY | AP_KEY_UP:
; 104.	             return RESULT_IGNORE;
	LD	HL,52
; 105.	        
; 106.	        
; 107.	        default:
	JR	?0027
?0021:
; 108.	            key=ap_handle_hotkey(key);//热键处理
	CALL	LWRD ap_handle_hotkey
	LD	(IX-4),A
; 109.	            if(key == RESULT_REDRAW)
	CP	50
	JR	Z,?0009
?0022:
; 110.	            {
; 111.	                need_draw=TRUE;
?0023:
; 112.	            }
; 113.	            else if(key!=0)
	XOR	A
	OR	(IX-4)
	JR	Z,?0009
?0025:
; 114.	            {
; 115.	                return key;                                              
	LD	L,A
	LD	H,0
; 116.	            }
?0027:
	POP	IY
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
?0031:
	LD	C,100
	LD	DE,1
?0030:
	LD	A,BYTE3 ResShowPic
	LD	HL,LWRD ResShowPic
	JP	LWRD ?BANK_CALL_DIRECT_L08
?0026:
?0024:
?0011:
; 117.	        }//switch(key)            
; 118.	    }//while(1)
; 119.	}
; 120.	
	END

⌨️ 快捷键说明

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