发现了一个坑爹的现象。。

miliggate 2012-09-24 06:13:37
首先你有一个CButton
CButton* but=new CButton;
but->Create(NULL,NULL,CRect(200000,200000,200400,200400),this,1000);
but->ShowWindow(SW_SHOW);
CRect rect;
but->GetClientRect(&rect);
ScreenToClient(&rect);
这个时候会出现一个很坑爹的现象,
rect的left,top值都变成了16位的int的上限,
bottom还有right倒是保持着比例。
这是为什么,难道就不能给窗口分配大于16位int上限的值吗?
...全文
144 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
miliggate 2012-09-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

不过滚动条是可以突破这个数字的
[/Quote]
滚动条的最大和最小的差不能大于32736,
hotpos 2012-09-24
  • 打赏
  • 举报
回复
不过滚动条是可以突破这个数字的
hotpos 2012-09-24
  • 打赏
  • 举报
回复
Windows消息系统中 坐标消息用一个32位存储 x,y坐标.
比如 WM_MOVE http://msdn.microsoft.com/en-us/library/windows/desktop/ms632631(v=vs.85).aspx

x 和 y的取值方式如下

x = (int)(short) LOWORD(lParam);
y = (int)(short) HIWORD(lParam);


所以....
昨夜无风 2012-09-24
  • 打赏
  • 举报
回复
对楼主的问题感兴趣
miliggate 2012-09-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

你用错了..

but->GetClientRect(&rect);
获取的是相对于button左上角的坐标 结果肯定是 CRect(0, 0, 400, 400);

ScreenToClient(&rect);
是把屏幕坐标转换为相对于 当前窗口左上角的坐标.
视窗口位置不同值不同.

假如当前窗口在 100, 100 的位置.
结果就是 CRect(-1……
[/Quote]
sorry,不小心写错了,是GetWindowRect。。
还有,我试过的,我分配了600个左右的按钮,用网格保证按钮不重叠
但是分配到500个左右的时候按钮窗口就出现了重叠,而那个按钮就是在32749左右的时候出错
hotpos 2012-09-24
  • 打赏
  • 举报
回复
你用错了..

but->GetClientRect(&rect);
获取的是相对于button左上角的坐标 结果肯定是 CRect(0, 0, 400, 400);

ScreenToClient(&rect);
是把屏幕坐标转换为相对于 当前窗口左上角的坐标.
视窗口位置不同值不同.

假如当前窗口在 100, 100 的位置.
结果就是 CRect(-100, -100, 300, 300);
基本上肯定是负的.

你create的时候填 0 也会是 负的.
不是溢出的问题.
miliggate 2012-09-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

楼主的显示器多大?惊讶中...
[/Quote]
只是画在父窗口的DC里的
邓学彬 2012-09-24
  • 打赏
  • 举报
回复
楼主的显示器多大?惊讶中...






16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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