亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
色综合天天狠狠| 国产在线精品免费| 国产日韩欧美a| 久久综合九色欧美综合狠狠 | 亚洲欧美综合另类在线卡通| 欧美电影免费观看高清完整版| 性欧美疯狂xxxxbbbb| 一区二区三区在线免费视频| 亚洲欧美日韩国产另类专区| 国产精品视频麻豆| 中文字幕一区免费在线观看| 亚洲欧洲精品天堂一级| 亚洲欧洲国产专区| 亚洲男人电影天堂| 午夜精品在线看| 老司机精品视频一区二区三区| 国产精品全国免费观看高清 | 亚洲欧美综合另类在线卡通| 亚洲日本一区二区| 亚洲美女视频一区| 丝袜美腿高跟呻吟高潮一区| 久久精品国产99国产精品| 成人h版在线观看| 一本大道久久a久久精二百| 欧美精品v国产精品v日韩精品| 9人人澡人人爽人人精品| 色综合久久中文字幕综合网| 欧美日韩国产bt| 久久久午夜电影| 亚洲欧美韩国综合色| 日韩av一区二区三区四区| 国产不卡一区视频| 欧美三级午夜理伦三级中视频| 成人精品一区二区三区中文字幕| 美女视频网站黄色亚洲| aaa亚洲精品| 欧美一区二区三区免费| 欧美高清在线精品一区| 午夜亚洲福利老司机| 成人免费视频app| 69久久99精品久久久久婷婷 | 成人性生交大合| 99精品1区2区| 精品三级在线看| 一区二区三区**美女毛片| 国模冰冰炮一区二区| 在线观看av不卡| 久久九九影视网| 七七婷婷婷婷精品国产| 91在线云播放| 久久久精品日韩欧美| 日韩国产精品91| 色综合视频一区二区三区高清| 色悠久久久久综合欧美99| 久久久久久黄色| 老司机精品视频线观看86 | 久久久久综合网| 亚洲一区av在线| 懂色av噜噜一区二区三区av| 日韩一级大片在线| 天天亚洲美女在线视频| 在线观看欧美黄色| 亚洲视频一二三| 99久久免费精品高清特色大片| 91在线看国产| 国产精品美女久久久久高潮| 久久99国产精品尤物| 91精品国产入口| 亚洲国产va精品久久久不卡综合| 亚洲不卡一区二区三区| 91欧美激情一区二区三区成人| 91成人免费在线| 日韩伦理av电影| 99热这里都是精品| 中文字幕在线免费不卡| 国产成人av一区| 亚洲国产精品精华液ab| 国产凹凸在线观看一区二区| 中文字幕第一区综合| 成人一区在线看| 精品国产乱码久久久久久牛牛 | 久久97超碰色| 欧美一级片免费看| 日本视频一区二区| 精品国产第一区二区三区观看体验| 精品福利一二区| 久久成人久久鬼色| 国产亚洲福利社区一区| jvid福利写真一区二区三区| 国产精品国产三级国产aⅴ入口| 亚洲一区日韩精品中文字幕| 欧美日韩高清一区二区| 九一九一国产精品| 日本一区二区视频在线观看| 一本色道**综合亚洲精品蜜桃冫 | 日韩视频在线你懂得| 免费高清不卡av| 国产欧美一区二区精品婷婷| 91一区二区三区在线观看| 亚洲综合区在线| 日韩一级二级三级精品视频| 国产成人精品一区二| 亚洲综合丝袜美腿| 亚洲精品一线二线三线无人区| 亚洲综合一二区| 26uuu久久综合| 91麻豆.com| 久久成人免费电影| 中文字幕亚洲欧美在线不卡| 欧美一二三四在线| av一区二区三区四区| 亚洲一区二区成人在线观看| 久久亚洲精精品中文字幕早川悠里| 日本视频中文字幕一区二区三区 | 国产精品伦理在线| 欧美日韩小视频| 菠萝蜜视频在线观看一区| 亚洲一线二线三线久久久| 欧美v日韩v国产v| 色8久久精品久久久久久蜜| 久久成人av少妇免费| 亚洲一区二区三区影院| 国产欧美日韩麻豆91| 在线综合视频播放| 91视频com| 国产91在线|亚洲| 美女一区二区在线观看| 亚洲一区视频在线| 日韩理论片在线| 日本一区二区免费在线观看视频| 国精品**一区二区三区在线蜜桃| 日韩三级免费观看| 欧美性videosxxxxx| 成人avav影音| 国产又黄又大久久| 激情综合网激情| 男女男精品视频| 丝袜亚洲另类丝袜在线| 亚洲图片欧美视频| 一区二区成人在线| 一区二区三区影院| 国产精品毛片久久久久久久| 久久婷婷久久一区二区三区| 日韩免费高清电影| 制服丝袜av成人在线看| 欧美日韩免费观看一区二区三区| 一区二区成人在线视频| 亚洲你懂的在线视频| 日韩理论片一区二区| 国产精品女主播av| 国产欧美日韩一区二区三区在线观看 | 亚洲卡通动漫在线| 国产精品美日韩| 17c精品麻豆一区二区免费| 久久久久久久av麻豆果冻| 久久久99久久| 国产日产欧美一区| 国产亚洲欧美日韩在线一区| 久久精品视频免费| 国产精品色眯眯| 亚洲色图第一区| 亚洲国产日韩精品| 亚洲一区二区三区精品在线| 亚洲午夜激情网页| 日韩精品视频网| 老司机精品视频在线| 国产99久久久久久免费看农村| 亚洲精品免费在线| 亚洲chinese男男1069| 亚洲高清三级视频| 精品在线观看免费| 国产一区二区三区av电影 | 91精品中文字幕一区二区三区| 国产一区二区三区久久久| 国产精品亚洲午夜一区二区三区| 亚洲美女淫视频| 日韩国产欧美在线观看| 韩国女主播成人在线观看| 国内精品国产成人国产三级粉色 | 日韩精品一区二区三区视频| 精品美女在线播放| 中文字幕欧美一| 日韩中文字幕区一区有砖一区 | 日韩高清电影一区| 国产一区91精品张津瑜| 波多野结衣中文字幕一区二区三区| 日本免费新一区视频| 国产精品一级片| 欧美自拍偷拍午夜视频| 久久综合九色综合欧美亚洲| 一区二区三区在线影院| 九一九一国产精品| 在线日韩一区二区| 久久精品人人做| 五月婷婷综合网| 91视视频在线观看入口直接观看www | 国产精品网曝门| 午夜天堂影视香蕉久久| 成人国产电影网| 日韩精品一区二区在线|