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

📄 utilmenu.c

📁 Pro.TOOLKIT.Wildfire插件设计.配套光盘-141M.zip
💻 C
📖 第 1 页 / 共 2 页
字号:
/*====================================================================*\FILE    : UtilMenu.cPURPOSE : Utility functions used when working with menusHISTORY..DATE      BUILD   AUTHOR   MODIFICATIONS10 Oct 96 H-01-14 Igor     $$1	Created23-Nov-96 H-01-18 mgs      $$2	Added ProUtilMenuKill() removed pd stuff03-Dec-96 H-01-19 Steve    $$3  changed utilassign proto02-Feb-98 H-03-38 Pavel    $$4  Added ProUtilMenubuttonHighlight, ...Activate14-Jul-98 I-01-14 Pavel    $$5  Added ProUtilMenuIntValueSelect,..StringsFree11-Aug-98 I-01-16 Pavel	   $$6  Added ProUtilMenuStringManySelect28-Aug-98 I-01-17 Alexey   $$7  Use PRO_B_TRUE instead of 1 in 				ProMenuDatamodeSet01-Jun-99 I-03-11 mka      $$8  More includes                                \*====================================================================*/#ifndef lint     static char UtilMenu_c [] = "@(#)UtilMenu.c	1.2 11/26/96";#endif /*--------------------------------------------------------------------*\Pro/Toolkit includes -- include this first\*--------------------------------------------------------------------*/#include <ProToolkit.h>#include <ProArray.h>#include <ProMenu.h>/*--------------------------------------------------------------------*\Application macros\*--------------------------------------------------------------------*/#include <TestError.h>#include <UtilMenu.h>/*====================================================================*\FUNCTION : ProUtilAssignPURPOSE  : assigns option to a member (being dereferenced & casted to int)	   Can be used in promenu_on_button. The menu will diappear after 	   the chosen menu button is pushed.\*====================================================================*/int ProUtilAssign(ProAppData p_member, int option){    ProError status;    *((int *)p_member) = option;    status = ProMenuDelete();    TEST_CALL_REPORT("ProMenuDelete","ProUtilAssign", status,    				status != PRO_TK_NO_ERROR);    return (0);}/*====================================================================*\FUNCTION : ProUtilMenuKillPURPOSE  : Deletes the number of menus given.\*====================================================================*/int ProUtilMenuKill(ProAppData p_member, int n_menus){    ProError status;    int      i;    for (i = 0; i < n_menus; i++)    {    status = ProMenuDelete();    TEST_CALL_REPORT("ProMenuDelete","ProUtilMenuKill", status,    				status != PRO_TK_NO_ERROR);    }    return (0);}/*=============================================================*\  FUNCTION: ProUtilMenubuttonActivate  PURPOSE:  Activate/Deactivate button\*=============================================================*/ProError ProUtilMenubuttonActivate(    char    *menu,	    /* In : the menu name */    char    *menubutton,    /* In : the menubutton name */    int	    enable)	    /* In : 0 - dis, 1 - en */{    ProError err;    if (enable)    {	err = ProMenubuttonActivate(menu, menubutton);	TEST_CALL_REPORT("ProMenubuttonActivate()",		 "ProUtilMenubuttonActivate()", err, err != PRO_TK_NO_ERROR);    }    else    {	err = ProMenubuttonDeactivate(menu, menubutton);	TEST_CALL_REPORT("ProMenubuttonDeactivate()",		 "ProUtilMenubuttonActivate()", err, err != PRO_TK_NO_ERROR);    }    return (err);} /*=============================================================*\  FUNCTION: ProUtilMenubuttonHighlight  PURPOSE:  Highlight / Unhighlight button\*=============================================================*/ProError ProUtilMenubuttonHighlight(    char    *menu,	    /* In : the menu name */    char    *menubutton,    /* In : the menubutton name */    int	    enable)	    /* In : 0 - dis, 1 - en */{    ProError err;    if (enable)    {	err = ProMenubuttonHighlight(menu, menubutton);	TEST_CALL_REPORT("ProMenubuttonHighlight()",		 "ProUtilMenubuttonActivate()", err, err != PRO_TK_NO_ERROR);    }    else    {	err = ProMenubuttonUnhighlight(menu, menubutton);	TEST_CALL_REPORT("ProMenubuttonUnhighlight()",		 "ProUtilMenubuttonActivate()", err, err != PRO_TK_NO_ERROR);    }    return (err);} /*=============================================================*\  FUNCTION: ProUtilMenubuttonDeleteWithStatus  PURPOSE:  Call DeleteWithStatus func\*=============================================================*/int ProUtilMenubuttonDeleteWithStatus(    ProAppData appdata,    int status){    ProError err;    err = ProMenuDeleteWithStatus(status);    TEST_CALL_REPORT("ProMenuDeleteWithStatus()",	"ProUtilMenubuttonDeleteWithStatus()", err, err != PRO_TK_NO_ERROR);    return (0);}/*============================================================================*\ Function:	ProUtilMenuIntValueSelect Purpose:       Create menu/Select int value/Close menu Return:	PRO_TK_NO_ERROR if value selected, or PRO_TK_GENERAL_ERROR \*============================================================================*/ProError ProUtilMenuIntValueSelect(    ProUtilMenuButtons *buttons_array, /* In : The menu button array */    int *output_value){    ProError err;    int i, n_buttons, menu_id;    wchar_t **w_menu_buttons;        for (n_buttons = 0; buttons_array[n_buttons].button[0]!='\0'; n_buttons++);    if (n_buttons <= 1)	return PRO_TK_NO_ERROR;	    ProUtilMenuStringsAlloc(&w_menu_buttons);    for (i=1; i<n_buttons; i++)	ProUtilMenuStringsStrAdd(&w_menu_buttons, buttons_array[i].button);    ProMenuFromStringsRegister ( buttons_array[0].button, NULL, w_menu_buttons,	NULL, NULL, &menu_id);    ProUtilMenuStringsFree(&w_menu_buttons);    for (i=0; i<n_buttons; i++)    {	if (buttons_array[i].special_flag & 	    (TEST_CALL_PRO_MENU_DELETE | TEST_CALL_PRO_MENU_HOLD))	    ProMenubuttonActionSet(buttons_array[0].button, 		buttons_array[i].button, (ProMenubuttonAction)		(buttons_array[i].special_flag & TEST_CALL_PRO_MENU_DELETE ?		ProMenuDelete : ProMenuHold), NULL, 0);	else	    ProMenubuttonActionSet(buttons_array[0].button, 		buttons_array[i].button, (ProMenubuttonAction)		ProUtilMenubuttonDeleteWithStatus, NULL, 		buttons_array[i].value);    }    for (i=1; i<n_buttons; i++)    {	if (buttons_array[i].special_flag & TEST_CALL_PRO_MENUBUTTON_DELETE)	    ProMenubuttonDelete(buttons_array[0].button, 		buttons_array[i].button, &menu_id);     }    err = ProMenuCreate( PROMENUTYPE_MAIN, buttons_array[0].button, &menu_id );    for (i=1; i<n_buttons; i++)    {	if (buttons_array[i].special_flag &	    (TEST_CALL_PRO_MENU_ACTIVATE | TEST_CALL_PRO_MENU_DEACTIVATE))	    ProUtilMenubuttonActivate(buttons_array[0].button, 		buttons_array[i].button, 		buttons_array[i].special_flag & TEST_CALL_PRO_MENU_ACTIVATE);	if (buttons_array[i].special_flag &	    (TEST_CALL_PRO_MENU_HIGHLIGHT | TEST_CALL_PRO_MENU_UNHIGHLIGHT))	    ProUtilMenubuttonActivate(buttons_array[0].button, 		buttons_array[i].button, 		buttons_array[i].special_flag & TEST_CALL_PRO_MENU_HIGHLIGHT);    }    err = ProMenuProcess(buttons_array[0].button, output_value);    return (err);}/*============================================================================*\ Function:	ProUtilMenuStringsAlloc Purpose:       Alloc memory for array of wchar_t* used in ProMenu functions\*============================================================================*/ProError ProUtilMenuStringsAlloc(    wchar_t ***w_ptr){    ProError err;    static wchar_t  w_epmty[] = {'\0'};    wchar_t *w_p = w_epmty;    err = ProArrayAlloc(0, sizeof(wchar_t*), 1, (ProArray*)w_ptr);    if (err == PRO_TK_NO_ERROR)	err = ProArrayObjectAdd((ProArray*)w_ptr, 0, 1, &w_p);    return (err);}/*============================================================================*\ Function:	ProUtilMenuStringsStrAdd Purpose:       Alloc memory and add string to MenuStrings array\*============================================================================*/ProError ProUtilMenuStringsStrAdd(    wchar_t ***w_ptr,    char *str){    ProError err;    wchar_t *w_p;    int len, n_str;    len = strlen(str);    w_p = (wchar_t*)calloc(len + 1, sizeof(wchar_t));    if (w_p == NULL)

⌨️ 快捷键说明

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