谈谈CListCtrl 扩展风格设置方法-SetExtendedStyle和ModifyStyleEx 比较[通俗易懂]

谈谈CListCtrl 扩展风格设置方法-SetExtendedStyle和ModifyStyleEx 比较[通俗易懂]谈谈CListCtrl扩展风格设置方法————————————–SetExtendedStyle和ModifyStyleEx比较 对于初学者来说,当他需要设定listctrl的扩展风格时,常常想到用ModifyStyleEx来设定,代码如下:ModifyStyleEx(0,LVS_EX_GRIDLINES)这是不正确的,正

大家好,又见面了,我是你们的朋友全栈君。

谈谈CListCtrl 扩展风格设置方法

————————————–SetExtendedStyle和ModifyStyleEx 比较

 

对于初学者来说,当他需要设定listctrl的扩展风格时,常常想到用ModifyStyleEx 来设定,代码如下:

ModifyStyleEx(0,LVS_EX_GRIDLINES)

这是不正确的,正确的设定应该是:

SetExtendedStyle(LVS_EX_GRIDLINES)

那么,ModifyStyleEx和SetExtendedStyle区别在哪里?

实际上,ModifyStyleEx只是对窗口的GWL_EXSTYLE属性作设定,也即只是对窗口的常规扩展属性作设定,这种属性以WS_EX_作为前缀,比如WS_EX_CLIENTEDGE,

在listctrl 控件中,它的扩展风格的值并没有存入窗口的GWL_EXSTYLE属性值中,而是通过发送LVM_SETEXTENDLISTVIEWSTYLE消息给listctrl控件来实现,因此它就不能通过ModifyStyleEx做设定。

比较起ModifyStyle,该API即可设定普通窗口的风格,比如WS_CHILD,WS_VISIBLE。也可.设定控件的普通风格,对listctrl,就有LVS_REPORT,LVS_OWNERDRAWFIXED等等,这就是为什么在创建子控件时我们可以把WS_CHILD,WS_VISIBLE结合在一起传递的控件的create函数的原因:

m_list.Create(WS_CHILD|WS_VISIBLE|LVS_REPORT,CRect(0,0,100,100),this,0);

但对于扩展风格却不能这么做:

m_list.CreateEx(WS_EX_CLIENTEDGE|LVS_EX_GRIDLINES,"LISTCTRL","",WS_CHILD|WS_VISIBLE,CRect(0,0,100,100),this,0);

 

为什么微软没有把控件的扩展风格储存在GWL_EXSTYLE属性中,因为这个属性值为32位长的DWORD型,窗口的常规扩展属性即以WS_EX_作为前缀的属性,已经把它占完了,所以对listctrl 的扩展风格,微软只能把它放在其他地方了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/161690.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 浏览器编译代码_ie浏览器html编辑器

    浏览器编译代码_ie浏览器html编辑器20个最强的基于浏览器的在线代码编辑器1.CompilrCompilr是一个在线编译器和在线IDE。可以用它来开发PHP,C,C++,Ruby。在浏览器中编译Java,C#和VB.net等。马上使用2.Dabblet跨浏览器兼容,对前端攻城师们来说是一个不得不处理的问题。为了在浏览器间呈现统一的显示效果,攻城师们不仅要为每个游览器添加CSS前缀,甚至还…

  • jiaowubuaa_acm题

    jiaowubuaa_acm题每一头牛的愿望就是变成一头最受欢迎的牛。现在有 N 头牛,编号从 1 到 N,给你 M 对整数 (A,B),表示牛 A 认为牛 B 受欢迎。这种关系是具有传递性的,如果 A 认为 B 受欢迎,B 认为 C 受欢迎,那么牛 A 也认为牛 C 受欢迎。你的任务是求出有多少头牛被除自己之外的所有牛认为是受欢迎的。输入格式第一行两个数 N,M;接下来 M 行,每行两个数 A,B,意思是 A 认为 B 是受欢迎的(给出的信息有可能重复,即有可能出现多个 A,B)。输出格式输出被除自己之外的所有牛认为是

  • Turbo码应用

    Turbo码应用

  • 关于HTTP请求出现 405状态码 not allowed的解决办法

    关于HTTP请求出现 405状态码 not allowed的解决办法

    2021年10月12日
  • Java 数组声明

    Java 数组声明首先必须声明数组变量,才能在程序中用数组。下面是数组变量的语法:dataType[]arrayRefVar;//首选的方法dataTypearrayRefVar[];//效果相同但不是首选方法Java语言试用new操作符来创建数组dataType[]arrayRefVar=newdataType[arraySize];//定义int[]nums;//创建nums=newint[10];//变量类型变量名字=变量值int[]nums=new

  • 轻量级kotlin + Mvp + Rxjava + Retrofit框架

    轻量级kotlin + Mvp + Rxjava + Retrofit框架轻量级kotlin + Mvp + Rxjava + Retrofit框架

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号