关于VC对话框编辑器和屏幕显示:对话框编辑器的位置值和MoveWindow的参数有什么关系?
比如说左上角控件的位置为7,7,这是默认的位置,在MoveWindow时也使用7,7,然而窗口被移动到新位置,而不是预期的原位置。我在一台使用大字体的计算机上将所有值乘以2,7*2,则符合预期效果(未必是真正符合),但在使用小字体的计算机上乘2以后明显比原始位置大。
由于编辑器的限制,对于重叠的控件,只能先分开放置,然后在运行时移动到指定位置。请大家帮忙解决一下。
问题点数:20、回复次数:11Top
1 楼silver(Bai)回复于 2000-12-25 14:41:00 得分 0
MoveWindow参数使用的坐标系是不是客户区坐标系,你可能先需要GetClientRect得到客户区窗口的偏移量计算出实际的x,y值Top
2 楼ddddh(叶君临)回复于 2000-12-25 14:46:00 得分 0
ClientToScreen?Top
3 楼jiujiejushi(九戒居士)回复于 2000-12-25 14:56:00 得分 0
MoveWindow用的就是客户区坐标系。Top
4 楼foenix(foenix)回复于 2000-12-25 15:39:00 得分 0
MoveWindow在移动顶层窗口时使用桌面坐标,子窗口用父窗口的客户区坐标
MoveWindow的单位是像素Top
5 楼jiujiejushi(九戒居士)回复于 2000-12-26 16:40:00 得分 0
?Top
6 楼wistaria(听风听雨)回复于 2000-12-26 16:50:00 得分 0
屏幕坐标和客户区坐标是不同的,你可能需要转换一下
ScreenToClient
ClientToScreenTop
7 楼jiujiejushi(九戒居士)回复于 2000-12-28 11:09:00 得分 0
不需要转换.子窗口MoveWindow用的是客户区坐标系.
默认的控件边界是7,但是用7作MoveWindow的参数则明显边界比编辑对话框时看到的小.Top
8 楼The_east_key(东方一键)回复于 2000-12-28 17:03:00 得分 0
请到http://www.etechbase.net/advsearch.php,将你这个问题输入到检索框,然后选择准确匹配查询,应该可以帮助你解决这个问题的。Top
9 楼newx(Royale with Cheese)回复于 2000-12-29 23:13:00 得分 20
问题在于Dialog/Window使用不同的坐标系单位它们间的转换要用MapDialogRect(),你可以查阅MSDN。
Top
10 楼jiujiejushi(九戒居士)回复于 2001-01-02 10:14:00 得分 0
newx你怎么才来?是新用户吗?
谢谢!Top
11 楼newx(Royale with Cheese)回复于 2001-01-02 15:46:00 得分 0
我是新用户,但是老VC了:)
希望以后多关注这里,大家也都关注我,谢谢。Top




