在MFC中的OnInitDialog中写下如下语句:this->MoveWindow(0,0,400,300)为什么不能的移动到屏幕左上角?

但是改成this->MoveWindow(1,0,400,300)或this->MoveWindow(0,1,400,300)就可以了,为什么?同时有些概念不太清楚,在此... 但是改成this->MoveWindow(1,0,400,300)或this->MoveWindow(0,1,400,300)就可以了,为什么?
同时有些概念不太清楚,在此处::MoveWindow(0,1,400,300,1)可以产生一样的效果,请问什么时候要用::MoveWindow呢
展开
 我来答
bhtzu
推荐于2018-01-24 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4145万
展开全部

你这几个产生效果的最终都是调用的都是对话框类的MoveWindow,替换成以下语句效果一样:

MoveWindow(0,1,400,300);

0,0点的问题,在正常情况下都不会发生,除非你有多屏设置或者其它影响屏幕坐标的特殊设置,这个应该不是程序问题。

加作用于::符号,本身就是有问题的,系统会容错纠正为上述语句使用。调用

::MoveWindow

是表明要使用API函数,api函数一共6个参数,第一个,是要移动的窗口句柄,而你的调用,显然不符合要求。

追问
谢谢您,对,我敲上去的时候把代码搞错了,::MoveWindow(m_hWnd,0,1,400,300,1).

这一块我特别不明白,就是什么时候应该调用API函数啊,既然和类里面实现的功能都是一样的
追答
本来功能就是一样的。
MFC,就是对SDK编程的一个封装,大部分MFC函数最终都是调用的API函数,功能上不会有什么区别。
只是通过封装,让使用更方便,代码更少,更安全些罢了。
380526481
2018-01-24 · TA获得超过773个赞
知道小有建树答主
回答量:188
采纳率:100%
帮助的人:67.8万
展开全部
我今天正好遇到和你一样的问题,在窗口初始化时不管使用MoveWindow还是SetWindowPos都无法将窗口移动到屏幕左上角,即(0,0)的位置,这似乎是微软故意的,我也想不明白微软这么做的目的。我现在使用的方法是设置一个定时器,延迟一个很短的时间来设置窗口的位置,只要不在OnInitDialog函数里移动窗口位置就可以,在定时器响应一次时设置窗口位置,响应一次后就删除定时器。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式