精品丰满熟女一区二区三区_五月天亚洲欧美综合网_亚洲青青青在线观看_国产一区二区精选

  • <menu id="29e66"></menu>

    <bdo id="29e66"><mark id="29e66"><legend id="29e66"></legend></mark></bdo>

  • <pre id="29e66"><tt id="29e66"><rt id="29e66"></rt></tt></pre>

      <label id="29e66"></label><address id="29e66"><mark id="29e66"><strike id="29e66"></strike></mark></address>
      學(xué)習(xí)啦 > 學(xué)習(xí)英語(yǔ) > 專業(yè)英語(yǔ) > 計(jì)算機(jī)英語(yǔ) > c中checkbox的用法

      c中checkbox的用法

      時(shí)間: 長(zhǎng)思709 分享

      c中checkbox的用法

        c中checkbox的用法的用法你知道嗎?下面小編就跟你們?cè)敿?xì)介紹下c中checkbox的用法的用法,希望對(duì)你們有用。

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

        1. 消息事件

        (1)鼠標(biāo)點(diǎn)擊當(dāng)前ITEM的CHECKBOX:引發(fā)NM_CLICK事件并傳遞TVHT_ONITEMSTATEICON。

        (2)鼠標(biāo)點(diǎn)擊當(dāng)前ITEM的TEXT:引發(fā)NM_CLICK事件。

        (3)鼠標(biāo)點(diǎn)擊新ITEM的CHECKBOX:引發(fā)TVN_SELCHANGED事件、NM_CLICK事件并傳遞TVHT_ONITEMSTATEICON。

        (4)鼠標(biāo)點(diǎn)擊新ITEM的TEXT:引發(fā)NM_CLICK事件、TVN_SELCHANGED事件。

        2. 消息事件總結(jié)

        點(diǎn)擊ITEM會(huì)引發(fā)NM_CLICK事件。若點(diǎn)擊CHECKBOX則傳遞TVHT_ONITEMSTATEICON。

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

        3. 消息處理注意事項(xiàng)

        (1)點(diǎn)擊CHECKBOX后會(huì)自動(dòng)更新CheckBox的狀態(tài),因此在處理代碼中不需要使用SetCheck函數(shù)設(shè)置狀態(tài),而GetCheck函數(shù)返回也是其原始狀態(tài)。

        (2)點(diǎn)擊新CHECKBOX后不會(huì)自動(dòng)將對(duì)應(yīng)的ITEM設(shè)置為選擇狀態(tài),需要使用SelectItem函數(shù)進(jìn)行設(shè)置。

        4. 使用方法

        (1)若傳遞TVHT_ONITEMSTATEICON

        獲取選擇ITEM的狀態(tài)并取反

        若有子項(xiàng)則所有子項(xiàng)設(shè)置為一致

        若沒有子項(xiàng)則

        若當(dāng)前狀態(tài)為TRUE則設(shè)置父項(xiàng)為TRUE;否則遍歷所有兄弟項(xiàng),若全為FALSE則設(shè)置父項(xiàng)為FALSE。

        若選擇了新ITEM則設(shè)置新ITEM為選擇項(xiàng)

        (2)若未傳遞TVHT_ONITEMSTATEICON

        設(shè)置更新ITEM狀態(tài),獲取選擇ITEM的狀態(tài)

        若有子項(xiàng)則所有子項(xiàng)設(shè)置為一致

        若沒有子項(xiàng)則

        若當(dāng)前狀態(tài)為TRUE則設(shè)置父項(xiàng)為TRUE;否則遍歷所有兄弟項(xiàng),若全為FALSE則設(shè)置父項(xiàng)為FALSE。

        5. 響應(yīng)NM_CLICK事件的函數(shù)代碼

        ?

        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; //接收有關(guān)點(diǎn)擊測(cè)試的信息的整數(shù)

        HTREEITEM hTree;

        BOOL bCheck;

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

        m_TreeCtrl.ScreenToClient(&point); //轉(zhuǎn)化成客戶坐標(biāo)

        hTree = m_TreeCtrl.HitTest(point,&uFlag); //返回與CtreeTtrl關(guān)聯(lián)的光標(biāo)的當(dāng)前位置和句柄

        if((TVHT_NOWHERE & uFlag))

        {

        return;

        }

        if (hTree && (TVHT_ONITEMSTATEICON & uFlag)) //點(diǎn)中復(fù)選框

        {

        m_TreeCtrl.SelectItem(hTree);

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

        TRACE(temp);

        bCheck = m_TreeCtrl.GetCheck(hTree); //獲取當(dāng)前復(fù)選狀態(tài)

        SetChildCheck(hTree,!bCheck); //設(shè)置子項(xiàng)復(fù)選狀態(tài)

        SetParentCheck(hTree, bCheck); //設(shè)置父項(xiàng)復(fù)選狀態(tài)

        }

        *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); //獲取子項(xiàng)句柄

        while (hTree)

        {

        m_TreeCtrl.SetCheck(hTree, bCheck);

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

        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) //判斷是否還有兄弟項(xiàng)被選擇

        {

        return;

        }

        hChild = m_TreeCtrl.GetNextSiblingItem(hChild);

        }

        m_TreeCtrl.SetCheck(hParent,!bCheck);

        SetParentCheck(hParent,bCheck); //設(shè)置父項(xiàng)的狀態(tài)

        }

      熱門文章

      537086