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

📄 mmismsbroadcast.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
	}
}

#endif
/*********************************************************************
**********************************************************************

			M_CB_TOP_CONS	 DYNAMIC MENU WINDOW. DECLARATION

*********************************************************************
**********************************************************************/
typedef struct
{
    /* administrative data */

    T_MMI_CONTROL   mmi_control;
    T_MFW_HND       win;
    SHORT           id;
    T_MFW_HND       parent;

    /* associated handlers */

    /* internal data */
    T_CB_index_param CB_index_param; /* parameter for called submenus (index in list) */
    MfwMnuItem      menuItems[MAX_MIDS]; /* List=CBTopics */
    ListMenuData    list_menu_data;
} T_M_CB_TOP_CONS;
typedef struct
{
    /* administrative data */

    T_MMI_CONTROL   mmi_control;
    T_MFW_HND       win;
    SHORT           id;
    T_MFW_HND       parent;
    T_MFW_HND       menu;
    T_MFW_HND       kbd;
     T_CB_index_param CB_index_param; /* parameter for called submenus (index in list) */
 /* internal data */
} T_M_CB_MID;
static T_MFW_HND smscb_M_CB_TOP_CONS_create (T_MFW_HND parent);
static void smscb_M_CB_TOP_CONS_destroy (T_MFW_HND window);
void smscb_M_CB_MID_DEL_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * dummy);
static void smscb_M_CB_TOP_CONS_listmnu_cb (T_MFW_HND * win, ListMenuData * ListData);
void ExeDelete_infoscreen_cb (T_MFW_HND win, USHORT identifier, UBYTE reason);
static MfwMnuAttr smscb_M_CB_TOP_CONSAttrib =
{
    0,
    &smscb_M_CB_TOP_CONSArea,
    MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu       */
    -1,                                 /* use default font         */
    NULL,                               /* with these items         */
    0                                   /* number of items     */
};
#if 0
/*******************************************************************************

 $Function:    	smscb_M_CB_MID

 $Description:	

 $Returns:		none.

 $Arguments:	
 
*******************************************************************************/
static int smscb_M_CB_MID(MfwMnu* m, MfwMnuItem* i)
{
    T_MFW_HND       win      = mfwParent((MfwHdr *)mfw_header());

    //	selection "Consult": menucreate M_CB_TOP_CONS
    return (int)smscb_M_CB_MID_start (win, NULL);
}

/*******************************************************************************

 $Function:    	smscb_M_CB_MID_start

 $Description:	

 $Returns:		

 $Arguments:	
 
*******************************************************************************/
T_MFW_HND smscb_M_CB_MID_start(T_MFW_HND parent_window, void *dummy)
{
    T_MFW_HND win;

    TRACE_FUNCTION ("smscb_M_CB_MID_start()");

    win = smscb_M_CB_MID_create (parent_window);

    if (win NEQ NULL)
	{
	    SEND_EVENT (win, E_INIT, smscb_CB_MID, NULL);
	}
    return win;
}

/*******************************************************************************

 $Function:    	smscb_M_CB_MID_create

 $Description:	

 $Returns:		

 $Arguments:	
 
*******************************************************************************/
static T_MFW_HND smscb_M_CB_MID_create(MfwHnd parent_window)
{
    T_M_CB_MID    * data = (T_M_CB_MID *)ALLOC_MEMORY (sizeof (T_M_CB_MID));
    T_MFW_WIN  * win;
    TRACE_FUNCTION ("smscb_M_CB_TOP_CONS_create()");
    /*
     * Create window handler
     */
    data->win =win_create (parent_window, 0, 0, NULL);
    if (data->win EQ NULL)
	{
	    return NULL;
	}
    /* 
     * connect the dialog data to the MFW-window
     */
    data->mmi_control.dialog = (T_DIALOG_FUNC)smscb_M_CB_MID_exec_cb;
    data->mmi_control.data   = data;
    win                      = ((T_MFW_HDR *)data->win)->data;
    win->user                = (void *)data;
    data->parent             = parent_window;
    /*
     * return window handle
     */
    winShow(data->win);
    return data->win;
}

/*******************************************************************************

 $Function:    	smscb_M_CB_MID_exec_cb

 $Description:	

 $Returns:		

 $Arguments:	
 
*******************************************************************************/
void smscb_M_CB_MID_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * dummy)
{
    T_MFW_WIN         * win_data = ((T_MFW_HDR *) win)->data;
    T_M_CB_MID   * data = (T_M_CB_MID *)win_data->user;
    T_MFW_HND         * l_parent;
    SHORT               l_id;
    UBYTE i;
    char* title;
    TRACE_FUNCTION ("smscb_M_CB_MID_exec_cb()");
    
    switch (event)
	{
	case E_INIT:
	   	 data->id = value;
	    	/* initialization of the dialog data */
	   	 /* create the dialog handler */
	   	 data->kbd = kbdCreate(data->win,KEY_ALL, (MfwCb)Smscb_M_CB_MID_kbd_cb);
		 title = (char *) MmiRsrcGetText(TxtCBChanel);  // get the editor title text
    	 data->menu = mnuListCreate(data->win,&smscb_M_CB_MIDAttrib, E_MNU_ESCAPE, (MfwCb)smscb_M_CB_MID_mnu_cb,title);
    	 mnuLang(data->menu,mainMmiLng);
    		/* put the (new) dialog window on top of the window stack */
    		mnuUnhide(data->menu);
	    	//listCreate (data->win,&smscb_M_CB_ACTAttrib, E_MNU_ESCAPE, (ListCbFunc)smscb_M_CB_ACT_mnu_cb); // c020 rsa
 	   	 winShow(win);
	break;
	    /* NOBREAK */
	case E_RETURN: 
		mnuUpdate(data->menu );
		break;
	case E_EXIT: /* terminate EXIT from CB_EDT_MIDEDT|M_CB_TOP_CONS_SEL here */
	case E_ABORT: /* defaultreaction */
	    TRACE_EVENT ("ABORT in M_CB_MID_exec_cb");	    
	    l_parent = data->parent;
	    l_id = data->id;
	    smscb_M_CB_MID_destroy(data->win);
	    SEND_EVENT (l_parent, event, l_id, NULL); /* forward event to parent */
	    break;
	default:
	    return;
	}
}


/*******************************************************************************

 $Function:    	smscb_M_CB_MID_mnu_cb

 $Description:

 $Returns:		none.

 $Arguments:	
 
*******************************************************************************/
// c020 rsa
static void smscb_M_CB_MID_mnu_cb (MfwEvt e, MfwMnu *m)
    /* smscb_M_CB_ACT menu event handler */
{
    T_MFW_HND    win  = mfwParent(mfw_header());
    T_MFW_WIN  * win_data = ((T_MFW_HDR *)win)->data;
    T_M_CB_MID      * data = (T_M_CB_MID *)win_data->user;
    T_MFW_HND  * l_parent;

    TRACE_FUNCTION ("smscb_M_CB_MID_mnu_cb()");

    switch (e)
        {
	case E_MNU_SELECT:
	    //on SELECT: menucreate 
	    break;
	case E_MNU_ESCAPE: /* back to previous menu */
	    l_parent = data->parent;
	    smscb_M_CB_MID_destroy(data->win);
	    SEND_EVENT (l_parent, E_RETURN, data->id, NULL);
	    break;
	default:
	    return;
        }
    return;
}

/*******************************************************************************

 $Function:    	Smscb_M_CB_ACT_kbd_cb

 $Description:	Exec callback function for the Option window
 			
 $Returns:		status

 $Arguments:	e - keyboard event Id
 				k - keyboard data 
*******************************************************************************/

static int Smscb_M_CB_MID_kbd_cb (MfwEvt e, MfwKbd *k)
    /* SmsRead_R_OPT keyboard event handler */
{
    T_MFW_HND    win  = mfwParent(mfw_header());
    T_MFW_WIN  * win_data = ((T_MFW_HDR *)win)->data;
    T_M_CB_MID   * data = (T_M_CB_MID *)win_data->user;

    TRACE_FUNCTION ("Smscb_M_CB_MID_kbd_cb()");

	    switch (k->code)
		{
		case KCD_MNUUP: /* highlight previous entry */
		    mnuUp(data->menu);
		    break;
		case KCD_MNUDOWN: /* highlight next entry */
		    mnuDown(data->menu);
		    break;
		case KCD_LEFT: /* activate this entry */
		    mnuSelect(data->menu);
		    break;
		case KCD_HUP: /* back to previous menu */
		case KCD_RIGHT: /* back to previous menu */
		    mnuEscape(data->menu);
		    break;
		default: /* no response to all other keys */
		    return MFW_EVENT_CONSUMED;
		}
    return MFW_EVENT_CONSUMED;
}

/*******************************************************************************

 $Function:    	smscb_M_CB_MID_destroy

 $Description:	

 $Returns:		none.

 $Arguments:	
 
*******************************************************************************/
static void smscb_M_CB_MID_destroy(MfwHnd own_window)
{
    T_MFW_WIN * win_data;
    T_M_CB_MID     * data;

    TRACE_FUNCTION ("smscb_M_CB_MID_destroy()");

    if (own_window)
	{
	    win_data = ((T_MFW_HDR *)own_window)->data;
	    data = (T_M_CB_MID *)win_data->user;

	    if (data)
		{
		    /*
		     * Delete WIN handler
		     */ 
		    win_delete (data->win);
		    /*     
		     * Free Memory
		     */
		    FREE_MEMORY ((void *)data, sizeof (T_M_CB_MID));
		}
	    else
		{
		    TRACE_EVENT ("smscb_M_CB_MID_destroy() called twice");
		}
	}
}
#endif
/*********************************************************************
**********************************************************************

		M_CB_TOP	     DYNAMIC MENU WINDOW. CONTENTS BEHAVIOUR

*********************************************************************
**********************************************************************/
/*******************************************************************************

 $Function:    	smscb_M_CB_MID_DEL

 $Description:	

 $Returns:		none.

 $Arguments:	
 
*******************************************************************************/
int smscb_M_CB_MID_DEL(MfwMnu* m, MfwMnuItem* i)
{
    T_MFW_HND       win      = mfwParent((MfwHdr *)mfw_header());
    smscb_win_stat=smscb_CH_DEL;

    //	selection "Consult": menucreate M_CB_TOP_CONS
    return (int)smscb_M_CB_TOP_CONS_start (win, NULL);
}
/*******************************************************************************

 $Function:    	smscb_M_CB_TOP_ExeModify

 $Description:	

 $Returns:		

 $Arguments:	
 
*******************************************************************************/
int smscb_CB_EDT_ExeModify(MfwMnu* m, MfwMnuItem* i)
{
    T_MFW_HND       win      = mfwParent((MfwHdr *)mfw_header());

    //	selection "Consult": menucreate M_CB_TOP_CONS
    //set the state for distinguish the left key's function
    smscb_win_stat=smscb_CH_MODIFY;
    return (int)smscb_M_CB_TOP_CONS_start (win, NULL);
}
/*********************************************************************
**********************************************************************

			M_CB_TOP_CONS	DYNAMIC MENU WINDOW. IMPLEMENTATION

*********************************************************************
**********************************************************************/

/*******************************************************************************

 $Function:    	smscb_M_CB_TOP_CONS_start

 $Description:	

 $Returns:		

 $Arguments:	
 
*******************************************************************************/
T_MFW_HND smscb_M_CB_TOP_CONS_start(T_MFW_HND parent_window, void *dummy)
{
    T_MFW_HND win;

    TRACE_FUNCTION ("smscb_M_CB_TOP_CONS_start()");

    win = smscb_M_CB_TOP_CONS_create (parent_window);

    if (win NEQ NULL)
	{
	    SEND_EVENT (win, E_INIT, smscb_M_CB_TOP_CONS_ID, NULL);
	}
    return win;
}


/*******************************************************************************

 $Function:    	smscb_M_CB_TOP_CONS_create

 $Description:	

 $Returns:		

 $Arguments:	
 
*******************************************************************************/
static T_MFW_HND smscb_M_CB_TOP_CONS_create(MfwHnd parent_window)
{
    T_M_CB_TOP_CONS * data = (T_M_CB_TOP_CONS *)ALLOC_MEMORY (sizeof (T_M_CB_TOP_CONS));
    T_MFW_WIN  * win;

    TRACE_FUNCTION ("smscb_M_CB_TOP_CONS_create()");

    /*
     * Create window handler
     */
    data->win =win_create (parent_window, 0, 0, NULL);
    if (data->win EQ NULL)
	{
	    return NULL;
	}

⌨️ 快捷键说明

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