比如:
 m_psh.dwFlags = PSP_DEFAULT;
 
  里面有一个我不想要的属性 PSP_HASHELP;
 我该怎么操作?
   m_psh.dwFlags |= PSP_HASHELP;
或是 m_psh.dwFlags &= PSP_HASHELP; ?   谁能给我讲讲这两个符号是怎么作用的?3x!

解决方案 »

  1.   

    |一个属性表示要在标志中增加一个属性,&一个属性一般用来判断标志中是否存在该属性。
    你的需求用这两个都不行。
    取消一个属性用 m_psh.dwFlags |= ~PSP_HASHELP;
      

  2.   

    按位与& 
    按位或|
    其实他们是针对2进制数据的。如
    11100
    &
    11110
    按位与运算,全1为1,11100。
    如果是按位或
    11100
    |
    11110
    有1为1,11110。
      

  3.   

    晕死,写错了:
    是:m_psh.dwFlags &= ~PSP_HASHELP;
      

  4.   

    楼上的,取消一个属性是用
    m_psh.dwFlags &= ~PSP_HASHELP;
      

  5.   

    windows一般采用如下的策略来设置属性:
    利用用1个字节,8位来表示某个类的属性
    11111111,1就表示设置了该属性,0就表示未设置该属性。例如1表示字体为粗体,0表示字体不是粗体等。
    10000000,
    例如,上面的1就表示了设置了粗体,如果想取消这个属性,只需要让它与01111111按位&就可以啦。
      

  6.   

    PSP_HASHELP其实就是某位为1的2进制数。
    例如:00100000,如果现在的属性为11100000,想取消PSP_HASHELP属性,只需对PSP_HASHELP按位取反,得到11011111再与属性11100000按位&就可以了。很简单,慢慢理解吧。