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

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

?? edit.c

?? ucgui源碼3.32
?? C
?? 第 1 頁 / 共 2 頁
字號:
    break;
  }
  WM_DefaultProc(pMsg);
}

/*********************************************************************
*
*       Exported routines:  Create
*
**********************************************************************
*/

EDIT_Handle EDIT_CreateAsChild     (int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int Id, int Flags, int MaxLen) {
  EDIT_Handle hObj;
  if (MaxLen == 0) {
    MaxLen = 8;
  }
  /* Alloc memory for obj */
  WM_LOCK();
  hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, hParent, 
                       WM_CF_SHOW | Flags, EDIT__Callback,
                       sizeof(EDIT_Obj)-sizeof(WM_Obj));
  if (hObj) {
    EDIT_Obj* pObj = (EDIT_Obj*)WM_HMEM2Ptr(hObj);
    /* init widget specific variables */
    WIDGET__Init(&pObj->Widget, WIDGET_STATE_FOCUSSABLE  | WIDGET_STATE_ENABLED);
    pObj->Widget.Id     = Id;
    /* init member variables */
    INIT_ID(pObj);
    pObj->pFont         = _pDefaultFont;
    pObj->aBkColor[0]   = EDIT_BKCOLOR0_DEFAULT;
    pObj->aBkColor[1]   = EDIT_BKCOLOR1_DEFAULT;
    pObj->aTextColor[0] = EDIT_TEXTCOLOR0_DEFAULT;
    pObj->aTextColor[1] = EDIT_TEXTCOLOR1_DEFAULT;
    pObj->Align         = _DefaultAlign;
    pObj->Border        = _DefaultBorder;
    pObj->XSizeCursor   = 1;
    pObj->MaxLen        = MaxLen;
    if ((pObj->hpText = WM_ALLOC(MaxLen+1)) ==0) {
      GUI_DEBUG_ERROROUT("EDIT_Create failed to alloc buffer");
      EDIT_Delete(hObj);
      hObj =0;
    }
  }
  WM_UNLOCK();
  return hObj;
}

EDIT_Handle EDIT_Create(int x0, int y0, int xsize, int ysize, int Id, int MaxLen, int Flags) {
  return EDIT_CreateAsChild(x0, y0, xsize, ysize, WM_HMEM_NULL, Id, Flags, MaxLen);
}

EDIT_Handle EDIT_CreateIndirect(const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK* pCallback) {
  EDIT_Handle hEdit;
  GUI_USE_PARA(pCallback);
  hEdit = EDIT_CreateAsChild(
    pCreateInfo->x0 + x0, pCreateInfo->y0 + y0, pCreateInfo->xSize, pCreateInfo->ySize,
    hWinParent, pCreateInfo->Id, 0, pCreateInfo->Para);
  if (hEdit) {
    EDIT_SetTextAlign(hEdit, pCreateInfo->Flags);
  }
  return hEdit;
}

/*********************************************************************
*
*       Exported routines:  Various methods
*
**********************************************************************
*/

void EDIT_AddKey(EDIT_Handle hObj, int Key) {
  EDIT_Obj* pObj;
  if (hObj == 0)
    return;
  WM_LOCK();
  pObj = EDIT_H2P(hObj);
  if (pObj) {
    if (pObj->pfAddKeyEx) {
      pObj->pfAddKeyEx(pObj, hObj, Key);
    } else {
      char*s = (char*) WM_HMEM2Ptr(pObj->hpText);
      int len = strlen(s);
      switch (Key) {
        case GUI_KEY_UP:
          {
            char c = *(s + pObj->CursorPos);
            if (c < 0x7f) {
              *(s + pObj->CursorPos) = c + 1;
              WM_NotifyParent(hObj, WM_NOTIFICATION_VALUE_CHANGED);
            }
          }
          break;
        case GUI_KEY_DOWN:
          {
            char c = *(s + pObj->CursorPos);
            if (c > 0x20) {
              *(s + pObj->CursorPos) = c - 1;
              WM_NotifyParent(hObj, WM_NOTIFICATION_VALUE_CHANGED);
            }
          }
          break;
        case GUI_KEY_RIGHT:
          if (pObj->CursorPos < (pObj->MaxLen - 1))
            if (pObj->CursorPos < len)
              pObj->CursorPos++;
          break;
        case GUI_KEY_LEFT:
          if (pObj->CursorPos > 0)
            pObj->CursorPos--;
          break;
        case GUI_KEY_BACKSPACE:
          if ((len > 0) && (pObj->CursorPos > 0)) {
            int CopyLength = pObj->MaxLen - pObj->CursorPos;
            strncpy(s + pObj->CursorPos - 1, s + pObj->CursorPos, CopyLength);
            *(s + len - 1) = 0;
            WM_NotifyParent(hObj, WM_NOTIFICATION_VALUE_CHANGED);
            pObj->CursorPos--;
          }
          break;
        case GUI_KEY_DELETE:
          if ((len > 0) && (pObj->CursorPos < len)) {
            if (len > 1) {
              int CopyLength = pObj->MaxLen - pObj->CursorPos - 1;
              strncpy(s + pObj->CursorPos, s + pObj->CursorPos + 1, CopyLength);
            }
            *(s + len - 1) = 0;
            WM_NotifyParent(hObj, WM_NOTIFICATION_VALUE_CHANGED);
          }
          break;
        case GUI_KEY_INSERT:
          if (pObj->EditMode == GUI_EDIT_MODE_OVERWRITE)
            pObj->EditMode = GUI_EDIT_MODE_INSERT;
          else
            pObj->EditMode = GUI_EDIT_MODE_OVERWRITE;
          break;
        case GUI_KEY_ENTER:
        case GUI_KEY_ESCAPE:
          break;
        default:
          if ((Key >= 0x20) && (Key <= 0x7f)) {
            if (pObj->EditMode == GUI_EDIT_MODE_INSERT) {
              if (len < pObj->MaxLen) {
                int CopyLength = pObj->MaxLen - pObj->CursorPos - 1;
                memmove(s + pObj->CursorPos + 1, s + pObj->CursorPos, CopyLength);
                *(s + pObj->CursorPos) = Key;
                WM_NotifyParent(hObj, WM_NOTIFICATION_VALUE_CHANGED);
                if (pObj->CursorPos < (pObj->MaxLen - 1))
                  pObj->CursorPos++;
              }
            } else {
              *(s + pObj->CursorPos) = Key;
              WM_NotifyParent(hObj, WM_NOTIFICATION_VALUE_CHANGED);
              if (pObj->CursorPos < (pObj->MaxLen - 1))
                pObj->CursorPos++;
            }
          }
          break;
      }
    }
    EDIT_Invalidate(hObj);
  }
  WM_UNLOCK();
}

void EDIT_SetFont(EDIT_Handle hObj, const GUI_FONT* pfont) {
  EDIT_Obj* pObj;
  if (hObj == 0)
    return;
  WM_LOCK();
  pObj = EDIT_H2P(hObj);
  if (pObj) {
    pObj->pFont = pfont;
    EDIT_Invalidate(hObj);
  }
  WM_UNLOCK();
}

void EDIT_SetBkColor(EDIT_Handle hObj, int Index, GUI_COLOR color) {
  EDIT_Obj* pObj;
  if (hObj == 0)
    return;
  WM_LOCK();
  pObj = EDIT_H2P(hObj);
  if (pObj) {
    pObj->aBkColor[Index] = color;
    EDIT_Invalidate(hObj);
  }
  WM_UNLOCK();
}

void EDIT_SetTextColor(EDIT_Handle hObj, int Index, GUI_COLOR color) {
  EDIT_Obj* pObj;
  if (hObj == 0)
    return;
  WM_LOCK();
  pObj = EDIT_H2P(hObj);
  if (pObj) {
    pObj->aTextColor[Index] = color;
    EDIT_Invalidate(hObj);
  }
  WM_UNLOCK();
}

void EDIT_SetText     (EDIT_Handle hObj, const char* sNew) {
  EDIT_Obj* pObj;
  if (hObj == 0)
    return;
  WM_LOCK();
  pObj = EDIT_H2P(hObj);
  if (pObj) {
    char*sDest = (char*) WM_HMEM2Ptr(pObj->hpText);
    int Len = sNew ? strlen(sNew) : 0;
    if (Len > pObj->MaxLen)
      Len = pObj->MaxLen;
    memcpy(sDest, sNew, Len);
    *(sDest+Len) = 0;
    pObj->CursorPos = Len;
    if (pObj->CursorPos == pObj->MaxLen)
      pObj->CursorPos--;
    EDIT_Invalidate(hObj);
  }
  WM_UNLOCK();
}

void EDIT_GetText(EDIT_Handle hObj, char* sDest, int MaxLen) {
  EDIT_Obj* pObj;
  if (hObj == 0)
    return;
  WM_LOCK();
  pObj = EDIT_H2P(hObj);
  if (pObj) {
    char * sSource = (char*) WM_HMEM2Ptr(pObj->hpText);
    int Len = strlen(sSource);
    if (Len > (MaxLen - 1))
      Len = MaxLen - 1;
    memcpy((void *)sDest, (const void *)sSource, Len);
    *(sDest+Len) = 0;
  }
  WM_UNLOCK();
}

I32  EDIT_GetValue(EDIT_Handle hObj) {
  EDIT_Obj* pObj;
  I32 r = 0;
  if (hObj) {
    WM_LOCK();
    pObj = EDIT_H2P(hObj);
    r = pObj->CurrentValue;
    WM_UNLOCK();
  }
  return r;
}

void EDIT_SetValue(EDIT_Handle hObj, I32 Value) {
  EDIT_Obj* pObj;
  if (hObj) {
    WM_LOCK();
    pObj = EDIT_H2P(hObj);
    /* Put in min/max range */
    if (Value < pObj->Min) {
      Value = pObj->Min;
    }
    if (Value > pObj->Max) {
      Value = pObj->Max;
    }
    if (pObj->CurrentValue != (U32)Value) {
      pObj->CurrentValue = Value;
      if (pObj->pfUpdateBufer) {
        pObj->pfUpdateBufer(pObj);
      }
      WM_InvalidateWindow(hObj);
      WM_NotifyParent(hObj, WM_NOTIFICATION_VALUE_CHANGED);
    }
    WM_UNLOCK();
  }
}

void EDIT_SetMaxLen(EDIT_Handle  hObj, int MaxLen) {
  EDIT_Obj* pObj;
  WM_HMEM hpText;
  if (hObj) {
    WM_LOCK();
    pObj = EDIT_H2P(hObj);
    if ((hpText = WM_ALLOC(MaxLen+1)) ==0) {
      GUI_DEBUG_ERROROUT("EDIT_SetMaxLen failed to alloc buffer");
    } else {
      WM_FREEPTR(&pObj->hpText);
      pObj->hpText = hpText;
      pObj->MaxLen = MaxLen;
    }
    EDIT_Invalidate(hObj);
    WM_UNLOCK();
  }
}

void EDIT_SetTextAlign(EDIT_Handle hObj, int Align) {
  EDIT_Obj* pObj;
  if (hObj == 0)
    return;
  WM_LOCK();
  pObj = EDIT_H2P(hObj);
  if (pObj) {
    pObj->Align = Align;
    EDIT_Invalidate(hObj);
  }
  WM_UNLOCK();
}

void EDIT_SetDefaultFont(const GUI_FONT* pFont) {
  _pDefaultFont = pFont;
}

const GUI_FONT* EDIT_GetDefaultFont(void) {
  return _pDefaultFont;
}

void EDIT_SetDefaultTextAlign(int Align) {
  WM_LOCK();
  _DefaultAlign = Align;
  WM_UNLOCK();
}

#else  /* avoid empty object files */

void Edit_C(void) {}

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文幕一区二区三区久久蜜桃| 有码一区二区三区| 中文字幕第一区第二区| 亚洲美女在线一区| 激情欧美一区二区| 99国产精品国产精品毛片| 欧美日韩精品是欧美日韩精品| 久久久亚洲午夜电影| 亚洲自拍偷拍图区| 国产成人夜色高潮福利影视| 欧美色手机在线观看| 国产亚洲精品bt天堂精选| 日韩精品一级中文字幕精品视频免费观看 | 日本韩国欧美三级| 精品久久人人做人人爱| 亚洲成人动漫一区| 91啪亚洲精品| 国产精品色呦呦| 九九视频精品免费| 7777精品伊人久久久大香线蕉超级流畅 | 国产黄色成人av| 日韩视频一区二区三区| 亚洲成人av在线电影| 91小视频免费观看| 国产精品久久久久精k8 | 中文字幕第一区第二区| 久久机这里只有精品| 8x8x8国产精品| 日韩精品国产欧美| 欧美性色aⅴ视频一区日韩精品| 最好看的中文字幕久久| 成人午夜视频在线| 久久久久久99精品| 精品一区二区在线播放| 日韩一区二区免费在线电影| 亚洲成va人在线观看| 在线免费观看一区| 一区二区三区视频在线看| 色综合亚洲欧洲| 亚洲综合久久久| 欧美日韩夫妻久久| 天堂影院一区二区| 欧美一级欧美三级在线观看| 蜜桃视频一区二区三区在线观看| 日韩一区二区免费视频| 日本欧美在线观看| 精品精品国产高清一毛片一天堂| 日本高清无吗v一区| 亚洲人成伊人成综合网小说| 一本色道久久综合亚洲91| 亚洲日本va午夜在线电影| 色婷婷狠狠综合| 日韩黄色片在线观看| 日韩三级av在线播放| 韩国av一区二区三区| 日本一区二区三区电影| 色综合天天天天做夜夜夜夜做| 亚洲v日本v欧美v久久精品| 91精品国模一区二区三区| 蜜臀av一区二区在线观看| 久久久久久毛片| 91精品办公室少妇高潮对白| 亚洲国产aⅴ成人精品无吗| 4438x亚洲最大成人网| 国内精品第一页| 亚洲色大成网站www久久九九| 欧美主播一区二区三区美女| 久久精品国产亚洲高清剧情介绍| 亚洲国产成人在线| 欧美日韩午夜影院| 国产精品综合二区| 一区二区三区欧美日韩| 日韩一区二区麻豆国产| av不卡免费在线观看| 亚洲va欧美va人人爽午夜| 26uuu成人网一区二区三区| 91丨九色丨蝌蚪富婆spa| 日韩成人av影视| 亚洲三级在线观看| 欧美不卡一区二区| 91免费在线看| 国产在线国偷精品免费看| 亚洲欧洲精品天堂一级| 欧美成人性战久久| 色婷婷综合久久久久中文 | 久久久久国产一区二区三区四区| 91国在线观看| 成人午夜精品在线| 日产精品久久久久久久性色| 最新国产の精品合集bt伙计| 久久久五月婷婷| 欧美区视频在线观看| 不卡的av网站| 国产精品一区二区久久精品爱涩| 亚洲成av人片一区二区| 亚洲视频一区二区在线观看| 久久久久国色av免费看影院| 91精品婷婷国产综合久久性色| 91浏览器在线视频| 风间由美一区二区av101| 日本不卡123| 亚洲一二三四区| 亚洲欧美日韩综合aⅴ视频| 久久久精品影视| 精品国产亚洲在线| 宅男在线国产精品| 欧美三级日韩三级| 日本黄色一区二区| 色哟哟国产精品| 91香蕉视频黄| 色综合久久天天综合网| 成人性生交大片免费看在线播放| 精品一区二区三区视频在线观看| 午夜精品久久久久久久| 亚洲精品中文字幕乱码三区| 亚洲少妇30p| 亚洲欧洲日韩在线| 亚洲视频免费看| 亚洲欧美成人一区二区三区| 亚洲欧洲韩国日本视频| 国产精品美女www爽爽爽| 国产喂奶挤奶一区二区三区 | 欧美情侣在线播放| 欧美精品色综合| 日韩一区二区视频| 日韩美一区二区三区| 欧美大片国产精品| 2022国产精品视频| 国产日韩欧美一区二区三区综合| 中文字幕欧美激情一区| 国产精品女同一区二区三区| 亚洲视频一区二区在线| 伊人性伊人情综合网| 午夜激情一区二区| 久久精品国产免费| 国产成人在线视频网址| 成人av影视在线观看| 色综合天天综合给合国产| 日本国产一区二区| 日韩视频在线你懂得| 亚洲国产精品av| 亚洲一区在线看| 韩国成人在线视频| 99视频国产精品| 3atv一区二区三区| 久久久久97国产精华液好用吗| 亚洲人精品一区| 精品一区二区三区视频在线观看| 9人人澡人人爽人人精品| 欧美色图免费看| 久久久久久久久一| 亚洲卡通动漫在线| 国产专区欧美精品| 91在线精品一区二区| 欧美人与禽zozo性伦| 久久精品视频网| 性做久久久久久免费观看| 日韩视频在线一区二区| 亚洲精品成人少妇| 一本久道中文字幕精品亚洲嫩 | 中文一区在线播放| 日韩一区在线播放| 国产传媒日韩欧美成人| 色婷婷国产精品综合在线观看| 国产婷婷精品av在线| 日韩中文字幕区一区有砖一区| 99精品黄色片免费大全| 亚洲免费av高清| 欧美怡红院视频| 日本sm残虐另类| 欧美韩国日本一区| 欧美视频在线一区二区三区| 日韩1区2区3区| 国产精品网友自拍| 在线视频观看一区| 国内精品免费**视频| 亚洲欧美在线aaa| 日韩午夜电影在线观看| 国产.欧美.日韩| 欧美96一区二区免费视频| 中文字幕精品在线不卡| 日韩精品一区二区三区视频播放| 在线观看视频一区二区| 成人国产精品免费| 亚洲成a人v欧美综合天堂下载| 日韩女同互慰一区二区| 精品日韩99亚洲| 日韩精品一区二| 91黄色在线观看| 激情图区综合网| 亚洲欧美一区二区三区国产精品 | 99久久久无码国产精品| 欧美一区二区久久久| 久久久国产一区二区三区四区小说 | 成人av网址在线| 日韩av高清在线观看| 亚洲第一狼人社区| 国产日韩欧美精品电影三级在线| 日本欧美肥老太交大片| 欧美乱熟臀69xxxxxx|