三者的性质

  • ^ 异或运算:相同为0,不同为1
  • & 与运算:两者为1时为1,有0为0
    • 可以用来作为判断和取消
  • | 或运算:有1为1
    • 可以通过这个来把参数相加

运算

 #define  FLAG_DUPLICATE   0x01    // 展开二进制00000001 1
 #define  FLAG_VISIBLE     0x02    // 展开二进制00000010 2x2
 #define  FLAG_CANSELECT   0x04    // 展开二进制00000100 3x2
 #define  FLAG_LABELED     0x08    // 展开二进制00001000 4x2
 #define  FLAG_BACKGROUND  0x10    // 展开二进制00100000 5x2
 #define  FLAG_SHOWOUTLINE 0x20    // 展开二进制01000000 6x2
 #define  FLAG_SHOWATEAGLE 0x40    // 展开二进制10000000 7x2

示例

  • 一个复选框被选中
int nStatus;
nStatus = nStatus | FLAG_DUPLICATE; //一个复选框被选中
  • 取消一个复选框
int mask = 0xffffffff ^ FLAG_DUPLICATE;//(把FLAG_DUPLICATE中为"1"的那一位置为0,其它位都为1)
nStatus = nStatus & mask;
  • 判断一个复选框是否被选中
if(nStatus & FLAG_DUPLICATE == FLAG_DUPLICATE)
  cout<<"选中"<<endl;
else
  cout<<"未选中"<<endl;