我現在知道如何通過使用按位運算符&
來檢查DWORD(特別是Windows風格)中是否存在特定標誌。我怎麼會做這樣的:C++/WinAPI - 從DWORD中刪除標誌(按位運算符?)
我知道減去這是行不通的,是有一些運營商可以從一個DWORD刪除標誌?
我現在知道如何通過使用按位運算符&
來檢查DWORD(特別是Windows風格)中是否存在特定標誌。我怎麼會做這樣的:C++/WinAPI - 從DWORD中刪除標誌(按位運算符?)
我知道減去這是行不通的,是有一些運營商可以從一個DWORD刪除標誌?
如果你知道標誌設置,你可以使用專有或未設置:
dwMyFlags ^= dwSomeFlag;
如果你不確定該標誌的狀態,你需要使用按位&,和位不〜
dwMyFlags &= ~dwSomeFlag;
,並與沒有該標誌的部分位:
dwMyFlags &= ~dwSomeFlag;
這是擴展到刪除多個標誌以及:
dwMyFlags &= ~(dwSomeFlag | dwSomeOtherFlag);
此外,匈牙利命名法已經過時了使用。
+1例如刪除多個標誌。另外,我知道,我從來沒有使用它,我只是爲了這個例子而想做。我通常給我的變量簡短但描述性的名字。匈牙利符號使代碼看起來很醜陋。 –
@BrandonMiller,當你沒有一種方法來檢查它想知道的是什麼類型時,它會更有用。 – chris
是的,藉助Visual Assist X,我可以將鼠標懸停在變量上以查看其類型。 –
做一個按位&
旗的逆要:
dwMyFlags = dwMyFlags & ~dwSomeFlag;
可以使用&=
縮寫是:
dwMyFlags &= ~dwSomeFlag;
+1反轉,並區分縮寫和完整形式。 –
這非常適用於給出的代碼。 – chris
+1太棒了,第二種方法可以讓我免去寫另一個if語句。謝謝。 –