listbox控件没有ScaleMode属性 如何保持与form的相同

sxqvb 2018-11-18 02:54:11
我的form的ScaleMode属性是vbPixels, 想要与listbox控件保持想同,需要作什么样的换算?
...全文
229 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
良朋 2018-12-20
  • 打赏
  • 举报
回复
有没类似于DOCK的属性?
舉杯邀明月 2018-11-20
  • 打赏
  • 举报
回复
引用 3 楼 sxqvb 的回复:
我是想用SendMessage(List1.hwnd, LB_SETTABSTOPS, 3&,宽度) 这个来设设置List1中一个tab健的宽度,但是不知道这个度度是以什么为单位的

API中用的“度量单位”,跟你在VB6窗体或某控件的ScaleMode无关的吧!
我“试验”了一下,也不清楚它的那个“度量单位”是什么,大概换算关系是“1单位 = 1.5像素”。
比如,设置第1个tabstop位置为“60”,那么它会定位于“90像素”处。

并且,你说的那个“宽度”,应该是“不正确”的;比较正确的说法,是“TabStop位置表”。
你要设置多个(似乎那个“表”必须从第一个tab位开始),
 那么你要把相应的数据放到一个“Long数组”中、每个值对应其“绝对位置”,
 并且调用API时,lParam传递的是“首址值”,也就是“第1个元素的内存地址”。
因此要注意你的API声明格式、正确地传递“lParam”。
脆皮大雪糕 2018-11-20
  • 打赏
  • 举报
回复
listbox只有 left 、top 、width、 heigh和scalemode有关,这四个属性在窗体设计界面只要窗体的scalemode改变了对应的数值也自动改变了。如果窗体的scalemode一旦确定为vbpixels 这四个属性你就按像素定义即可。
只有容器 比如 form、picturebox 有 scalemode属性,这个属性对容器内的定位有效,普通控件看所处容器的scalemode属性来确定坐标尺寸的数值含义。
sxqvb 2018-11-20
  • 打赏
  • 举报
回复
我是想用SendMessage(List1.hwnd, LB_SETTABSTOPS, 3&,宽度) 这个来设设置List1中一个tab健的宽度,但是不知道这个度度是以什么为单位的
sxqvb 2018-11-20
  • 打赏
  • 举报
回复
窗体的scalemode是Pixels, 这个listbox在窗体中,但是我在listbox的MouseMove事件中观察x和y的值,和窗体中的MouseMove事件中的x和y的值作对比,发现listbox的比窗体的大很多,大约是14.5倍的样子

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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