void CToolBar::_GetButton(int nIndex, TBBUTTON* pButton) const
{
CToolBar* pBar = (CToolBar*)this;
VERIFY(pBar->DefWindowProc(TB_GETBUTTON, nIndex, (LPARAM)pButton));
// TBSTATE_ENABLED == TBBS_DISABLED so invert it
pButton->fsState ^= TBSTATE_ENABLED;
}
這是該類成員函式的原始碼,想請教注釋的那部分如何理解? 為什么獲得TBBUTTON資訊后,要將fsState 和TBSTATE_ENABLED做異或,目的是什么?
uj5u.com熱心網友回復:
相同的值異或的結果就是0,就是相當于反轉uj5u.com熱心網友回復:
這個我明白,可為什么要反轉?如果fstate中TBSTATE_ENABLED位為1,則變成0。原來為零則變為1。為什么要這么做,謝謝
uj5u.com熱心網友回復:
就是該bit位反轉,其它位不變~uj5u.com熱心網友回復:
應該就相當于:if(pButton->fsState & TBSTATE_ENABLED)
{
pButton->fsState &= ~TBSTATE_ENABLED;
}
else
{
pButton->fsState |= TBSTATE_ENABLED;
}
uj5u.com熱心網友回復:
大哥,首先非常感謝您的詳細和耐心講解,您說的部分都明白。可能是我表達能力有問題,我是想知道為什么獲得一個按鈕的TBBUTTON資訊后,要對ENABLED位進行反轉,當初函式作者進行此操作的目的何在?
uj5u.com熱心網友回復:
當初函式作者進行此操作的目的何在?就是 要對ENABLED位進行反轉 !
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/129734.html
標籤:基礎類
