求问个MFC批量生成控件的问题

sirian_ye 2011-08-19 06:35:59
最近自己画MFC遇到个很诡异的问题。
批量动态生成几百上千个CSTATIC然后并行排列在一个DIALOG里面。
生成,显示都没有问题,但是显示到中间的时候剩下的会突然没有。
大概在第249个左右的时候会突然显示最后一个,然后中间就都缺失了。


求问各位大侠这个问题是怎么形成的呀。。。。
...全文
130 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sirian_ye 2011-08-23
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 zhupf 的回复:]

引用 9 楼 gold_water 的回复:
跟踪调试一下,肯定可以找出问题来。应该不是越界方面问题


我也觉得是,如果是越界,那将是操作系统的Bug,建议提交给微软。
[/Quote]

暂时放弃了那个方案,做了个输入框,感谢大家回复了
不说害怕 2011-08-22
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 gold_water 的回复:]
跟踪调试一下,肯定可以找出问题来。应该不是越界方面问题
[/Quote]

我也觉得是,如果是越界,那将是操作系统的Bug,建议提交给微软。
不说害怕 2011-08-20
  • 打赏
  • 举报
回复
这个问题好诡异啊.
zhouzhipen 2011-08-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sirian_ye 的回复:]
我尝试了设个断点看变量,但是没有看到有问题的INT呀,很奇怪的呢
[/Quote]
我是说系统在内部处理的时候会把4字节的数字截成2字节数。比如,你传递的是RECT(1000000,1000000,100000,1000000),但系统只用了这些数字的低两位。你从外面当然看不出来。
sirian_ye 2011-08-20
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 gold_water 的回复:]

跟踪调试一下,肯定可以找出问题来。应该不是越界方面问题
[/Quote]

有个说法是SCROLLBAR有个3W多限制,但是那个症状和我的不一样。
我追了,但是没有看到问题。
所有INT都转成LONG了,而且也试过改变CSTATIC大小,也是在差不多的位置出同样的问题。
纠结了呀,求那位大侠救命。。。
gold_water 2011-08-20
  • 打赏
  • 举报
回复
跟踪调试一下,肯定可以找出问题来。应该不是越界方面问题
sirian_ye 2011-08-19
  • 打赏
  • 举报
回复
我尝试了设个断点看变量,但是没有看到有问题的INT呀,很奇怪的呢
sirian_ye 2011-08-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhouzhipen 的回复:]

不用猜了,16位INT的原因,窗口座标在系统内部处理时转成了16位INT所以你的数据丢失了。
这样所以大于INT16最大值的控件全部重叠了
[/Quote]

这么多应该是这样了
多谢大神提点了,请问下解决方法是什么呀?
zhouzhipen 2011-08-19
  • 打赏
  • 举报
回复
不用猜了,16位INT的原因,窗口座标在系统内部处理时转成了16位INT所以你的数据丢失了。
这样所以大于INT16最大值的控件全部重叠了
sirian_ye 2011-08-19
  • 打赏
  • 举报
回复
略微有点怀疑的是出问题的部分位置INT是32380左右,开始想是INT是16位的,但是定义了LONG也不行。。。
sirian_ye 2011-08-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 linghu9990 的回复:]

是不是重叠了
[/Quote]

位置的CRECT是在循环里面自增的,应该不会是重叠,也输出过位置量看,一直自增是正确的。。。。
towriting 2011-08-19
  • 打赏
  • 举报
回复
是不是重叠了

15,979

社区成员

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

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