9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
學習啦 > 學習英語 > 專業英語 > 計算機英語 > c中checkbox的用法

c中checkbox的用法

時間: 長思709 分享

c中checkbox的用法

  c中checkbox的用法的用法你知道嗎?下面小編就跟你們詳細介紹下c中checkbox的用法的用法,希望對你們有用。

  c中checkbox的用法的用法如下:

  1. 消息事件

  (1)鼠標點擊當前ITEM的CHECKBOX:引發NM_CLICK事件并傳遞TVHT_ONITEMSTATEICON。

  (2)鼠標點擊當前ITEM的TEXT:引發NM_CLICK事件。

  (3)鼠標點擊新ITEM的CHECKBOX:引發TVN_SELCHANGED事件、NM_CLICK事件并傳遞TVHT_ONITEMSTATEICON。

  (4)鼠標點擊新ITEM的TEXT:引發NM_CLICK事件、TVN_SELCHANGED事件。

  2. 消息事件總結

  點擊ITEM會引發NM_CLICK事件。若點擊CHECKBOX則傳遞TVHT_ONITEMSTATEICON。

  因此可不處理TVN_SELCHANGED事件而只處理NM_CLICK事件。

  3. 消息處理注意事項

  (1)點擊CHECKBOX后會自動更新CheckBox的狀態,因此在處理代碼中不需要使用SetCheck函數設置狀態,而GetCheck函數返回也是其原始狀態。

  (2)點擊新CHECKBOX后不會自動將對應的ITEM設置為選擇狀態,需要使用SelectItem函數進行設置。

  4. 使用方法

  (1)若傳遞TVHT_ONITEMSTATEICON

  獲取選擇ITEM的狀態并取反

  若有子項則所有子項設置為一致

  若沒有子項則

  若當前狀態為TRUE則設置父項為TRUE;否則遍歷所有兄弟項,若全為FALSE則設置父項為FALSE。

  若選擇了新ITEM則設置新ITEM為選擇項

  (2)若未傳遞TVHT_ONITEMSTATEICON

  設置更新ITEM狀態,獲取選擇ITEM的狀態

  若有子項則所有子項設置為一致

  若沒有子項則

  若當前狀態為TRUE則設置父項為TRUE;否則遍歷所有兄弟項,若全為FALSE則設置父項為FALSE。

  5. 響應NM_CLICK事件的函數代碼

  ?

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17

  18

  19

  20

  21

  22

  23

  24

  25

  void CTestTimerDlg::OnClickTree(NMHDR* pNMHDR, LRESULT* pResult)

  {

  // TODO: Add your control notification handler code here

  CPoint point;

  UINT uFlag; //接收有關點擊測試的信息的整數

  HTREEITEM hTree;

  BOOL bCheck;

  GetCursorPos(&point); //獲取屏幕鼠標坐標

  m_TreeCtrl.ScreenToClient(&point); //轉化成客戶坐標

  hTree = m_TreeCtrl.HitTest(point,&uFlag); //返回與CtreeTtrl關聯的光標的當前位置和句柄

  if((TVHT_NOWHERE & uFlag))

  {

  return;

  }

  if (hTree && (TVHT_ONITEMSTATEICON & uFlag)) //點中復選框

  {

  m_TreeCtrl.SelectItem(hTree);

  CString temp = m_TreeCtrl.GetItemText(hTree) + "\r\n";

  TRACE(temp);

  bCheck = m_TreeCtrl.GetCheck(hTree); //獲取當前復選狀態

  SetChildCheck(hTree,!bCheck); //設置子項復選狀態

  SetParentCheck(hTree, bCheck); //設置父項復選狀態

  }

  *pResult = 0;

  }

  ?

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  void CTestTimerDlg::SetChildCheck(HTREEITEM hTree,BOOL bCheck)

  {

  m_TreeCtrl.Expand(hTree,TVE_EXPAND);

  hTree = m_TreeCtrl.GetChildItem(hTree); //獲取子項句柄

  while (hTree)

  {

  m_TreeCtrl.SetCheck(hTree, bCheck);

  SetChildCheck(hTree,bCheck); //遞歸調用

  hTree = m_TreeCtrl.GetNextSiblingItem(hTree); //獲取兄弟的句柄

  }

  }

  ?

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17

  18

  19

  20

  21

  22

  23

  void CTestTimerDlg::SetParentCheck(HTREEITEM hTree,BOOL bCheck)

  {

  HTREEITEM hParent = m_TreeCtrl.GetParentItem(hTree);

  if (hParent)

  {

  HTREEITEM hChild = m_TreeCtrl.GetChildItem(hParent);

  while (hChild)

  {

  if (hChild == hTree)

  {

  hChild = m_TreeCtrl.GetNextSiblingItem(hChild);

  continue;

  }

  BOOL bflag = m_TreeCtrl.GetCheck(hChild);

  if (bCheck == bflag) //判斷是否還有兄弟項被選擇

  {

  return;

  }

  hChild = m_TreeCtrl.GetNextSiblingItem(hChild);

  }

  m_TreeCtrl.SetCheck(hParent,!bCheck);

  SetParentCheck(hParent,bCheck); //設置父項的狀態

  }

熱門文章

537086 主站蜘蛛池模板: 国产中文字幕日韩精品| 国产亚洲精品超碰| 大香伊蕉在人线国产最新2005| 国产成人高清亚洲一区二区| 国产一区二区三区在线观看免费| 在线视频一区二区三区色| 四虎网址| 人人澡人人妻人人爽人人蜜桃| 人妻丝袜AV中文系列先锋影音 | 亚洲产在线精品亚洲第一站一| 亚洲人成网站77777在线观看| 亚洲精品一区二区18禁| 国产国产乱老熟女视频网站97| 亚洲av成人一区二区三区| 国产伦一区二区三区视频| 97人人添人澡人人爽超碰| 日韩人妻少妇一区二区三区| 欧美日韩国产一区二区三区欧| 国产免费无遮挡吃奶视频| 国内精品自产拍在线播放| 久久精品国产成人午夜福利| 日韩黄色av一区二区三区| 91福利一区福利二区| 樱桃熟了a级毛片| 亚洲欧美中文字幕日韩一区二区| 国产深夜福利在线免费观看| 国产一区二区不卡91| 亚洲精品成人区在线观看| 国产成人精品亚洲午夜| 国产精品尤物乱码一区二区| 国产亚洲精品AA片在线爽| 亚洲中文字幕一区二区| 国产精品亚洲综合久久小说| 九九热视频在线观看视频| 亚洲一卡2卡3卡4卡精品| 午夜福利理论片高清在线| 久久国产精品老女人| 亚洲一区二区日韩综合久久 | 亚洲人成人网站色www| 亚洲蜜臀av乱码久久| 久草热在线视频免费播放|