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

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

?? edit.c

?? C語言和ucGUI實現的電子地圖功能,地圖的移動(方向鍵),縮放,查找
?? C
?? 第 1 頁 / 共 2 頁
字號:
    pText    = (char*) GUI_ALLOC_h2p(pObj->hpText);
    NumChars = GUI__GetNumChars(pText);
    Offset   = (pObj->EditMode == GUI_EDIT_MODE_INSERT) ? 0 : 1;
    if (CursorPos < 0) {
      CursorPos = 0;
    }
    if (CursorPos > NumChars) {
      CursorPos = NumChars;
    }
    if (CursorPos > (pObj->MaxLen - Offset)) {
      CursorPos = pObj->MaxLen - Offset;
    }
    if (pObj->CursorPos != CursorPos) {
      pObj->CursorPos = CursorPos;
    }
    pObj->SelSize = 0;
  }
}

/*********************************************************************
*
*       _OnTouch
*/
static void _OnTouch(EDIT_Handle hObj, EDIT_Obj* pObj, WM_MESSAGE*pMsg) {
  const GUI_PID_STATE* pState = (const GUI_PID_STATE*)pMsg->Data.p;
  GUI_USE_PARA(pObj);
  if (pMsg->Data.p) {  /* Something happened in our area (pressed or released) */
	  static int StartPress = 0;	//houhh 20061023...
    if (pState->Pressed) {
      GUI_DEBUG_LOG1("EDIT__Callback(WM_TOUCH, Pressed, Handle %d)\n",1);
      EDIT_SetCursorAtPixel(hObj, pState->x);
	  StartPress = pObj->CursorPos;	//houhh 20061023...
    } else {
      GUI_DEBUG_LOG1("EDIT__Callback(WM_TOUCH, Released, Handle %d)\n",1);
    }
  } else {
    GUI_DEBUG_LOG1("_EDIT_Callback(WM_TOUCH, Moved out, Handle %d)\n",1);
  }
}

/*********************************************************************
*
*       EDIT__Callback
*/
static void EDIT__Callback (WM_MESSAGE * pMsg) {
  int IsEnabled;
  EDIT_Handle hObj = (EDIT_Handle) pMsg->hWin;
  EDIT_Obj*   pObj = (EDIT_Obj*) GUI_ALLOC_h2p(hObj);
  IsEnabled = WM__IsEnabled(hObj);
  /* Let widget handle the standard messages */
  if (WIDGET_HandleActive(hObj, pMsg) == 0) {
    return;
  }
  switch (pMsg->MsgId) {
  case WM_TOUCH:
    _OnTouch(hObj, pObj, pMsg);
    break;
  case WM_PAINT:
    GUI_DEBUG_LOG("EDIT: _Callback(WM_PAINT)\n");
    _Paint(pObj, hObj);
    return;
  case WM_DELETE:
    GUI_DEBUG_LOG("EDIT: _Callback(WM_DELETE)\n");
    _Delete(pObj);
    break;       /* No return here ... WM_DefaultProc needs to be called */
  case WM_KEY:
    if (IsEnabled) {
      if ( ((const WM_KEY_INFO*)(pMsg->Data.p))->PressedCnt >0) {
        int Key = ((const WM_KEY_INFO*)(pMsg->Data.p))->Key;
        switch (Key) {
          case GUI_KEY_TAB:
            break;                    /* Send to parent by not doing anything */
          default:
            EDIT_AddKey(hObj, Key);
            return;
        }
      }
    }
    break;
  }
  WM_DefaultProc(pMsg);
}

/*********************************************************************
*
*       Exported routines:  Create
*
**********************************************************************
*/
/*********************************************************************
*
*       EDIT_CreateEx
*/
EDIT_Handle EDIT_CreateEx(int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int WinFlags, int ExFlags,
                          int Id, int MaxLen)
{
  EDIT_Handle hObj;
  GUI_USE_PARA(ExFlags);
  /* Alloc memory for obj */
  WinFlags |= WM_CF_LATE_CLIP;    /* Always use late clipping since widget is optimized for it. */
  hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, hParent, WM_CF_SHOW | WinFlags, EDIT__Callback,
                                sizeof(EDIT_Obj) - sizeof(WM_Obj));
  if (hObj) {
    EDIT_Obj* pObj;
    WM_LOCK();
    pObj = (EDIT_Obj*)GUI_ALLOC_h2p(hObj);
    /* init widget specific variables */
    WIDGET__Init(&pObj->Widget, Id, WIDGET_STATE_FOCUSSABLE);
    /* init member variables */
    INIT_ID(pObj);
    pObj->Props         = EDIT__DefaultProps;
    pObj->XSizeCursor   = 1;
    pObj->MaxLen        = (MaxLen == 0) ? 8 : MaxLen;
    pObj->BufferSize    = 0;
    pObj->hpText        = 0;
    if (_IncrementBuffer(pObj, pObj->MaxLen + 1) == 0) {
      GUI_DEBUG_ERROROUT("EDIT_Create failed to alloc buffer");
      EDIT_Delete(hObj);
      hObj = 0;
    }
    WM_UNLOCK();
  }
  return hObj;
}

/*********************************************************************
*
*       Exported routines:  Various methods
*
**********************************************************************
*/
/*********************************************************************
*
*       EDIT_AddKey
*/
void EDIT_AddKey(EDIT_Handle hObj, int Key) {
  if (hObj) {
    EDIT_Obj* pObj;
    WM_LOCK();
    pObj = EDIT_H2P(hObj);
    if (pObj) {
      if (pObj->pfAddKeyEx) {
        pObj->pfAddKeyEx(hObj, Key);
      } else {
        switch (Key) {
        case GUI_KEY_UP:
          if (pObj->hpText) {
            char* pText;
            U16 Char;
            pText  = (char*) GUI_ALLOC_h2p(pObj->hpText);
            pText += GUI_UC__NumChars2NumBytes(pText, pObj->CursorPos);
            Char   = GUI_UC_GetCharCode(pText);
            if (Char < 0x7f) {  
              *pText = Char + 1;
              WM_NotifyParent(hObj, WM_NOTIFICATION_VALUE_CHANGED);
            }
          }
          break;
        case GUI_KEY_DOWN:
          if (pObj->hpText) {
            char* pText;
            U16 Char;
            pText  = (char*) GUI_ALLOC_h2p(pObj->hpText);
            pText += GUI_UC__NumChars2NumBytes(pText, pObj->CursorPos);
            Char   = GUI_UC_GetCharCode(pText);
            if (Char > 0x20) {  
              *pText = Char - 1;
              WM_NotifyParent(hObj, WM_NOTIFICATION_VALUE_CHANGED);
            }
          }
          break;
        case GUI_KEY_RIGHT:
          EDIT__SetCursorPos(pObj, pObj->CursorPos + 1);
          break;
        case GUI_KEY_LEFT:
          EDIT__SetCursorPos(pObj, pObj->CursorPos - 1);
          break;
        case GUI_KEY_BACKSPACE:
          EDIT__SetCursorPos(pObj, pObj->CursorPos - 1);
          _DeleteChar(hObj, pObj);
          break;
        case GUI_KEY_DELETE:
          _DeleteChar(hObj, pObj);
          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;
            EDIT__SetCursorPos(pObj, pObj->CursorPos);
          }
          break;
        case GUI_KEY_ENTER:
        case GUI_KEY_ESCAPE:
          break;
        default:
          if (Key >= 0x20) {
            if (pObj->EditMode != GUI_EDIT_MODE_INSERT) {
              _DeleteChar(hObj, pObj);
            }
            if (_InsertChar(hObj, pObj, Key)) {
              EDIT__SetCursorPos(pObj, pObj->CursorPos + 1);
            }
          }
        }
      }
      EDIT_Invalidate(hObj);
    }
    WM_UNLOCK();
  }
}

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

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

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

/*********************************************************************
*
*       EDIT_SetText
*/
void EDIT_SetText(EDIT_Handle hObj, const char* s) {
  if (hObj) {
    EDIT_Obj* pObj;
    WM_LOCK();
    pObj = EDIT_H2P(hObj);
    if (s) {
      int NumBytesNew, NumBytesOld = 0;
      int NumCharsNew;
      if (pObj->hpText) {
        char* pText;
        pText       = (char*) GUI_ALLOC_h2p(pObj->hpText);
        NumBytesOld = strlen(pText) + 1;
      }
      NumCharsNew = GUI__GetNumChars(s);
      if (NumCharsNew > pObj->MaxLen) {
        NumCharsNew = pObj->MaxLen;
      }
      NumBytesNew = GUI_UC__NumChars2NumBytes(s, NumCharsNew) + 1;
      if (_IsSpaceInBuffer(pObj, NumBytesNew - NumBytesOld)) {
        char* pText;
        pText = (char*) GUI_ALLOC_h2p(pObj->hpText);
        memcpy(pText, s, NumBytesNew);
        pObj->CursorPos = NumBytesNew - 1;
        if (pObj->CursorPos == pObj->MaxLen) {
          if (pObj->EditMode == GUI_EDIT_MODE_OVERWRITE) {
            pObj->CursorPos--;
          }
        }
      }
    } else {
      GUI_ALLOC_FreePtr(&pObj->hpText);
      pObj->BufferSize = 0;
      pObj->CursorPos  = 0;
    }
    EDIT_Invalidate(hObj);
    WM_UNLOCK();
  }
}

/*********************************************************************
*
*       EDIT_GetText
*/
void EDIT_GetText(EDIT_Handle hObj, char* sDest, int MaxLen) {
  if (sDest) {
    *sDest = 0;
    if (hObj) {
      EDIT_Obj* pObj;
      WM_LOCK();
      pObj = EDIT_H2P(hObj);
      if (pObj->hpText) {
        char* pText;
        int NumChars, NumBytes;
        pText = (char*) GUI_ALLOC_h2p(pObj->hpText);
        NumChars = GUI__GetNumChars(pText);
        if (NumChars > MaxLen) {
          NumChars = MaxLen;
        }
        NumBytes = GUI_UC__NumChars2NumBytes(pText, NumChars);
        memcpy(sDest, pText, NumBytes);
        *(sDest + NumBytes) = 0;
      }
      WM_UNLOCK();
    }
  }
}

/*********************************************************************
*
*       EDIT_GetValue
*/
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;
}

/*********************************************************************
*
*       EDIT_SetValue
*/
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->pfUpdateBuffer) {
        pObj->pfUpdateBuffer(hObj);
      }
      WM_InvalidateWindow(hObj);
      WM_NotifyParent(hObj, WM_NOTIFICATION_VALUE_CHANGED);
    }
    WM_UNLOCK();
  }
}

/*********************************************************************
*
*       EDIT_SetMaxLen
*/
void EDIT_SetMaxLen(EDIT_Handle  hObj, int MaxLen) {
  if (hObj) {
    EDIT_Obj* pObj;
    WM_LOCK();
    pObj = EDIT_H2P(hObj);
    if (MaxLen != pObj->MaxLen) {
      if (MaxLen < pObj->MaxLen) {
        if (pObj->hpText) {
          char* pText;
          int   NumChars;
          pText    = (char*) GUI_ALLOC_h2p(pObj->hpText);
          NumChars = GUI__GetNumChars(pText);
          if (NumChars > MaxLen) {
            int NumBytes;
            NumBytes = GUI_UC__NumChars2NumBytes(pText, MaxLen);
            *(pText + NumBytes) = 0;
          }
        }
      }
      _IncrementBuffer(pObj, MaxLen - pObj->BufferSize + 1);
      pObj->MaxLen = MaxLen;
      EDIT_Invalidate(hObj);
    }
    WM_UNLOCK();
  }
}

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

#else  /* avoid empty object files */

void Edit_C(void) {}

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品影视在线观看| 色综合久久综合中文综合网| 成人综合婷婷国产精品久久蜜臀| 91麻豆福利精品推荐| 日韩欧美一卡二卡| 亚洲五月六月丁香激情| 国产69精品久久久久777| 日韩丝袜美女视频| 亚洲自拍都市欧美小说| 不卡影院免费观看| 精品国产乱码久久| 日韩精品一卡二卡三卡四卡无卡| 色综合一个色综合亚洲| 国产日韩在线不卡| 激情综合网激情| 91精品国产麻豆国产自产在线| 亚洲欧美精品午睡沙发| www.欧美日韩国产在线| 精品99一区二区三区| 日日摸夜夜添夜夜添国产精品| 在线观看区一区二| 亚洲免费电影在线| 波多野结衣中文一区| 欧美国产精品中文字幕| 国产成人午夜视频| 久久中文字幕电影| 国产综合久久久久久鬼色| 欧美一区二区三区四区在线观看 | 国产精品美女久久久久久久久| 男男gaygay亚洲| 欧美一级欧美一级在线播放| 丝瓜av网站精品一区二区| 欧美日韩精品一区二区三区蜜桃| 一区二区三区四区精品在线视频| 色婷婷综合激情| 一区二区三区中文字幕在线观看| 91一区二区在线| 一区二区欧美精品| 欧美日韩五月天| 日韩中文字幕91| 欧美一级黄色大片| 美国毛片一区二区| 国产欧美日韩精品一区| 成人av影视在线观看| 亚洲天天做日日做天天谢日日欢| 日本久久一区二区| 肉色丝袜一区二区| 精品福利av导航| 国产成人高清在线| 亚洲男人的天堂在线aⅴ视频| 欧洲视频一区二区| 七七婷婷婷婷精品国产| 久久精品欧美一区二区三区麻豆| 成人综合婷婷国产精品久久免费| 亚洲日本电影在线| 欧美一级高清片在线观看| 国产精品一区二区免费不卡 | 337p粉嫩大胆噜噜噜噜噜91av| 国产乱一区二区| 国产精品精品国产色婷婷| 91久久香蕉国产日韩欧美9色| 香蕉成人啪国产精品视频综合网| 欧美xxxxxxxx| 91啦中文在线观看| 麻豆精品一区二区三区| 亚洲成人777| 精品久久久久99| 99久久精品国产网站| 舔着乳尖日韩一区| 日韩久久精品一区| 成人av网站在线观看| 爽爽淫人综合网网站| 国产日韩亚洲欧美综合| 欧美亚洲丝袜传媒另类| 极品少妇xxxx精品少妇偷拍| 亚洲图片激情小说| 精品国产污网站| 在线观看网站黄不卡| 国产成人自拍网| 日韩中文字幕麻豆| 亚洲乱码国产乱码精品精可以看| 91精品国产91久久综合桃花| aaa欧美大片| 国产老肥熟一区二区三区| 亚洲成人av一区二区| 国产精品国产自产拍在线| 日韩欧美国产一区在线观看| 色老汉av一区二区三区| 国产成a人亚洲精品| 青青草97国产精品免费观看无弹窗版| 国产精品毛片久久久久久| 91精品国产综合久久蜜臀| 色综合视频在线观看| 国产一二三精品| 蜜臀av性久久久久蜜臀av麻豆| 亚洲老司机在线| 中文字幕乱码亚洲精品一区| 欧美videos中文字幕| 欧美精选一区二区| 欧洲国内综合视频| 99久久99久久精品免费观看| 国产不卡视频在线播放| 老色鬼精品视频在线观看播放| 亚洲国产欧美在线| 亚洲精品视频在线观看网站| 国产精品午夜在线| 国产欧美日韩三级| 久久毛片高清国产| ww亚洲ww在线观看国产| 日韩区在线观看| 日韩一区二区三区四区五区六区| 欧美午夜不卡视频| 欧美日韩免费高清一区色橹橹| 欧美性猛交一区二区三区精品| 91在线一区二区| 99re免费视频精品全部| 成人动漫中文字幕| 99re这里都是精品| 色综合中文字幕国产| 成人sese在线| 99精品视频一区二区三区| 99re成人精品视频| 99久久精品情趣| 在线视频中文字幕一区二区| 欧美三级中文字| 在线播放中文一区| 欧美一级高清片| 欧美精品一区二区三区在线| 国产亚洲成av人在线观看导航| 国产三级欧美三级日产三级99 | 日韩视频123| 久久久久久久精| 国产欧美日韩视频在线观看| 综合激情成人伊人| 亚洲国产精品天堂| 老鸭窝一区二区久久精品| 一本大道久久a久久综合婷婷| 色综合激情久久| 欧美精品精品一区| 久久综合九色综合欧美就去吻| 久久久久88色偷偷免费| 亚洲特黄一级片| 首页亚洲欧美制服丝腿| 精品一区二区日韩| 91视频观看视频| 91精品欧美久久久久久动漫| 久久久久国产免费免费| 亚洲男同性恋视频| 看片网站欧美日韩| 91蜜桃婷婷狠狠久久综合9色| 51午夜精品国产| 国产欧美一区二区精品忘忧草| 一区二区三区日韩在线观看| 日韩电影在线一区二区| 成人激情黄色小说| 欧美喷潮久久久xxxxx| 久久久国产一区二区三区四区小说 | 5566中文字幕一区二区电影| 国产日韩亚洲欧美综合| 亚洲成人激情自拍| av不卡在线播放| 欧美成人猛片aaaaaaa| 亚洲精品亚洲人成人网| 激情伊人五月天久久综合| 色综合久久久久久久久久久| 欧美大白屁股肥臀xxxxxx| 亚洲欧美国产77777| 精品中文字幕一区二区小辣椒| 色综合久久久久综合体桃花网| 久久综合一区二区| 亚洲成av人片一区二区三区| proumb性欧美在线观看| 欧美va亚洲va香蕉在线| 一区二区三区日韩| 成人一区二区三区视频在线观看| 欧美一区二区三级| 亚洲主播在线观看| 91丨九色porny丨蝌蚪| 久久久亚洲国产美女国产盗摄 | 国产xxx精品视频大全| 欧美日韩免费不卡视频一区二区三区| 国产精品成人在线观看| 国产高清成人在线| 日韩一区二区电影网| 天天影视涩香欲综合网| 91视频国产资源| 国产精品成人免费在线| 丁香婷婷综合网| 久久免费偷拍视频| 狠狠色综合播放一区二区| 欧美日韩国产成人在线91| 一区二区三区高清| 99久久精品费精品国产一区二区| 日本一区二区三区国色天香| 久久99久国产精品黄毛片色诱| 欧美成人精品高清在线播放| 九九**精品视频免费播放| 91精品国产乱码久久蜜臀| 视频一区二区三区在线| 欧美高清视频一二三区|