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

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

?? tabprop.c

?? CVI例程
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include <ansi_c.h>#include <userint.h>#include "toolbox.h"#include "easytab.h"#include "tabprpui.h"#include "tabprop.h"#define TAB_EDIT_TYPE               "EditTabDlg"#define TAB_RCLICK_EDIT_TYPE "EasyTabRightClickEdit"#define TAB_EDIT_METAFONT_NAME      "Tab Edit Meta Font"static int gMetaFontSuffix = 1;typedef struct    {    int panel;    int tabCtrl;    int editDlg;    int tabsPanel;    int fontPanel;    int tabAttrsPanel;    int boundsPanel;    } TabEditDlg;typedef struct    {    int enabled;    } RightClickEditInfo;        static int      TabEdit_LoadDialog(TabEditDlg *info);static void     TabEdit_UpdateBoundsDisplay(TabEditDlg *info);static void     TabEdit_UpdateValues(TabEditDlg *info);static int      TabEdit_ChainDlgCallbackData(TabEditDlg *info, int panel);static ListType TabEdit_GetActiveDlgList(void);static int      TabEdit_PositionInActiveDlgList(int panel, int tabCtrl);static int      TabEdit_Create(int panel, int easyTabCtrl, TabEditDlg **newInfo);static void     TabEdit_Discard(TabEditDlg *info);static int      TabEdit_Apply(TabEditDlg *info);static void     TabEdit_InitValues(TabEditDlg *info);static void     TabEdit_UpdateUserSpecifiedBounds(TabEditDlg *info);static void     TabEdit_UpdateAttrValues(TabEditDlg *info);int CVICALLBACK RightClickEditCallback (int panel, int control, int event, void *callbackData, int eventData1, int eventData2);/***************************************************************/static int TabEdit_LoadDialog(TabEditDlg *info){    int error = 0;    int editDlg;        errChk( info->editDlg = LoadPanel(0, "tabprpui.uir", EDIT));        errChk( EasyTab_ConvertFromCanvas(info->editDlg, EDIT_CANVAS));    errChk( EasyTab_LoadPanels (info->editDlg, EDIT_CANVAS, 1, "tabprpui.uir", __CVIUserHInst,                        TABS, &info->tabsPanel, BOUNDS, &info->boundsPanel,                         FONT, &info->fontPanel, TAB_ATTRS, &info->tabAttrsPanel, ABOUT, 0, 0));    errChk(TabEdit_ChainDlgCallbackData(info, info->editDlg));    Error:    return error;}/***************************************************************/    /*  Recursively chain the callback data of the panel, its controls, and all child panels, etc. to be        the TabEditDlg structure so dialog callback events can know which dialog and which easyTab control        they are dealing with.    */static int TabEdit_ChainDlgCallbackData(TabEditDlg *info, int panel){    int error = 0;    int ctrl;    int child;        errChk( ChainPanelCallback(panel, NULL, info, TAB_EDIT_TYPE));    GetPanelAttribute(panel, ATTR_PANEL_FIRST_CTRL, &ctrl);        while (ctrl > 0)        {        errChk( ChainCtrlCallback (panel, ctrl, NULL, info, TAB_EDIT_TYPE));        GetCtrlAttribute(panel, ctrl, ATTR_NEXT_CTRL, &ctrl);        }        GetPanelAttribute(panel, ATTR_FIRST_CHILD, &child);    while (child > 0)        {        errChk( TabEdit_ChainDlgCallbackData(info, child));        GetPanelAttribute(child, ATTR_NEXT_PANEL, &child);        }        Error:    return error;}/***************************************************************/    /*  keep a list of the active tab property editing dialogs */static ListType TabEdit_GetActiveDlgList(void){    static ListType activeList = 0;        if (!activeList)        activeList = ListCreate(sizeof(TabEditDlg *));        return activeList;}/***************************************************************/int CVICALLBACK RightClickEditCallback (int panel, int control, int event, void *callbackData, int eventData1, int eventData2){    RightClickEditInfo  *info = 0;    if (event == EVENT_RIGHT_CLICK)        {        if (GetChainedCallbackData (panel, control, TAB_RCLICK_EDIT_TYPE, (void **)&info) >= 0)            {            if (info->enabled)                EditTabProperties(panel, control);            }        }    return 0;}/***************************************************************/int EasyTab_EnableRClickEditing(int panel, int tabCtrl, int enabled){    int                 error = 0;    RightClickEditInfo  *newInfo = 0;    RightClickEditInfo  *info = 0;    int                 dummyColor;        errChk( EasyTab_GetAttribute (panel, tabCtrl, ATTR_EASY_TAB_LABEL_COLOR, &dummyColor));     /* call an easytab function to force an error if the control is not an easytab control */    if ( GetChainedCallbackData (panel, tabCtrl, TAB_RCLICK_EDIT_TYPE, (void **)&info) >= 0)        info->enabled = enabled;    else        {        nullChk( newInfo = (RightClickEditInfo *)calloc(sizeof(*newInfo), 1));        newInfo->enabled = enabled;        errChk( ChainCtrlCallback (panel, tabCtrl, RightClickEditCallback, newInfo, TAB_RCLICK_EDIT_TYPE));        }        Error:    if (error < 0)        {        free(newInfo);        return error;        }    else        return 0;}/***************************************************************/int EditTabProperties(int panel, int easyTabCtrl){    int         error = 0;    TabEditDlg  *info = NULL;       int         position;        position = TabEdit_PositionInActiveDlgList(panel, easyTabCtrl);        if (position > 0)        ListGetItem(TabEdit_GetActiveDlgList(), &info, position);    else    /* if there isn't a property editing dialog active for this easy tab control, make one */        errChk( TabEdit_Create(panel, easyTabCtrl, &info));            DisplayPanel(info->editDlg);    Error:    return error;}/***************************************************************/static int TabEdit_Create(int panel, int easyTabCtrl, TabEditDlg **newInfo){    int         error = 0;    TabEditDlg  *info = 0;    ListType    dlgList;        *newInfo = NULL;    nullChk( dlgList = TabEdit_GetActiveDlgList());    info = calloc(sizeof(*info), 1);    info->panel = panel;    info->tabCtrl = easyTabCtrl;    errChk( TabEdit_LoadDialog(info));    TabEdit_InitValues(info);    nullChk( ListInsertItem(dlgList, &info, END_OF_LIST));    Error:    if (error < 0)        TabEdit_Discard(info);    else        *newInfo = info;            return error;}/***************************************************************/    /*  returns list index, or 0 if not in the list */static int TabEdit_PositionInActiveDlgList(int panel, int tabCtrl){    int         index;    int         numItems;    ListType    dlgList;    TabEditDlg  *currInfo;    if (dlgList = TabEdit_GetActiveDlgList())        {        numItems = ListNumItems(dlgList);        for (index = 1; index <= numItems; index++)            {            ListGetItem(dlgList, &currInfo, index);            if (currInfo->panel == panel && currInfo->tabCtrl == tabCtrl)                return index;            }               }    return 0;}/***************************************************************/static void TabEdit_Discard(TabEditDlg *info){    if (info)        {        int position;            position = TabEdit_PositionInActiveDlgList(info->panel, info->tabCtrl);            if (position > 0)            ListRemoveItem(TabEdit_GetActiveDlgList(), 0, position);                if (info->editDlg > 0)            DiscardPanel(info->editDlg);        free(info);        }}/***************************************************************/static void TabEdit_InitValues(TabEditDlg *info){    ListType    panelList = NULL;    int         numItems = 0;    int         index;    int         panel;    char        title[256];        EasyTab_GetPanelList(info->panel, info->tabCtrl, &panelList);    if (panelList)        {        ClearListCtrl(info->tabsPanel, TABS_ACTIVE);        numItems = ListNumItems(panelList);                for (index = 1; index <= numItems; index++)            {            ListGetItem(panelList, &panel, index);            GetPanelAttribute(panel, ATTR_TITLE, title);            RemoveAcceleratorEscapeCode(title);            InsertListItem (info->tabsPanel, TABS_ACTIVE, -1, title, panel);            InsertListItem (info->tabAttrsPanel, TAB_ATTRS_WHICHTAB, -1, title, panel);            }        }    SetCtrlAttribute(info->tabsPanel, TABS_ACTIVE, ATTR_DIMMED, numItems <= 0);     TabEdit_UpdateValues(info);    TabEdit_UpdateUserSpecifiedBounds(info);       ListDispose(panelList);}/***************************************************************/static void TabEdit_UpdateTabAttrValues(TabEditDlg *info){    int     numPanels;    int     whichPanel;    int     textLength;    char    *text = 0;    int     visible;    int     bgColor;    int     dimmed;    GetNumListItems (info->tabAttrsPanel, TAB_ATTRS_WHICHTAB, &numPanels);    if (numPanels > 0)          {        GetCtrlVal(info->tabAttrsPanel, TAB_ATTRS_WHICHTAB, &whichPanel);        EasyTab_GetTabAttribute(info->panel, info->tabCtrl, whichPanel, ATTR_EASY_TAB_LABEL_TEXT_LENGTH, &textLength);        text = (char *)malloc(textLength+1);        EasyTab_GetTabAttribute(info->panel, info->tabCtrl, whichPanel, ATTR_EASY_TAB_LABEL_TEXT, text);        EasyTab_GetTabAttribute(info->panel, info->tabCtrl, whichPanel, ATTR_EASY_TAB_VISIBLE, &visible);        EasyTab_GetTabAttribute(info->panel, info->tabCtrl, whichPanel, ATTR_EASY_TAB_LABEL_BG_COLOR, &bgColor);        EasyTab_GetTabAttribute(info->panel, info->tabCtrl, whichPanel, ATTR_EASY_TAB_DIMMED, &dimmed);                SetCtrlVal (info->tabAttrsPanel, TAB_ATTRS_LABELTEXT, text);        SetCtrlVal (info->tabAttrsPanel, TAB_ATTRS_VISIBLE, visible);        SetCtrlVal (info->tabAttrsPanel, TAB_ATTRS_LABELBGCOLOR, bgColor);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美最猛性xxxxx直播| 久久色在线观看| 欧美日本韩国一区二区三区视频| 制服丝袜av成人在线看| 日韩精品一区二区三区中文精品| 国产日韩欧美精品一区| 亚洲成av人片| 成人免费视频网站在线观看| 在线欧美日韩国产| 精品久久久久av影院| 久久久美女艺术照精彩视频福利播放| 亚洲一区二区三区四区在线| 国产一区二区三区久久悠悠色av| 欧美在线观看一区| 中文字幕欧美激情| 国产一区二区免费看| 欧美日韩亚洲综合在线 | 欧美写真视频网站| 亚洲高清在线视频| 久久综合久久久久88| 蜜桃一区二区三区在线观看| 亚洲精选视频在线| 久久国产夜色精品鲁鲁99| 成人成人成人在线视频| 成人av网站在线| 91精品国产黑色紧身裤美女| 不卡一区在线观看| 日韩美女一区二区三区四区| 综合网在线视频| 精品中文av资源站在线观看| 337p亚洲精品色噜噜噜| 亚洲午夜精品17c| 成人av网址在线| 国产网站一区二区三区| 日韩专区中文字幕一区二区| 欧美日韩专区在线| 一区二区三区在线免费播放| 99综合影院在线| 国产精品美女久久久久久 | 国产91精品入口| 久久这里只有精品6| 青青草国产成人av片免费| 欧美亚洲一区二区在线| 一区二区三区四区乱视频| 在线精品观看国产| 亚洲成人午夜电影| 欧美日韩色综合| 天使萌一区二区三区免费观看| 国产亚洲欧美中文| 久久草av在线| 久久这里只精品最新地址| 国产一区二区剧情av在线| 精品国产乱码久久久久久老虎 | 国内精品写真在线观看| 久久九九99视频| 成人福利视频在线| 亚洲色图欧美激情| 色狠狠综合天天综合综合| 国产精品欧美精品| 在线免费观看日本欧美| 亚洲成在线观看| 日韩一区和二区| 国产一区在线看| 精品蜜桃在线看| 99久久精品免费看| 亚洲午夜精品17c| 欧美一二三区精品| hitomi一区二区三区精品| 亚洲欧美日韩国产综合| 欧美午夜片在线看| 久久99国产精品久久99| 国产日韩亚洲欧美综合| 国产成人久久精品77777最新版本| 国产精品久久三| 欧美亚洲一区三区| 亚洲一区在线看| 国产婷婷色一区二区三区四区| 91视频免费观看| 日韩av一二三| xnxx国产精品| 成人一二三区视频| 国产日产精品1区| 久久亚洲欧美国产精品乐播| 国产精品久久网站| 一本一道久久a久久精品| 麻豆视频一区二区| 一区二区三区欧美| 日韩一区二区免费视频| 91免费在线看| 国产福利精品一区二区| 日本不卡在线视频| 亚洲激情综合网| 中文一区二区完整视频在线观看| 欧美一区二区三区四区在线观看 | 日韩美女视频一区| 精品成人在线观看| 91精品一区二区三区久久久久久| 日韩欧美中文一区| 久久99热99| 亚洲一区二三区| 日韩精品中文字幕一区二区三区| 麻豆一区二区三| 国产精品久久久久久久久图文区| 色婷婷激情综合| 日韩经典一区二区| 久久午夜色播影院免费高清| 成人免费视频一区二区| 亚洲欧洲成人av每日更新| 欧美老肥妇做.爰bbww| 中文一区二区完整视频在线观看| 国内成人免费视频| 精品国产99国产精品| 国内精品写真在线观看| 麻豆91精品视频| 激情另类小说区图片区视频区| 久久国产免费看| 亚洲人午夜精品天堂一二香蕉| 欧美视频在线观看一区| 波多野结衣亚洲| 美女脱光内衣内裤视频久久网站 | 亚洲综合在线免费观看| 91天堂素人约啪| 久久99精品久久久久久久久久久久 | 奇米精品一区二区三区四区| 国产精品白丝在线| 91精品国产色综合久久ai换脸 | 99久久精品国产毛片| 久久久国产精华| 在线观看日产精品| www.欧美.com| 日韩欧美亚洲一区二区| 久久99精品国产麻豆婷婷| 中文av一区二区| 91精品国产综合久久久久| 666欧美在线视频| 欧美一区二区三区在| 亚洲精品一区二区三区福利 | 日韩欧美的一区| 国产日韩欧美综合在线| 亚洲欧美日韩久久| 欧美日本一区二区三区| 欧美最猛黑人xxxxx猛交| 色欧美88888久久久久久影院| 99久久精品国产一区二区三区| 99久久国产免费看| 成人app软件下载大全免费| 国产不卡在线一区| 成人激情免费电影网址| 国产福利精品一区二区| 91丨九色丨尤物| 91精品在线观看入口| 亚洲成人自拍网| 国产精品成人在线观看| 精品福利视频一区二区三区| 色域天天综合网| 精品精品欲导航| 一区二区三区不卡视频| 精品一区二区在线观看| 色综合中文字幕国产 | 欧美在线小视频| 久久久精品中文字幕麻豆发布| 一区二区三区不卡视频| 日本久久一区二区三区| 综合婷婷亚洲小说| 成人美女视频在线观看| 日韩欧美国产一区二区在线播放 | 国产精品欧美一级免费| 亚洲一区二区三区在线看| 久久综合精品国产一区二区三区| 欧美激情在线一区二区三区| 五月天激情小说综合| 粉嫩久久99精品久久久久久夜| 欧美日韩精品电影| 国产精品蜜臀在线观看| 麻豆一区二区在线| 日韩精品在线一区二区| 亚洲一区二区三区视频在线| 99国产一区二区三精品乱码| 国产日韩欧美电影| 99精品国产99久久久久久白柏| 国产一区二区美女| 欧美一区日本一区韩国一区| 一区二区三区在线高清| 国产91丝袜在线18| 精品国产一区久久| 日韩不卡一二三区| 欧美亚一区二区| 激情深爱一区二区| 欧美电视剧在线看免费| 老司机精品视频导航| 欧美一级xxx| 国产98色在线|日韩| 亚洲男女毛片无遮挡| 欧美精品粉嫩高潮一区二区| 日韩电影免费一区| 久久久久9999亚洲精品| 一本久道中文字幕精品亚洲嫩| 亚洲国产精品久久人人爱蜜臀| 777午夜精品视频在线播放| 日韩国产在线观看|