请教各位高手一个关于用create建立控件时的风格问题

南安风语者 2006-06-27 09:45:32
用create建立控件时有控件风格这一个参数,但是我测试了一下在参数上同时使用两个相反属性的风格,但并不报错,比如我建一个CStatic控件时,同时使用了SS_LEFT和SS_RIGHT时不报错,出现在的控件是右对齐,请问像这样的情况它有什么判断要用什么风格的准则没有呀
...全文
110 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
南安风语者 2006-06-29
  • 打赏
  • 举报
回复
明白了,谢谢了呀
city_freeman 2006-06-29
  • 打赏
  • 举报
回复
zhengjie
折腾_苏州 2006-06-29
  • 打赏
  • 举报
回复
编译运行的时候,SS_LEFT,SS_RIGHT都是宏,
WINUSER.H
#define SS_LEFT 0x00000000L
#define SS_RIGHT 0x00000002L
系统并不认得SS_LEFT,SS_RIGHT的意义,它只知道二进制01的意思.
Create的dwStyle参数SS_LEFT|SS_RIGHT实际上是 0x00000000L | 0x00000002L ,换成二进制 与 操作的结果就是 0x00000002L, 系统认为是SS_RIGHT ,右对齐...

实际上,控件的风格都是通过“与 |”操作来获得多种风格的叠加,也可用“并取反 &~”操作剔除某种风格
南安风语者 2006-06-29
  • 打赏
  • 举报
回复
seu07201213(汪洋中的一片叶子) 你能不能说清楚一点,谢谢了
glyc 2006-06-27
  • 打赏
  • 举报
回复
这个系统没有定义,只有看运气了,有些风格值是0的,就被忽略了。
seasol 2006-06-27
  • 打赏
  • 举报
回复
这应该是一个编程的习惯问题了吧。原则上,应该由你自己决定使用相反属性中的一个。如果一定要两个都写上,由系统来判断。一方面,系统可能认为这不是什么致命的错误,不影响程序的正常运行,所以不会报错。另一方面,系统可能根本就不判断你是否同时使用了两个相反属性的风格。他只会挨个判断设置了哪个属性。如果发现SS_RIGHT已设置,将不再对SS_LEFT进行判断。

===========================================
 赠人以言,重于珠玉,伤人以言,重于剑戟。——孙子
 CSDN助手 签名走马灯
折腾_苏州 2006-06-27
  • 打赏
  • 举报
回复
WINUSER.H
#define SS_LEFT 0x00000000L
#define SS_RIGHT 0x00000002L

SS_RIGHT == SS_LEFT | SS_RIGHT

a la suo?
xazl 2006-06-27
  • 打赏
  • 举报
回复
F11 跟进去看看。

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧