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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? dropdown.c

?? UC_GUI開發(fā)源代碼,里面含有范例,源文件
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
  if (!Height) {
    Height = GUI_GetYDistOfFont(pObj->Props.pFont);
  }
  Height += pObj->Widget.pEffect->EffectSize + 2 *  pObj->Props.TextBorderSize;
  WM_SetSize(hObj, WM__GetWindowSizeX(&pObj->Widget.Win), Height);
}

/*********************************************************************
*
*       Exported routines:  Callback
*
**********************************************************************
*/
/*********************************************************************
*
*       DROPDOWN_Callback
*/
void DROPDOWN_Callback (WM_MESSAGE*pMsg) {
  DROPDOWN_Handle hObj;
  DROPDOWN_Obj* pObj;
  char IsExpandedBeforeMsg;
  hObj = pMsg->hWin;
  pObj = (DROPDOWN_Obj *)GUI_ALLOC_h2p(hObj); /* Don't use use WIDGET_H2P because WIDGET_INIT_ID() has not be called at this point */
  IsExpandedBeforeMsg = pObj->hListWin ? 1 : 0;
  /* Let widget handle the standard messages */
  if (WIDGET_HandleActive(hObj, pMsg) == 0) {
    return;
  }
  switch (pMsg->MsgId) {
  case WM_NOTIFY_OWNER_KEY:
    /* Close the listbox if DROPDOWN_KEY_SELECT has been pressed */
    if (((const WM_KEY_INFO*)(pMsg->Data.p))->PressedCnt > 0) {
      int Key;
      Key = ((const WM_KEY_INFO*)(pMsg->Data.p))->Key;
      if (Key == DROPDOWN_KEY_SELECT) {
        DROPDOWN_SetSel(hObj, LISTBOX_GetSel(pObj->hListWin));
        DROPDOWN_Collapse(hObj);
        WM_SetFocus(hObj);
      }
    }
    break;
  case WM_NOTIFY_PARENT:
    switch (pMsg->Data.v) {
    case WM_NOTIFICATION_SCROLL_CHANGED:
      WM_NotifyParent(hObj, WM_NOTIFICATION_SCROLL_CHANGED);
      break;
    case WM_NOTIFICATION_CLICKED:
      DROPDOWN_SetSel(hObj, LISTBOX_GetSel(pObj->hListWin));
      WM_SetFocus(hObj);
      break;
    case LISTBOX_NOTIFICATION_LOST_FOCUS:
      DROPDOWN_Collapse(hObj);
      break;
    }
    break;
  case WM_PID_STATE_CHANGED:
    if (IsExpandedBeforeMsg == 0) {    /* Make sure we do not react a second time */
      const WM_PID_STATE_CHANGED_INFO * pInfo = (const WM_PID_STATE_CHANGED_INFO*)pMsg->Data.p;
      if (pInfo->State) {
        DROPDOWN_Expand(hObj);
      }
    }
    break;
  case WM_TOUCH:
    if (_OnTouch(hObj, pMsg) == 0) {
      return;
    }
    break;
  case WM_PAINT:
    _Paint(hObj);
    break;
  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 = ((const WM_KEY_INFO*)(pMsg->Data.p))->Key;
      switch (Key) {
        case DROPDOWN_KEY_EXPAND:
          DROPDOWN_Expand(hObj);
          break;
        case GUI_KEY_BACKTAB:
          break;
        case GUI_KEY_TAB:
          if (WM_GetFocussedWindow() == pObj->hListWin) {
            WM_SetFocus(hObj);      /* Make sure, WM_SetFocusOnNextChild() works right when calling WM_DefaultProc() */
          }
          break;                    /* Send to parent by not doing anything */
        default:
          DROPDOWN_AddKey(hObj, Key);
          return;
      }
    }
    break;
  }
  WM_DefaultProc(pMsg);
}

/*********************************************************************
*
*       Exported routines:  Create
*
**********************************************************************
*/
/*********************************************************************
*
*       DROPDOWN_CreateEx
*/
DROPDOWN_Handle DROPDOWN_CreateEx(int x0, int y0, int xsize, int ysize, WM_HWIN hParent,
                                  int WinFlags, int ExFlags, int Id)
{
  DROPDOWN_Handle hObj;
  WM_LOCK();
  hObj = WM_CreateWindowAsChild(x0, y0, xsize, -1, hParent, WinFlags, DROPDOWN_Callback,
                                sizeof(DROPDOWN_Obj) - sizeof(WM_Obj));
  if (hObj) {
    DROPDOWN_Obj* pObj;
    pObj = (DROPDOWN_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->Handles);
    /* init widget specific variables */
    WIDGET__Init(&pObj->Widget, Id, WIDGET_STATE_FOCUSSABLE);
    pObj->Flags          = ExFlags;
    pObj->Props          = DROPDOWN__DefaultProps;
    pObj->ScrollbarWidth = 0;
    DROPDOWN_INIT_ID(pObj);
    pObj->ySizeEx = ysize;
    DROPDOWN__AdjustHeight(hObj, pObj);
  }
  WM_UNLOCK();
  return hObj;
}

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

/*********************************************************************
*
*       DROPDOWN_Collapse
*/
void DROPDOWN_Collapse(DROPDOWN_Handle hObj) {
  DROPDOWN_Obj* pObj;
  if (hObj) {
    WM_LOCK();
    pObj = DROPDOWN_H2P(hObj);
    if (pObj->hListWin) {
      WM_DeleteWindow(pObj->hListWin);
      pObj->hListWin = 0;
    }
    WM_UNLOCK();
  }
}

/*********************************************************************
*
*       DROPDOWN_Expand
*/
void DROPDOWN_Expand(DROPDOWN_Handle hObj) {
  int xSize, ySize, i, NumItems;
  WM_HWIN hLst;
  GUI_RECT r;
  WM_HWIN hParent;
  WM_Obj* pParent;
  DROPDOWN_Obj* pObj;
  if (hObj) {
    WM_LOCK();
    pObj = DROPDOWN_H2P(hObj);
    if  (pObj->hListWin == 0) {
      hParent = WM_GetParent(hObj);
      pParent = WM_H2P(hParent);
      xSize = WM__GetWindowSizeX(&pObj->Widget.Win);
      ySize = pObj->ySizeEx;
      NumItems = DROPDOWN__GetNumItems(pObj);
      /* Get coordinates of window in client coordiantes of parent */
      r = pObj->Widget.Win.Rect;
      GUI_MoveRect(&r, -pParent->Rect.x0, -pParent->Rect.y0);
      if (pObj->Flags & DROPDOWN_CF_UP) {
        r.y0 -= ySize;
      } else {
        r.y0 = r.y1;
      }
      hLst = LISTBOX_CreateAsChild(NULL, WM_GetParent(hObj), r.x0, r.y0
                         , xSize, ySize, WM_CF_SHOW);
      #if WIDGET_USE_PARENT_EFFECT
        WIDGET_SetEffect(hLst, pObj->Widget.pEffect);
      #endif
      if (pObj->Flags & DROPDOWN_SF_AUTOSCROLLBAR) {
        LISTBOX_SetScrollbarWidth(hLst, pObj->ScrollbarWidth);
        LISTBOX_SetAutoScrollV(hLst, 1);
      }
      for (i = 0; i< NumItems; i++) {
        LISTBOX_AddString(hLst, _GetpItem(pObj, i));
      }
      for (i = 0; i < GUI_COUNTOF(pObj->Props.aBackColor); i++) {
        LISTBOX_SetBkColor(hLst, i, pObj->Props.aBackColor[i]);
      }
      for (i = 0; i < GUI_COUNTOF(pObj->Props.aTextColor); i++) {
        LISTBOX_SetTextColor(hLst, i, pObj->Props.aTextColor[i]);
      }
      for (i = 0; i < GUI_COUNTOF(pObj->Props.aScrollbarColor); i++) {
        LISTBOX_SetScrollbarColor(hLst, i, pObj->Props.aScrollbarColor[i]);
      }
      LISTBOX_SetItemSpacing(hLst, pObj->ItemSpacing);
      LISTBOX_SetFont(hLst, pObj->Props.pFont);
      LISTBOX_SetTextAlign(hLst, pObj->Props.Align);
      WM_SetFocus(hLst);
      pObj->hListWin = hLst;
      LISTBOX_SetOwner(hLst, hObj);
      LISTBOX_SetSel(hLst, pObj->Sel);
      WM_NotifyParent(hObj, WM_NOTIFICATION_CLICKED);
    }
    WM_UNLOCK();
  }
}

/*********************************************************************
*
*       DROPDOWN_AddKey
*/
void DROPDOWN_AddKey(DROPDOWN_Handle hObj, int Key) {
  if (hObj) {
    WM_LOCK();
    switch (Key) {
      case GUI_KEY_DOWN:
        DROPDOWN_IncSel(hObj);
        break;
      case GUI_KEY_UP:
        DROPDOWN_DecSel(hObj);
        break;
      default:
        _SelectByKey(hObj, Key);
        break;
    }
    WM_UNLOCK();
  }
}

/*********************************************************************
*
*       DROPDOWN_SetSel
*/
void DROPDOWN_SetSel(DROPDOWN_Handle hObj, int Sel) {
  int NumItems, MaxSel;
  DROPDOWN_Obj* pObj;
  if (hObj) {
    WM_LOCK();
    pObj = DROPDOWN_H2P(hObj);
    NumItems = DROPDOWN__GetNumItems(pObj);
    MaxSel = NumItems ? NumItems-1 : 0;
    if (Sel > MaxSel) {
      Sel = MaxSel;
    }
    if (Sel != pObj->Sel) {
      pObj->Sel = Sel;
      DROPDOWN_Invalidate(hObj);
      WM_NotifyParent(hObj, WM_NOTIFICATION_SEL_CHANGED);
    }
    WM_UNLOCK();
  }
}

/*********************************************************************
*
*       DROPDOWN_IncSel
*/
void DROPDOWN_IncSel(DROPDOWN_Handle hObj) {
  int Sel = DROPDOWN_GetSel(hObj);
  DROPDOWN_SetSel(hObj, Sel+1);
}

/*********************************************************************
*
*       DROPDOWN_DecSel
*/
void DROPDOWN_DecSel(DROPDOWN_Handle hObj) {
  int Sel = DROPDOWN_GetSel(hObj);
  if (Sel)
	  Sel--;
  DROPDOWN_SetSel(hObj, Sel);
}

/*********************************************************************
*
*       DROPDOWN_GetSel
*/
int  DROPDOWN_GetSel (DROPDOWN_Handle hObj) {
  int r = 0;
  DROPDOWN_Obj* pObj;
  if (hObj) {
    WM_LOCK();
    pObj = DROPDOWN_H2P(hObj);
    r = pObj->Sel;
    WM_UNLOCK();
  }
  return r;
}

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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
黄网站免费久久| 亚洲va韩国va欧美va| 91激情五月电影| 麻豆精品一区二区av白丝在线| 精品国产凹凸成av人导航| 91猫先生在线| 国模大尺度一区二区三区| 一区二区三区在线视频播放| 亚洲高清免费在线| 国产日韩欧美精品在线| 欧美三区在线观看| 99精品欧美一区二区蜜桃免费 | 欧美国产精品一区| 欧美精品vⅰdeose4hd| 99精品久久免费看蜜臀剧情介绍| 日韩经典中文字幕一区| 亚洲女人小视频在线观看| 国产亚洲一区字幕| 精品日本一线二线三线不卡| 在线观看91精品国产入口| 成人理论电影网| 国产精品一二三在| 国产精品亚洲午夜一区二区三区 | 蜜臀a∨国产成人精品| 亚洲精品免费在线| 一区二区三区在线观看欧美| 中文字幕中文字幕一区二区| 日本一区二区高清| 欧美国产亚洲另类动漫| 国产精品午夜免费| 日本v片在线高清不卡在线观看| 亚洲一二三四久久| 舔着乳尖日韩一区| 九一久久久久久| 成人一区在线观看| 91亚洲午夜精品久久久久久| 一本一本大道香蕉久在线精品| 不卡电影免费在线播放一区| 日本道色综合久久| 在线91免费看| 国产午夜精品福利| 最新中文字幕一区二区三区| 一级精品视频在线观看宜春院 | 色天天综合色天天久久| www.一区二区| 欧美无人高清视频在线观看| 在线看日本不卡| 精品久久久久久亚洲综合网| 国产精品日日摸夜夜摸av| 亚洲另类在线一区| 久久精品国产亚洲5555| 91丨九色丨尤物| 欧美一区二区三区四区视频 | 国产欧美日韩另类视频免费观看| 亚洲欧洲精品一区二区精品久久久 | 国产精品一区二区x88av| av在线免费不卡| 精品国产伦一区二区三区观看体验| 欧美激情一二三区| 久久99国产精品麻豆| 欧美精品久久天天躁| 国产精品网站在线| 五月天激情综合网| www.欧美色图| 欧美极品aⅴ影院| 激情偷乱视频一区二区三区| 色婷婷一区二区三区四区| 久久久影院官网| 久久精品理论片| 欧美一区二区在线观看| 亚洲一区二区精品3399| 一本色道亚洲精品aⅴ| 中文字幕欧美激情一区| 国产精品影视网| 久久综合久久综合久久| 久久精品国产免费| 精品国产凹凸成av人导航| 理论电影国产精品| 久久综合九色综合久久久精品综合| 日韩精品电影在线| 日韩免费看网站| 狠狠狠色丁香婷婷综合激情 | 久久奇米777| 懂色av噜噜一区二区三区av| 国产精品视频在线看| 色综合婷婷久久| 肉色丝袜一区二区| 欧美电影免费观看高清完整版在| 日本欧美在线看| 欧美国产一区二区| 色999日韩国产欧美一区二区| 亚洲欧美日韩国产手机在线 | 亚洲精品国产一区二区精华液 | 经典一区二区三区| 中文子幕无线码一区tr| 欧美中文字幕亚洲一区二区va在线 | 国产精品剧情在线亚洲| 日本美女一区二区| 国产偷国产偷亚洲高清人白洁| 国产成人精品亚洲日本在线桃色| **欧美大码日韩| 欧美一区日韩一区| 色偷偷久久一区二区三区| 日韩专区欧美专区| 国产精品久久久久久久午夜片 | 国产不卡视频在线播放| 亚洲欧美一区二区三区极速播放| 4438成人网| 色天天综合久久久久综合片| 国产美女精品在线| 亚洲高清视频中文字幕| 中文字幕日韩一区| 久久精品男人天堂av| 91精品婷婷国产综合久久性色| 91色.com| 五月天一区二区| 亚洲天堂免费在线观看视频| 久久一区二区三区四区| 欧美高清性hdvideosex| 色综合天天综合网天天看片| 国产寡妇亲子伦一区二区| 青青草精品视频| 一区二区在线观看视频| 国产精品久久久久久亚洲伦| 国产欧美日本一区二区三区| 精品免费日韩av| 久久综合狠狠综合久久激情| 欧美一区二区三区四区久久| 欧美日韩亚洲高清一区二区| 色综合久久久久| 在线视频国内一区二区| 在线观看一区不卡| 欧美无砖专区一中文字| 欧美精品一级二级三级| 欧美少妇bbb| 日韩亚洲欧美成人一区| 2021久久国产精品不只是精品| 日韩欧美电影在线| 国产欧美日韩另类一区| 亚洲欧洲日韩一区二区三区| 一区二区视频在线| 日韩影院精彩在线| 国产一区二区毛片| caoporen国产精品视频| 欧美亚洲综合久久| 欧美一二三四在线| 综合久久给合久久狠狠狠97色 | 亚洲欧美综合网| 亚洲国产aⅴ成人精品无吗| 日本不卡视频在线观看| 福利电影一区二区| 欧美色电影在线| 国产日韩欧美不卡在线| 亚洲一级二级在线| 国产黄色精品网站| 欧美一区二区在线免费观看| 日本一区二区动态图| 日本不卡一区二区三区| 不卡视频在线观看| 久久先锋影音av鲁色资源网| 一区二区在线免费| 成人免费视频国产在线观看| 制服丝袜国产精品| 亚洲国产日韩av| 99久久精品免费精品国产| 日韩欧美美女一区二区三区| 亚洲图片激情小说| 成人中文字幕在线| 久久久久久久久久久电影| 男男gaygay亚洲| 欧美性色黄大片| 中文字幕一区不卡| 国产东北露脸精品视频| 欧美mv日韩mv亚洲| 韩国成人在线视频| 精品久久久久久亚洲综合网| 日韩精品亚洲一区二区三区免费| 97久久人人超碰| 亚洲精品美腿丝袜| 91碰在线视频| 亚洲综合另类小说| 欧美在线高清视频| 亚洲成精国产精品女| 欧美日韩精品免费观看视频| 一区二区三区在线观看国产| 91久久精品网| 日本在线播放一区二区三区| 正在播放亚洲一区| 久久69国产一区二区蜜臀| 亚洲精品在线免费播放| 国产成人精品亚洲午夜麻豆| 亚洲视频一区在线| 欧美日本乱大交xxxxx| 韩国精品主播一区二区在线观看 | 日韩欧美aaaaaa| 国产成人丝袜美腿| 亚洲一区在线免费观看| 91精品久久久久久久99蜜桃| 狠狠色丁香婷综合久久| 亚洲欧洲av另类|