亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? menuutil.c

?? CVI例程
?? C
?? 第 1 頁 / 共 5 頁
字號:
/*--------------------------------------------------------------*//*  MENUUTIL.C                                                  *//*--------------------------------------------------------------*//*--------------------------------------------------------------*//* #include                                                     *//*--------------------------------------------------------------*/#ifdef WIN32  #include <windows.h>#endif#include "utility.h"#include "menuutil.h"/*--------------------------------------------------------------*//* #defines                                                     *//*--------------------------------------------------------------*/#define MAX_MENU_ITEM_LENGTH 32typedef struct menuInfo{    menuList handle;    int menuBarHandle;    int menuID;    int beforeMenuItemID;    int maxItems;    MenuListCallbackPtr callbackFunc;    int separator1;    int separator2;    int separator1ID;    int separator2ID;    int oneCheckItem;    int checkWhenAdded;    int allowDuplicates;    int preAppendShortCut;    ListType menuItemInfoList;} menuInfoRec; typedef struct menuItemInfo{    char  menuName[MAX_MENU_ITEM_LENGTH+1];    int   menuItemID;    void *callbackData;} menuItemInfoRec; static ListType sMenuInfoList = NULL;#if _CVI_DEBUG_static menuInfoRec * sMenuInfoPtr = NULL; // Global pointer for debug puposes#endif/*--------------------------------------------------------------*//* exported prototypes                                          *//*--------------------------------------------------------------*//*--------------------------------------------------------------*//* static prototypes                                            *//*--------------------------------------------------------------*/static int FindMenuInfoInList(ListType menuInfoList, menuList handle);static int FindMenuItemInfoFromMenuName(ListType menuInfoList, char *longName);static int FindMenuItemInfoFromMenuItemID(ListType menuInfoList, int menuItemID);static int UpdateMenuItems(menuInfoRec *menuInfoPtr);static int RemoveMenuList(menuInfoRec *menuInfoPtr);static int RemoveMenuListItem(menuInfoRec *menuInfoPtr, int index);static int UncheckAllCheckedItems(menuInfoRec *menuInfoPtr, int doNotUncheckFirstFound);static int RemoveDuplicates(menuInfoRec *menuInfoPtr);static int IniEx_PutRawStringListItem(IniText iniTextHandle, char *sectionName,                            char *tagPrefix, char *tagValue, int maxItems);#ifdef WIN32static int IniEx_ReadFromRegistry(IniText iniTextHandle, int rootKey, char *baseKeyName);static int IniEx_WriteToRegistry(IniText iniTextHandle, int rootKey, char *baseKeyName, int removeNonListTags);#endif    /*****************************************************//*  GenerateShortFileName()                          *//*                                                   *//*  Parameters:                                      *//*      output buffer to place short filename        *//*      input buffer with long filename              *//*      max characters to place in output bugger     *//*        (This does not include the ending NUL)     *//*  Return: pointer to outbuffer                     *//*                                                   *//*  Purpose: Routine to generate a short filename    *//*           from a long filename                    *//*                                                   *//*  Example:                                         *//*    LongName  = c:\dir1\dir2\dir3\file.txt         *//*    ShortName = c:\...dir3\file.txt                *//*                                                   *//*****************************************************/char * CVIFUNC MU_MakeShortFileName(    char *userOutBuf,     char *userInBuf,     int max){    int size, sizeOfFilename, sizeOfPrefix;    char *startOfFilename = NULL;    char *first = NULL;    static char outBuf[260];    char inBuf[260];    #ifdef _NI_mswin_    int byte=92; /* '\' */#else    int byte=47; /* '/' */#endif#ifdef _NI_mswin_    /* Windows - outbuf must at least be able to handle "x:\...\A... */    if (max<11) {                                  /*    01234567890 */        goto Error;    }   #endif    /* Use internal Out buffer if non supplied */    if (userOutBuf)         strcpy(outBuf, userOutBuf);            /* Verify input buffers */    if ( (!userInBuf) || (max < 1) ) {        goto Error;    }           if (userInBuf[0]==0) {          outBuf[0]=0;        goto Done;    } else         strcpy(inBuf, userInBuf);    /* We want to make the first drive letter upper case if using Windows */#ifdef _NI_mswin_    if ((inBuf[0]>96) && (inBuf[0]<123))            inBuf[0] = inBuf[0] - 32;#endif        /* If inbuf is smaller than max, just copy value into outbuf */     size = strlen(inBuf);    if (size<=max) {        strncpy(outBuf, inBuf, size);        outBuf[size] = 0;    } else {        /* Find just the filename and its size */           startOfFilename = strrchr (inBuf, byte); /* Last */        startOfFilename++;              sizeOfFilename = strlen(startOfFilename);                /* Find the first part that we want to keep */   #ifdef _NI_mswin_        sizeOfPrefix = 3;#else         /* Find first '\' before filename within max limit. */         first = strchr(&inBuf[2], byte);        if (!first)              sizeOfPrefix = 0;        else sizeOfPrefix = (first-inBuf+1);#endif        /* Copy the prefix ("x:\" or /xyz/) to outbuf */        strncpy (outBuf, inBuf, sizeOfPrefix);        outBuf[sizeOfPrefix]=0;        /* Copy "...\" to end of outbuf, and add NULL */#ifdef _NI_mswin_        strncpy(&outBuf[sizeOfPrefix], "...\\", 5);#else         strncpy(&outBuf[sizeOfPrefix], ".../", 5);#endif        /* If base filename is larger than max-7 just place what you can into outbuf with '...' on end */        if (sizeOfFilename>max-sizeOfPrefix-4) {            strncpy(&outBuf[sizeOfPrefix+4], startOfFilename, max-sizeOfPrefix-7);            /* Copy "..." to end of outbuf, and add NULL */            strncpy(&outBuf[max-3], "...", 4);        } else {            /* Find first '\' after prefix and before filename within max limit. */             first = strchr(&inBuf[size-max+sizeOfPrefix+3], byte);  /* First */                        if (!first)                first = &inBuf[size-max+sizeOfPrefix+3];                        strncpy(&outBuf[sizeOfPrefix+3], first, max-sizeOfPrefix-2);        }       }   Done:    if (userOutBuf) {        strcpy(userOutBuf, outBuf);        return userOutBuf;    } else         return outBuf;Error:    return NULL;} /*****************************************************//*  FindMenuInfoInList()                             *//*                                                   *//*  Parameters:                                      *//*      menuInfoList handle                          *//*      menuList                                     *//*                                                   *//*  Return: index into list for found item           *//*                                                   *//*  Purpose: Routine to search the menuInfo list     *//*           for the index corresponding to a handle *//*                                                   *//*****************************************************/static int FindMenuInfoInList(    ListType menuInfoList,     menuList handle){    int i, totalItems;    menuInfoRec * menuInfoPtr = NULL;        if (handle) {        /* Loop to find handle in list */        totalItems = ListNumItems (menuInfoList);        for (i=1;(i<=totalItems);i++) {            menuInfoPtr = ListGetPtrToItem (menuInfoList, i);            if ((menuInfoPtr) && (menuInfoPtr->handle==handle) ) {                return i;            }           }    }       return 0;           }/*****************************************************//*  FindMenuItemInfoFromMenuItemID()                 *//*                                                   *//*  Parameters:                                      *//*      menuItemInfoList handle                      *//*      menu item id                                 *//*                                                   *//*  Return: index into list for found item           *//*                                                   *//*  Purpose: Routine to search the menuItemInfo list *//*           for the longName passed in              *//*                                                   *//*****************************************************/static int FindMenuItemInfoFromMenuItemID(    ListType menuItemInfoList,     int menuItemID){    int i, totalItems;    menuItemInfoRec * menuItemInfoPtr = NULL;                if (menuItemInfoList) {        /* Loop to find handle in list */        totalItems = ListNumItems (menuItemInfoList);        for (i=1;(i<=totalItems);i++) {            menuItemInfoPtr = ListGetPtrToItem (menuItemInfoList, i);            if ((menuItemInfoPtr) && (menuItemID == menuItemInfoPtr->menuItemID) ) {                return i;            }           }    }       return 0;           }/*****************************************************//*  FindMenuItemInfoFromMenuName()                   *//*                                                   *//*  Parameters:                                      *//*      menuItemInfoList handle                      *//*      buffer for longName to search for            *//*                                                   *//*  Return: index into list for found item           *//*                                                   *//*  Purpose: Routine to search the menuItemInfo list *//*           for the longName passed in              *//*                                                   *//*****************************************************/static int FindMenuItemInfoFromMenuName(    ListType menuItemInfoList,     char *menuName){    int i, totalItems;    menuItemInfoRec * menuItemInfoPtr = NULL;        if ((menuItemInfoList) && (menuName)) {        /* Loop to find handle in list */        totalItems = ListNumItems (menuItemInfoList);        for (i=1;(i<=totalItems);i++) {            menuItemInfoPtr = ListGetPtrToItem (menuItemInfoList, i);            if ((menuItemInfoPtr) && (menuItemInfoPtr->menuName) && (!strcmp(menuName, menuItemInfoPtr->menuName)) ) {                return i;            }           }    }       return 0;           }/*****************************************************//*  InternalMenuCallback()                           *//*                                                   *//*  Parameters:                                      *//*      menuBarHandle                                *//*      menuItemID                                   *//*      callbackData                                 *//*      panel                                        *//*                                                   *//*  Purpose: Call user's menuList callback functions *//*                                                   *//*****************************************************/static void CVICALLBACK InternalMenuCallback (int menuBarHandle, int menuItemID, void *callbackData, int panel){    menuInfoRec * menuInfoPtr = NULL;    menuItemInfoRec * menuItemInfoPtr = NULL;    MenuListCallbackPtr callbackFunc;    int index;    menuList handle;        /* Get menulist pointer from handle */        if ((handle           = (menuList) callbackData) &&        ((index           = FindMenuInfoInList (sMenuInfoList, handle))>0) &&        (menuInfoPtr      = ListGetPtrToItem (sMenuInfoList, index)) &&         (index            = FindMenuItemInfoFromMenuItemID (menuInfoPtr->menuItemInfoList, menuItemID)) &&        (menuItemInfoPtr  = ListGetPtrToItem (menuInfoPtr->menuItemInfoList, index)) )    {        if (callbackFunc = menuInfoPtr->callbackFunc)            (* callbackFunc) (handle, index, EVENT_COMMIT, menuItemInfoPtr->callbackData);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产乱码一区二区三区| 麻豆精品国产91久久久久久 | wwwwxxxxx欧美| 欧美绝品在线观看成人午夜影视| 成人精品一区二区三区中文字幕| 国产裸体歌舞团一区二区| 免费精品视频最新在线| 免费看日韩a级影片| 免费成人在线观看视频| 麻豆成人免费电影| 国产精品一区二区在线播放| 国产剧情一区二区| 成人午夜电影久久影院| 不卡的av电影在线观看| 欧美优质美女网站| 欧美久久一区二区| 精品免费一区二区三区| 久久精品视频一区| 中文字幕中文字幕在线一区| 亚洲精品视频免费观看| 亚洲成人动漫在线观看| 久久99精品久久久久久久久久久久| 狠狠色综合色综合网络| 大陆成人av片| 在线观看国产日韩| 日韩亚洲国产中文字幕欧美| 久久久亚洲精品一区二区三区| 国产三级一区二区| 亚洲一区成人在线| 六月婷婷色综合| 成人国产亚洲欧美成人综合网| 91国在线观看| 久久先锋资源网| 亚洲在线一区二区三区| 美女国产一区二区三区| 91香蕉视频污在线| 欧美mv日韩mv亚洲| 亚洲精品免费一二三区| 日本不卡一二三| 99精品欧美一区二区蜜桃免费| 精品视频免费看| 国产精品卡一卡二| 免费不卡在线观看| 日本高清免费不卡视频| 久久久久综合网| 午夜精品一区二区三区免费视频| 国产精品中文字幕一区二区三区| 在线观看一区二区精品视频| 精品sm在线观看| 亚洲一区二区三区自拍| 国产成人免费视频| 欧美一级精品大片| 有坂深雪av一区二区精品| 国产精品综合一区二区三区| 欧美精品一二三区| 亚洲蜜臀av乱码久久精品| 韩国欧美国产1区| 91精品国产全国免费观看 | 国产高清久久久久| 欧美精品一级二级| 亚洲一区二区视频在线观看| 成人精品视频一区| 久久久不卡影院| 久久97超碰国产精品超碰| 91精品麻豆日日躁夜夜躁| 亚洲精品亚洲人成人网在线播放| 国产91在线观看丝袜| 久久午夜羞羞影院免费观看| 免费高清视频精品| 日韩三级在线观看| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美乱妇23p| 午夜精品在线看| 欧美另类久久久品| 日本麻豆一区二区三区视频| 制服丝袜亚洲网站| 奇米综合一区二区三区精品视频| 欧美性猛交一区二区三区精品| 亚洲欧美日韩国产一区二区三区 | 亚洲色图制服丝袜| eeuss鲁片一区二区三区| 国产精品国产三级国产三级人妇| 国产精品主播直播| 国产精品久久免费看| a4yy欧美一区二区三区| 中文字幕一区二区三区精华液| 成人av在线电影| 亚洲精品国产一区二区精华液 | 久久久久免费观看| 国产美女视频91| 国产香蕉久久精品综合网| 国产乱色国产精品免费视频| 久久久夜色精品亚洲| 成人黄页在线观看| 一区二区三区资源| 欧美久久久久久久久中文字幕| 久久99国产精品尤物| 欧美韩国日本一区| 欧美午夜理伦三级在线观看| 性做久久久久久免费观看欧美| 欧美一区二区精品久久911| 国内精品国产成人国产三级粉色| 欧美激情一区三区| 欧洲视频一区二区| 黄色日韩网站视频| 一区二区三区中文字幕精品精品| 欧美福利电影网| 国产不卡在线一区| 亚洲第一成人在线| 国产午夜精品美女毛片视频| 日本乱人伦aⅴ精品| 免费高清视频精品| 亚洲欧美日韩久久精品| 日韩一区二区电影| 91老师国产黑色丝袜在线| 三级欧美在线一区| 国产精品福利一区二区| 日韩三级在线免费观看| 99精品视频在线播放观看| 久久福利资源站| 一区二区三区加勒比av| 久久综合久久综合亚洲| 欧美在线观看禁18| 激情五月激情综合网| 亚洲香蕉伊在人在线观| 国产亚洲成aⅴ人片在线观看| 欧美精选一区二区| 色综合 综合色| 成人一区在线观看| 青青草国产成人99久久| 亚洲综合一二三区| 国产精品理论在线观看| 欧美不卡在线视频| 欧美精品第1页| 91国偷自产一区二区三区成为亚洲经典 | 欧美xingq一区二区| 在线精品视频一区二区| 国产寡妇亲子伦一区二区| 久久精品免费看| 天堂影院一区二区| 一区二区三区资源| 亚洲伦理在线免费看| 国产欧美日韩在线视频| 久久先锋资源网| 精品久久久久香蕉网| 欧美一区二区三区四区高清| 欧美午夜免费电影| 欧美午夜不卡在线观看免费| 96av麻豆蜜桃一区二区| 成人激情av网| 国产大陆亚洲精品国产| 国产精品一区二区三区99| 国产综合久久久久久久久久久久| 免费欧美日韩国产三级电影| 欧美aaa在线| 麻豆精品久久精品色综合| 蜜桃久久精品一区二区| 美女一区二区久久| 久久精品国产秦先生| 久久91精品国产91久久小草| 精品系列免费在线观看| 国产成人免费视频一区| 国产乱码字幕精品高清av| 亚洲精选视频在线| 国产精品视频免费看| 国产99久久久精品| 成人午夜在线播放| 亚洲精品久久久蜜桃| 亚洲男人天堂av| 亚洲黄色小视频| 亚洲成人tv网| 久久er99热精品一区二区| 国产在线一区二区综合免费视频| 青青草精品视频| 国产一区二区看久久| 成人教育av在线| 色综合久久综合| 制服丝袜亚洲播放| 久久天天做天天爱综合色| 中文无字幕一区二区三区 | 日本一区二区成人在线| 欧美激情一区二区三区蜜桃视频 | 久久久噜噜噜久噜久久综合| 中文av字幕一区| 亚欧色一区w666天堂| 美女性感视频久久| 成人av第一页| 制服丝袜一区二区三区| 国产精品免费免费| 五月开心婷婷久久| 成人精品国产免费网站| 欧美三级资源在线| 欧美精品一区二区久久婷婷| 国产精品电影一区二区三区| 亚洲不卡一区二区三区| 懂色av一区二区夜夜嗨| 欧美日韩黄色影视| 欧美国产精品一区二区三区| 三级精品在线观看| 成人av小说网|