我的编程乐园
积累,坚持!
---------我是一只IT小小鸟
首页
新随笔
联系
聚合
管理
随笔-145 评论-173 文章-70 trackbacks-0
属性设置的技巧-----按位或和按位与的使用
原帖见:
http://topic.csdn.net/u/20100216/18/595c8231-9fb8-4584-a44b-2ed0a5a38c2a.html?2052564381
经过本人的询问,终于得到了很好的解答,这里来详细的汇总讨论下:
问题描述:
疑问来源:在《Java语言导学》中讲到一种机制,设置标志位。如:
CS_WRITE
=
1
;
CS_READ
=
2
;
CS_RED
=
4
;
CS_BLACK
=
8
;
那么,用一个变量flag就可以表示它的属性。比如,
int
flag;
如果要设置为可以写的,则用:flag
=
flag
|
CS_WRITE;这样,检验flag是否可以写的时候,
就需要用到if(flag
&
CS_WRITE
!=
0
)
"
可写
"
;
但是,现在在MFC中,我要是指定窗口标题,而不是用默认的FWS_ADDTOTITLE属性,为何是:
cs.style
=
cs.style
&
~
FWS_ADDTOTITLE;而不是用的
|
呢?
小弟查了资料,看见别人的解答都是
&
,难道MFC的实现是另外的一种机制吗?各位大哥能够给
一个解释,谢谢!
参考资料:
1
. http:
//
blog.chinaunix.net/u2/67530/showart_602546.html
(
28
) 如何防止主框窗口在其说明中显示活动的文档名
创建主框窗口和MDI子窗口进通常具有FWS_ADDTOTITLE风格位,如果不希望在说明中自动
添加文档名, 必须禁止该风格位, 可以使用ClassWizard重置
CWnd: : PreCreateWindow并关闭FWS_ADDTOTITLE风格。
BOOL CMainFrame : : PreCreateWindow (CREATESTRUCT
&
cs)
{
//
Turn off FWS_ADDTOTITLE in main frame .
cs.styel
&
=
~
FWS_ADDTOTITLE
return
CMDIFrameWnd : : PreCreateWindow (cs )
}
关闭MDI子窗口的FWS _ADDTOTITLE风格将创建一个具有空标题的窗口,可以调用CWnd: :
SetWindowText来设置标题。记住自己设置标题时要遵循接口风格指南。
2
.http:
//
topic.csdn.net/t/20021003/10/1070225.html
问题解答:
“
|
”是增加某个属性,“
&~
”是去掉某个属性。
楼主可以看看FWS_ADDTOTITLE这些宏的定义。
给你个例子吧:
C
/
C
++
code
#define
MY_STYLE_ONE 0x00000001
#define
MY_STYLE_TWO 0x00000010
DWORD style
=
MY_STYLE_ONE
|
MY_STYLE_TWO;
//
现在style=0x00000011,两种属性都有
style
=
style
&
~
MY_STYLE_ONE;
//
现在style=0x00000010,去掉了属性1
style
=
style
|
MY_STYLE_ONE;
//
现在style=0x00000011,又加回了属性1
&
是按位与,
|
是按位或
至此,需要明白的是:在不同的场合下,要结合具体的情况来分析作用和对应的方法。
比如:Java语言导学中,讲的没错,设置用的是“|”,而检验的时候用的是“&”。
但是这里我们需要的是去掉属性,所以就是要设置为非的属性,我将它取反,然后用&,那么对应的各位就是0了,于是就设置为非。
如果不是,那么该位就设置为是,具体来说,某位为1,如果需要设置为非,那么将对于的标志位取反,然后相与,就OK了。
为什么不是用的“|”呢?想想,取反之后用的“|”,那么各位上就恒为1了。因为0取非后为1,然后相或,就是1而不是0了。
这样,就没有达到使得该位上为0的目的了。
posted on 2010-02-17 14:44
deercoder
阅读(823)
评论(0)
编辑
收藏
引用
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
网站导航:
博客园
IT新闻
BlogJava
博问
Chat2DB
管理
坚持记录,笔耕不辍,笔记是最好的学习方法!
<
2010年2月
>
日
一
二
三
四
五
六
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
1
2
3
4
5
6
7
8
9
10
11
12
13
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(12)
给我留言
查看公开留言
查看私人留言
随笔分类
(87)
ACM(1)
Android(4)
C++(7)
CTeX和LateX(1)
Git(3)
Java(4)
MFC程序设计入门(8)
OpenCV(1)
Python(3)
Shell/Bash(1)
SQL(1)
Unix/Linux(23)
Vim(3)
大学公开课(3)
读书(4)
环境配置(1)
生活感悟/日记(18)
图像识别算法及原理(1)
随笔档案
(145)
2014年12月 (1)
2013年3月 (1)
2012年7月 (2)
2012年6月 (5)
2012年5月 (2)
2012年4月 (2)
2011年12月 (1)
2011年11月 (2)
2011年10月 (8)
2011年9月 (2)
2011年8月 (4)
2011年6月 (2)
2011年5月 (5)
2011年4月 (3)
2011年3月 (3)
2010年6月 (5)
2010年5月 (5)
2010年4月 (3)
2010年3月 (16)
2010年2月 (56)
2010年1月 (11)
2009年12月 (2)
2009年11月 (3)
2009年10月 (1)
文章分类
(70)
C/C++(14)
JAVA(6)
Linux/Unix(6)
MFC(5)
OpenCV / OpenGL(6)
编程体会和收获(3)
常见编译器错误解决办法(5)
深入理解计算机系统(2)
生活的体会和感悟(5)
实习/读研(1)
数据结构和算法分析(9)
杂谈(8)
文章档案
(70)
2011年11月 (1)
2011年10月 (1)
2010年3月 (8)
2010年2月 (2)
2010年1月 (3)
2009年12月 (21)
2009年11月 (26)
2009年10月 (5)
2009年9月 (3)
相册
computer picture
ACM与算法比赛
Google Code Jam
Top Coder
北大ACM
杭电ACM
LaTex和Tex学习
LaTex and Tex
Tex,LaTex,CTex学习
电子书下载
不错的电子书免注册下载
杂志下载(经济学人等)
联系方式
我的豆瓣主页
学习论坛
C++编程
VC知识库
超多C/C++资料和源码下载
科研小木虫
提问必答网站(牛人辈出啊!)
英语网站(长期学习)
New York Times
华尔街日报
记单词,捐大米
经济学英文网
普特网站
普特英语应用(有趣的学习)
译言网|译文库
中国日报
源码网站
codeproject
google代码搜索
programersheaven
sourceforge
程序员联合开发网
最新随笔
1. 此博客停止更新
2. Adboe Reader提示中文字体有问题
3. Python字符串换行处理
4. 如何转换^M行末符号
5. 斯坦福大学开放课程--编程范式(四)
搜索
积分与排名
积分 - 900014
排名 - 15
最新随笔
1. 此博客停止更新
2. Adboe Reader提示中文字体有问题
3. Python字符串换行处理
4. 如何转换^M行末符号
5. 斯坦福大学开放课程--编程范式(四)
最新评论
1. re: Git Stash用法[未登录]
@陈梓瀚(vczh)
人称轮带逛!!!
--q
2. re: Git Stash用法
@Loaden
这个B装的好
--doubi
3. re: Chrome神器Vimium快捷键学习记录
哦啦啦啦啦
--阿里河
4. re: Chrome神器Vimium快捷键学习记录
希望能添加更新后的功能翻译
--Vi.Ci
5. re: Chrome神器Vimium快捷键学习记录
@coolbit
谢谢,学会了
--xin
阅读排行榜
1. Git Stash用法(300455)
2. Chrome神器Vimium快捷键学习记录(67434)
3. GitHub使用简介(35327)
4. Ubuntu下硬盘的自动挂载(23718)
5. Ubuntu更新包管理器失败:Requires installation of untrusted packages问题解决(18443)
评论排行榜
1. 【欢迎各位留言讨论】C++中运算符New的一个疑问【新的问题!】【各位继续关注讨论啊!】(23)
2. Git Stash用法(21)
3. Chrome神器Vimium快捷键学习记录(19)
4. C++友元的一个问题-----------由派生类访问基类的私有成员(10)
5. OpenCV学习笔记(一)(7)