在WM_SIZE中改变窗口大小

starwing83 2007-06-24 08:05:11
不能使用SetWIndowRect,因为这个函数也会发送WM_SIZE消息。是不是改变了lparam的值,然后返回个什么值呢?还有没有可以不发送WM_SIZE消息可以改变窗口大小的函数?
因为是在WM_SIZE里控制,如果函数改变窗口大小导致发送了WM_SIZE消息,就会造成循环引用,怎么办?
...全文
823 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
starwing83 2007-06-25
  • 打赏
  • 举报
回复
谢谢各位,用WM_SIZING解决了,结帐给分,呵呵~
Anikan 2007-06-24
  • 打赏
  • 举报
回复
你想做什么?WM_SIZE是当窗口的大小变化过程结束后发送的。难道你想把窗口的大小再变回去?
tufaqing 2007-06-24
  • 打赏
  • 举报
回复
用WM_SIZING
菜牛 2007-06-24
  • 打赏
  • 举报
回复
那你为什么要在WM_SIZE里改变窗口大小?明知道是个死循环。
snookermx 2007-06-24
  • 打赏
  • 举报
回复
你这做法有点特殊哦,在大小改变时再去改变,不过有实际价值。
MoveWindow 和 SetWindowPos 都可以改变窗口大小,不过发不发这消息没有实验过。你测试下了。
Anikan 2007-06-24
  • 打赏
  • 举报
回复
LRESULT CPrimeNumDlg::OnSizing(WPARAM wp,LPARAM lp){
RECT* p_rect = (RECT*)lp;
//在这里修改lp的值。比如
p_rect->left = 100;
p_rect->right = 200;
p_rect->top = 10;
p_rect->bottom = 400;
//就可以了。具体的你自己去写吧,不明白的看看MSDN 对wp,和lp的解释。

return FALSE;
}
htz92127 2007-06-24
  • 打赏
  • 举报
回复
用static变量写个if条件就不用死循环了啊!变一次就修改static的值,然后用else改回来,你试试
starwing83 2007-06-24
  • 打赏
  • 举报
回复
是这样的,我希望用户拖动边框改变大小的时候,大小是以指定的比例改变的,比如,如果把高度拖大了20像素,那么也把宽度增加相应的数量。这样的话,只好在拖动的时候动态改变大小~
不用WM_SIZE的话,WM_SIZING怎么样呢?还是一样的问题呀
MoveWindow和SetWindowRect还有SetWindowPos都试过了,都会造成死循环,然后窗体就不停缩小,最后消失不见了……只要在WM_SIZE或者WM_SIZING里引用有可能发送这两个消息的函数都会造成这种后果……

16,467

社区成员

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

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

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