onsize函数

chuengchuenghq 2009-09-16 04:56:40
IDD_HELLO_DLG DIALOGEX 0, 0, 386, 226
STYLE DS_SETFONT | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP |
WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
EXSTYLE WS_EX_OVERLAPPEDWINDOW
CAPTION "Hello World"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
DEFPUSHBUTTON "OK",IDOK,329,204,50,14
LTEXT "Ser:",IDC_NAME,7,18,347,24
LTEXT "Des:",IDC_SERVICE_DESCRIPTION,7,42,39,17
LTEXT "Static",IDC_SORT,7,59,372,145,WS_BORDER,
WS_EX_CLIENTEDGE
END

上面是对话框,我想知道怎么写onsize函数比较好,本来想用ONSIZE的长和宽与以前的比,然后设定位置,后来发现movewindow的参数都是int,所以不行
清问应该怎么写好?
...全文
439 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
王一田 2011-03-17
  • 打赏
  • 举报
回复
哦,确实有溢出的可能呵,可以判断下width,height是否为0吧
王一田 2011-03-17
  • 打赏
  • 举报
回复
width =(int)400/386* width;
height =(int)300/226* height;
没看出哪里会溢出呀,譬如:width=(int)400/width*width
OMG,你们是来灌水的么??

[Quote=引用 14 楼 chuengchuenghq 的回复:]

引用 13 楼 feiyangdn 的回复:
引用 12 楼 chuengchuenghq 的回复:
IDD_HELLO_DLG DIALOGEX 0, 0, 386, 226
上面是原始大小
假设现在大小 400,300
我想把里面控件大小和顶点坐标按照400/386,300/226的比率变化,因为Movewindow的参数都是整形,所以不行
大家明白没

我晕,这不简单吗,转……
[/Quote]
yayafu 2009-09-17
  • 打赏
  • 举报
回复
不可能溢出,溢出了就说明你计算程序是错的
feiyangdn 2009-09-17
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 feiyangdn 的回复:]
引用 12 楼 chuengchuenghq 的回复:
IDD_HELLO_DLG DIALOGEX 0, 0, 386, 226
上面是原始大小
假设现在大小 400,300
我想把里面控件大小和顶点坐标按照400/386,300/226的比率变化,因为Movewindow的参数都是整形,所以不行
大家明白没

我晕,这不简单吗,转换类型计算,懂?
假设原来控件大小width,height
现在大小
width =((double)400/386) * width;
height =((double)300/226) * height;

[/Quote]

你想一想,要是溢出了,说明你这个长度本来就不对了,要么设置不成功,要么溢出部分丢失这对设置都没有任何影响。
另外,对于你这个具体情况就不可能溢出,因为你这控件肯定小于对话框大小,溢出你肯定是算错了。
实在不行,还有用IF判断一下在不在有效范围内不行吗?
jameshooo 2009-09-17
  • 打赏
  • 举报
回复
没办法,只能四舍五入了
chuengchuenghq 2009-09-17
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 feiyangdn 的回复:]
引用 12 楼 chuengchuenghq 的回复:
IDD_HELLO_DLG DIALOGEX 0, 0, 386, 226
上面是原始大小
假设现在大小 400,300
我想把里面控件大小和顶点坐标按照400/386,300/226的比率变化,因为Movewindow的参数都是整形,所以不行
大家明白没

我晕,这不简单吗,转换类型计算,懂?
假设原来控件大小width,height
现在大小
width =((double)400/386) * width;
height =((double)300/226) * height;

[/Quote]
一个DOUBLE型参数传给原型为int的函数,溢出怎么办
feiyangdn 2009-09-17
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 chuengchuenghq 的回复:]
IDD_HELLO_DLG DIALOGEX 0, 0, 386, 226
上面是原始大小
假设现在大小 400,300
我想把里面控件大小和顶点坐标按照400/386,300/226的比率变化,因为Movewindow的参数都是整形,所以不行
大家明白没
[/Quote]
我晕,这不简单吗,转换类型计算,懂?
假设原来控件大小width,height
现在大小
width =((double)400/386) * width;
height =((double)300/226) * height;
chuengchuenghq 2009-09-17
  • 打赏
  • 举报
回复
IDD_HELLO_DLG DIALOGEX 0, 0, 386, 226
上面是原始大小
假设现在大小 400,300
我想把里面控件大小和顶点坐标按照400/386,300/226的比率变化,因为Movewindow的参数都是整形,所以不行
大家明白没
shen_wei 2009-09-16
  • 打赏
  • 举报
回复
用movewindow()应该就可以了
你的意思 不是很明确 不知道是想做什么事情
NET_SPY_SHI 2009-09-16
  • 打赏
  • 举报
回复
你先看看movewindow的参数,4个int分别是按照其父窗口的位置左顶点为(0,0)开始计算,
第一个是左边距离,第二个是顶边距离,后面两个是长度和高度;

使用onsize可以获取当前的长度和高度,根据需要运算窗口的顶点在父窗口上的位置,就可以得到4个int参数

如果是app窗口,其父窗口默认为屏幕!

如果没有设置父窗口,其父窗口也默认为屏幕!

wenqinwuhai 2009-09-16
  • 打赏
  • 举报
回复
MoveWindow 一切OK。
wu_qing_yun 2009-09-16
  • 打赏
  • 举报
回复
楼主的意思没描述清楚。

其实用MoveWindow(……)就能实现该功能啊,关int什么事了?
feiyangdn 2009-09-16
  • 打赏
  • 举报
回复
你这玩意儿是.rc文件里面拷贝出来的吧
“movewindow的参数都是int,所以不行”什么意思啊?
yayafu 2009-09-16
  • 打赏
  • 举报
回复
就用windowmove啊,用int很好啊,继续安静吧
youyifang 2009-09-16
  • 打赏
  • 举报
回复
保存以前的位置和大小,然后按照你的需求计算新的大小和位置,调用movewindow函数设置窗口.
whatabig 2009-09-16
  • 打赏
  • 举报
回复
The GetDialogBaseUnits function retrieves the system's dialog base units, which are the average width and height of characters in the system font. For dialog boxes that use the system font, you can use these values to convert between dialog template units, as specified in dialog box templates, and pixels. For dialog boxes that do not use the system font, the conversion from dialog template units to pixels depends on the font used by the dialog box.

For either type of dialog box, it is easier to use the MapDialogRect function to perform the conversion. MapDialogRect takes the font into account and correctly converts a rectangle from dialog template units into pixels.
healer_kx 2009-09-16
  • 打赏
  • 举报
回复
什么意思? 比例? 这只能在Code里面写逻辑,又不是CSS。
yuhudie203 2009-09-16
  • 打赏
  • 举报
回复
把问题描述清楚~~
WuXinyang 2009-09-16
  • 打赏
  • 举报
回复
没怎么看明白LZ的意思

15,979

社区成员

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

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