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

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

?? listbox.c

?? UC_GUI開發(fā)源代碼,里面含有范例,源文件
?? C
?? 第 1 頁 / 共 3 頁
字號:
    pItem->xSize = 0;
    pItem->ySize = 0;
  }
}

/*********************************************************************
*
*       LISTBOX__InvalidateInsideArea
*/
void LISTBOX__InvalidateInsideArea(LISTBOX_Handle hObj) {
  GUI_RECT Rect;
  WM_GetInsideRectExScrollbar(hObj, &Rect);
  WM_InvalidateRect(hObj, &Rect);
}

/*********************************************************************
*
*       LISTBOX__InvalidateItem
*/
void LISTBOX__InvalidateItem(LISTBOX_Handle hObj, const LISTBOX_Obj* pObj, int Sel) {
  if (Sel >= 0) {
    int ItemPosY;
    ItemPosY = _GetItemPosY(hObj, pObj, Sel);
    if (ItemPosY >= 0) {
      GUI_RECT Rect;
      int ItemDistY;
      ItemDistY = _GetItemSizeY(hObj, pObj, Sel);
      WM_GetInsideRectExScrollbar(hObj, &Rect);
      Rect.y0 += ItemPosY;
      Rect.y1  = Rect.y0 + ItemDistY - 1;
      WM_InvalidateRect(hObj, &Rect);
    }
  }
}

/*********************************************************************
*
*       LISTBOX__InvalidateItemAndBelow
*/
void LISTBOX__InvalidateItemAndBelow(LISTBOX_Handle hObj, const LISTBOX_Obj* pObj, int Sel) {
  if (Sel >= 0) {
    int ItemPosY;
    ItemPosY = _GetItemPosY(hObj, pObj, Sel);
    if (ItemPosY >= 0) {
      GUI_RECT Rect;
      WM_GetInsideRectExScrollbar(hObj, &Rect);
      Rect.y0 += ItemPosY;
      WM_InvalidateRect(hObj, &Rect);
    }
  }
}

/*********************************************************************
*
*       LISTBOX__SetScrollbarWidth
*/
void LISTBOX__SetScrollbarWidth(LISTBOX_Handle hObj, const LISTBOX_Obj* pObj) {
  WM_HWIN hBarH, hBarV;
  int Width;
  Width = pObj->ScrollbarWidth;
  if (Width == 0) {
    Width = SCROLLBAR_GetDefaultWidth();
  }
  hBarH = WM_GetDialogItem(hObj, GUI_ID_HSCROLL);
  hBarV = WM_GetDialogItem(hObj, GUI_ID_VSCROLL);
  SCROLLBAR_SetWidth(hBarH, Width);
  SCROLLBAR_SetWidth(hBarV, Width);
}

/*********************************************************************
*
*       LISTBOX__SetScrollbarColor
*/
void LISTBOX__SetScrollbarColor(LISTBOX_Handle hObj, const LISTBOX_Obj* pObj) {
  WM_HWIN hBarH, hBarV;
  int i;
  hBarH = WM_GetDialogItem(hObj, GUI_ID_HSCROLL);
  hBarV = WM_GetDialogItem(hObj, GUI_ID_VSCROLL);
  if (hBarH || hBarV) {
    for (i = 0; i < GUI_COUNTOF(pObj->Props.aScrollbarColor); i++) {
      if (pObj->Props.aScrollbarColor[i] != GUI_INVALID_COLOR) {
        SCROLLBAR_SetColor(hBarH, i, pObj->Props.aScrollbarColor[i]);
        SCROLLBAR_SetColor(hBarV, i, pObj->Props.aScrollbarColor[i]);
      }
    }
  }
}

/*********************************************************************
*
*       Exported routines:  Callback
*
**********************************************************************
*/
/*********************************************************************
*
*       LISTBOX_Callback
*/
void LISTBOX_Callback(WM_MESSAGE * pMsg) {
  LISTBOX_Handle hObj;
  LISTBOX_Obj * pObj;
  WM_SCROLL_STATE ScrollState;
  WM_MESSAGE Msg;
  hObj = pMsg->hWin;
  pObj = (LISTBOX_Obj *)GUI_ALLOC_h2p(hObj); /* Don't use use WIDGET_H2P because WIDGET_INIT_ID() has not be called at this point */
  /* Let widget handle the standard messages */
  if (WIDGET_HandleActive(hObj, pMsg) == 0) {
    /* Owner needs to be informed about focus change */
    if (pMsg->MsgId == WM_SET_FOCUS) {
      if (pMsg->Data.v == 0) {            /* Lost focus ? */
        _NotifyOwner(hObj, LISTBOX_NOTIFICATION_LOST_FOCUS);
      }
    }
    return;
  }
  switch (pMsg->MsgId) {
  case WM_NOTIFY_PARENT:
    switch (pMsg->Data.v) {
    case WM_NOTIFICATION_VALUE_CHANGED:
      if (pMsg->hWinSrc  == WM_GetScrollbarV(hObj)) {
        WM_GetScrollState(pMsg->hWinSrc, &ScrollState);
        pObj->ScrollStateV.v = ScrollState.v;
        LISTBOX__InvalidateInsideArea(hObj);
        _NotifyOwner(hObj, WM_NOTIFICATION_SCROLL_CHANGED);
      } else if (pMsg->hWinSrc == WM_GetScrollbarH(hObj)) {
        WM_GetScrollState(pMsg->hWinSrc, &ScrollState);
        pObj->ScrollStateH.v = ScrollState.v;
        LISTBOX__InvalidateInsideArea(hObj);
        _NotifyOwner(hObj, WM_NOTIFICATION_SCROLL_CHANGED);
      }
      break;
    case WM_NOTIFICATION_SCROLLBAR_ADDED:
      #if WIDGET_USE_PARENT_EFFECT
        WIDGET_SetEffect(pMsg->hWinSrc, pObj->Widget.pEffect);
      #endif
      LISTBOX_UpdateScrollers(hObj);
      break;
    }
    break;
  case WM_PAINT:
    _OnPaint(hObj, pObj, pMsg);
    break;
  case WM_PID_STATE_CHANGED:
    {
      const WM_PID_STATE_CHANGED_INFO* pInfo = (const WM_PID_STATE_CHANGED_INFO*)pMsg->Data.p;
      if (pInfo->State) {
        int Sel;
        Sel = _GetItemFromPos(hObj, pObj, pInfo->x, pInfo->y);
        if (Sel >= 0) {
          _ToggleMultiSel(hObj, pObj, Sel);
          LISTBOX_SetSel(hObj, Sel);
        }
        _NotifyOwner(hObj, WM_NOTIFICATION_CLICKED);
        return;
      }
    }
    break;
  case WM_TOUCH:
    _OnTouch(hObj, pMsg);
    return;
#if GUI_SUPPORT_MOUSE
  case WM_MOUSEOVER:
    if (_OnMouseOver(hObj, pObj, pMsg) == 0)
      return;
    break;
#endif
  case WM_DELETE:
    _FreeAttached(pObj);
    break;       /* No return here ... WM_DefaultProc needs to be called */
  case WM_KEY:
    if (((const WM_KEY_INFO*)(pMsg->Data.p))->PressedCnt > 0) {
      int Key;
      Key = ((const WM_KEY_INFO*)(pMsg->Data.p))->Key;
      if (LISTBOX_AddKey(hObj, Key)) {
        return;
      }
    }
    /* Send a WM_NOTIFY_OWNER_KEY message with the key information to the owner window */
    Msg = *pMsg;
    Msg.MsgId = WM_NOTIFY_OWNER_KEY;
    _SendToOwner(hObj, &Msg);
    if (!WM_IsWindow(hObj)) {
      return;
    }
    break;
  case WM_SIZE:
    LISTBOX_UpdateScrollers(hObj);
    WM_InvalidateWindow(hObj);
    break;
  }
  WM_DefaultProc(pMsg);
}

/*********************************************************************
*
*       Exported routines:  Create
*
**********************************************************************
*/
/*********************************************************************
*
*       LISTBOX_CreateEx
*/
LISTBOX_Handle LISTBOX_CreateEx(int x0, int y0, int xsize, int ysize, WM_HWIN hParent,
                                int WinFlags, int ExFlags, int Id, const GUI_ConstString* ppText)
{
  LISTBOX_Handle hObj;
  GUI_USE_PARA(ExFlags);
  WM_LOCK();
  hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, hParent, WinFlags, LISTBOX_Callback,
                                sizeof(LISTBOX_Obj) - sizeof(WM_Obj));
  if (hObj) {
    LISTBOX_Obj* pObj;
    pObj = (LISTBOX_Obj *)GUI_ALLOC_h2p(hObj); /* Don't use use WIDGET_H2P because WIDGET_INIT_ID() has not be called at this point */
     /* Init sub-classes */
    GUI_ARRAY_CREATE(&pObj->ItemArray);
   /* init widget specific variables */
    WIDGET__Init(&pObj->Widget, Id, WIDGET_STATE_FOCUSSABLE);
    LISTBOX_INIT_ID(pObj);
    pObj->Props = LISTBOX_DefaultProps;
    if (ppText) {
      /* init member variables */
      /* Set non-zero attributes */
      LISTBOX_SetText(hObj, ppText);
    }
    LISTBOX_UpdateScrollers(hObj);
  }
  WM_UNLOCK();
  return hObj;
}

/*********************************************************************
*
*       Exported routines:  Various methods
*
**********************************************************************
*/
/*********************************************************************
*
*       LISTBOX_InvalidateItem
*/
void LISTBOX_InvalidateItem(LISTBOX_Handle hObj, int Index) {
  if (hObj) {
    LISTBOX_Obj* pObj;
    int NumItems;
    WM_LOCK();
    pObj = LISTBOX_H2P(hObj);
    NumItems = LISTBOX__GetNumItems(pObj);
    if (Index < NumItems) {
      if (Index < 0) {
        int i;
        for (i = 0; i < NumItems; i++) {
          LISTBOX__InvalidateItemSize(pObj, i);
        }
        LISTBOX_UpdateScrollers(hObj);
        LISTBOX__InvalidateInsideArea(hObj);
      } else {
        LISTBOX__InvalidateItemSize(pObj, Index);
        LISTBOX_UpdateScrollers(hObj);
        LISTBOX__InvalidateItemAndBelow(hObj, pObj, Index);
      }
    }
    WM_UNLOCK();
  }
}

/*********************************************************************
*
*       LISTBOX_AddKey
*
* Returns: 1 if Key has been consumed
*          0 else 
*/
int LISTBOX_AddKey(LISTBOX_Handle hObj, int Key) {
  int r = 0;
  if (hObj) {
    WM_LOCK();
    r = _AddKey(hObj, Key);
    WM_UNLOCK();
  }
  return r;
}

/*********************************************************************
*
*       LISTBOX_AddString
*/
void LISTBOX_AddString(LISTBOX_Handle hObj, const char* s) {
  if (hObj && s) {
    LISTBOX_Obj* pObj;
    LISTBOX_ITEM Item = {0, 0};
    WM_LOCK();
    pObj = LISTBOX_H2P(hObj);
    if (GUI_ARRAY_AddItem(&pObj->ItemArray, &Item, sizeof(LISTBOX_ITEM) + strlen(s)) == 0) {
      unsigned ItemIndex = GUI_ARRAY_GetNumItems(&pObj->ItemArray) - 1;
      LISTBOX_ITEM* pItem= (LISTBOX_ITEM*)GUI_ARRAY_GetpItem(&pObj->ItemArray, ItemIndex);
      strcpy(pItem->acText, s);
      LISTBOX__InvalidateItemSize(pObj, ItemIndex);
      LISTBOX_UpdateScrollers(hObj);
      LISTBOX__InvalidateItem(hObj, pObj, ItemIndex);
    }
    WM_UNLOCK();
  }
}

/*********************************************************************
*
*       LISTBOX_SetText
*/
void LISTBOX_SetText(LISTBOX_Handle hObj, const GUI_ConstString* ppText) {
  if (hObj) {
    int i;
    const char* s;
    WM_LOCK();
    if (ppText) {
      for (i = 0; (s = *(ppText+i)) != 0; i++) {
        LISTBOX_AddString(hObj, s);
      }
    }
    LISTBOX_InvalidateItem(hObj, LISTBOX_ALL_ITEMS);
    WM_UNLOCK();
  }
}

/*********************************************************************
*
*       LISTBOX_SetSel
*/
void LISTBOX_SetSel (LISTBOX_Handle hObj, int NewSel) {
  if (hObj) {
    LISTBOX_Obj* pObj;
    int MaxSel;
    WM_LOCK();
    pObj = LISTBOX_H2P(hObj);
    MaxSel = LISTBOX__GetNumItems(pObj);
    MaxSel = MaxSel ? MaxSel - 1 : 0;
    if (NewSel > MaxSel) {
      NewSel = MaxSel;
    }
    if (NewSel < 0) {
      NewSel = -1;
    } else {
      WM_HMEM hItem = GUI_ARRAY_GethItem(&pObj->ItemArray, NewSel);
      if (hItem) {
        LISTBOX_ITEM* pItem = (LISTBOX_ITEM*)GUI_ALLOC_h2p(hItem);
        if (pItem->Status & LISTBOX_ITEM_DISABLED) {
          NewSel = -1;
        }
      }
    }
    if (NewSel != pObj->Sel) {
      int OldSel;
      OldSel    = pObj->Sel;
      pObj->Sel = NewSel;
      if (_UpdateScrollPos(hObj, pObj)) {
        LISTBOX__InvalidateInsideArea(hObj);
      } else {
        LISTBOX__InvalidateItem(hObj, pObj, OldSel);
        LISTBOX__InvalidateItem(hObj, pObj, NewSel);
      }
      _NotifyOwner(hObj, WM_NOTIFICATION_SEL_CHANGED);
    }
    WM_UNLOCK();
  }
}

/*********************************************************************
*
*       LISTBOX_GetSel
*/
int  LISTBOX_GetSel (LISTBOX_Handle hObj) {
  int r = -1;
  LISTBOX_Obj* pObj;
  if (hObj) {
    WM_LOCK();
    pObj = LISTBOX_H2P(hObj);
    r = pObj->Sel;
    WM_UNLOCK();
  }
  return r;
}

/*********************************************************************
*
*       LISTBOX_IncSel
*/
void LISTBOX_IncSel      (LISTBOX_Handle hObj) {
  if (hObj) {
    WM_LOCK();
    _MoveSel(hObj, 1);
    WM_UNLOCK();
  }
}

/*********************************************************************
*
*       LISTBOX_DecSel
*/
void LISTBOX_DecSel      (LISTBOX_Handle hObj) {
  if (hObj) {
    WM_LOCK();
    _MoveSel(hObj, -1);
    WM_UNLOCK();
  }
}

#else                            /* Avoid problems with empty object modules */
  void LISTBOX_C(void) {}
#endif

/*************************** End of file ****************************/
	 	 			 		    	 				 	  			   	 	 	 	 	 	  	  	      	   		 	 	 		  		  	 		 	  	  			     			       	   	 			  		    	 	     	 				  	 					 	 			   	  	  			 				 		 	 	 			     			 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产午夜亚洲精品理论片色戒| 精品日韩一区二区| 91久久香蕉国产日韩欧美9色| 91国产免费看| 欧美一区二区视频免费观看| 欧美刺激午夜性久久久久久久| 91精品国产一区二区三区香蕉| 欧美大白屁股肥臀xxxxxx| 欧美韩国日本一区| 婷婷开心久久网| 国产精品影音先锋| 欧美影院一区二区| 精品区一区二区| 麻豆精品新av中文字幕| 亚洲国产欧美另类丝袜| 国产一区二区三区四区在线观看| 欧美系列在线观看| 国产精品二三区| 国产成人精品综合在线观看| 日韩一级成人av| 午夜免费欧美电影| 色狠狠一区二区| 中文字幕制服丝袜一区二区三区| 国产制服丝袜一区| 日韩欧美激情一区| 日日夜夜一区二区| 欧美日韩一卡二卡三卡| 亚洲欧美一区二区三区孕妇| 春色校园综合激情亚洲| 久久日韩粉嫩一区二区三区| 日本成人在线电影网| 欧美区视频在线观看| 亚洲美女屁股眼交3| av亚洲精华国产精华精华| 中文字幕第一页久久| 国产91对白在线观看九色| 久久综合久久99| 韩国一区二区三区| 久久久不卡影院| 国产精品亚洲一区二区三区妖精 | ...中文天堂在线一区| 国产69精品久久777的优势| 精品国产一区二区三区久久久蜜月| 日韩精品免费专区| 日韩欧美在线影院| 国产精品中文字幕欧美| 国产欧美一区二区三区网站| 丁香另类激情小说| 国产精品国产三级国产普通话99 | 欧美三级日韩三级| 日韩激情视频网站| 26uuu精品一区二区在线观看| 极品瑜伽女神91| 国产精品色在线观看| 欧美午夜精品电影| 免费成人美女在线观看| 久久九九久久九九| 一本色道**综合亚洲精品蜜桃冫| 亚洲电影你懂得| 精品久久久久久最新网址| 国产99久久久久久免费看农村| 成人免费小视频| 91麻豆福利精品推荐| 亚洲一区日韩精品中文字幕| 欧美一级欧美三级在线观看| 国产黄色精品网站| 一区二区三区丝袜| 精品日韩成人av| 99久久精品国产一区| 日韩精品免费专区| 中文av一区特黄| 欧美老肥妇做.爰bbww| 九一九一国产精品| 亚洲自拍偷拍九九九| 精品国产亚洲在线| 色欧美乱欧美15图片| 美国欧美日韩国产在线播放| 亚洲欧美自拍偷拍色图| 欧美一区二区三区免费大片 | 日韩激情在线观看| 中文字幕一区视频| 欧美大肚乱孕交hd孕妇| 欧洲精品在线观看| 国产一区在线视频| 一区二区三区日韩精品| 久久午夜国产精品| 欧美精品一二三| 色综合 综合色| 国产精品一区2区| 蜜桃视频在线观看一区二区| 亚洲免费av在线| 国产日本亚洲高清| 欧美日韩成人综合| 92精品国产成人观看免费 | 欧美一区二区三区爱爱| 成人丝袜18视频在线观看| 日本欧洲一区二区| 亚洲国产人成综合网站| 国产精品国产三级国产专播品爱网| 精品国产一区二区三区不卡| 777午夜精品免费视频| 91视频91自| 99久久久无码国产精品| 国产不卡视频在线播放| 午夜av电影一区| 亚洲乱码日产精品bd | 日韩女同互慰一区二区| 欧美综合久久久| 99热99精品| 成人av网址在线| 国产激情视频一区二区在线观看| 蜜桃av一区二区| 日产国产高清一区二区三区| 亚洲在线中文字幕| 一区二区三区 在线观看视频| 国产精品色哟哟| 日本一区二区三区四区在线视频 | 99精品视频一区二区| 国产一区二区免费看| 久久国产精品免费| 蜜臀av一区二区三区| 日韩中文欧美在线| 欧美aaaaa成人免费观看视频| 亚洲女性喷水在线观看一区| 中文字幕在线播放不卡一区| 国产精品国产自产拍高清av| 一区在线观看视频| 一区二区三区四区激情| 亚洲一区二区在线免费观看视频| 亚洲三级理论片| 亚洲欧美日韩在线播放| 亚洲电影第三页| 毛片av一区二区| 国产在线日韩欧美| 国产精品自产自拍| 亚洲gay无套男同| 国产91色综合久久免费分享| 天天免费综合色| 成人国产精品免费| 国产在线精品不卡| 国产凹凸在线观看一区二区| 国精品**一区二区三区在线蜜桃| 麻豆精品一区二区| 国产乱码一区二区三区| 蜜臀av在线播放一区二区三区 | 国产激情91久久精品导航| 在线视频一区二区免费| 久久久久久麻豆| 欧美日韩免费一区二区三区| 欧美一区二区三区免费在线看| 日韩欧美国产一二三区| 国产精品女主播av| 亚洲一区二区三区在线看| 精品一区中文字幕| 91在线国产福利| 欧美精品1区2区3区| 国产日韩欧美制服另类| 一区二区三区在线视频观看58| 免费日韩伦理电影| 99热99精品| 精品国产百合女同互慰| 亚洲美女区一区| 国产成人综合在线播放| 欧美亚洲禁片免费| 国产午夜精品理论片a级大结局| 亚洲夂夂婷婷色拍ww47| 国产大陆精品国产| 91精品国产91久久久久久一区二区| 欧美激情综合五月色丁香小说| 亚洲成人av福利| 99久久国产综合精品女不卡| 日韩视频免费观看高清完整版| 亚洲天堂a在线| 国产不卡在线一区| 欧美va亚洲va在线观看蝴蝶网| 亚洲精品午夜久久久| 国产精品一区二区果冻传媒| 制服丝袜中文字幕一区| 亚洲少妇30p| 高清成人在线观看| 欧美xxxxxxxxx| 亚洲成人黄色小说| 91久久香蕉国产日韩欧美9色| 国产日韩欧美a| 久草中文综合在线| 91精品国产综合久久久久久漫画 | 91福利精品视频| 国产精品美女久久久久aⅴ| 国内不卡的二区三区中文字幕| 欧美综合天天夜夜久久| 亚洲免费观看高清完整版在线观看| 国产不卡视频一区| 国产亚洲精品中文字幕| 日本在线不卡一区| 欧美日韩免费不卡视频一区二区三区| 亚洲人精品一区| 成人激情av网| 自拍偷在线精品自拍偷无码专区| 国产精品99久久久| 国产欧美日韩综合|