在MFC的CMainFrame::PreCreateWindow(CREATESTRUCT& cs)中,cs.style &= ~WS_MAXIMIZEBOX可以禁用窗口的最大化按钮,谁能告诉我这条语句是如何实现这个功能的,为什么都要按位操作,如果想同时禁用最大化和最小化按钮,这条语句又该如何写呢?谢谢!

解决方案 »

  1.   

    CREATESTRUCT的style字段是个整数,它的每一比特代表窗口的一个属性,
    而WS_MAXIMIZEBOX就是这样一个整数:它的其它bit位都为0,而唯独对应于style中代表最大化的那个bit位为1。
    举个例子,假如style从右边数第四个bit控制窗口的最大化(我是随便说的,具体是第几位我也不知道,可以到MSDN里查),那么WS_MAXIMIZEBOX就是0x08。(也就是二进制的1000)。
    于是
    cs.style &= ~WS_MAXIMIZEBOX
    就把style中代表最大化的那个bit给清空了(置成0了),而同时又能保持style中的其他bit位不变,因为其它bit位有其他的用处,不能把这一位清0了,也影响了他们。