在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呢 展开
同时有些概念不太清楚,在此处::MoveWindow(0,1,400,300,1)可以产生一样的效果,请问什么时候要用::MoveWindow呢 展开
2个回答
展开全部
你这几个产生效果的最终都是调用的都是对话框类的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函数,功能上不会有什么区别。
只是通过封装,让使用更方便,代码更少,更安全些罢了。
展开全部
我今天正好遇到和你一样的问题,在窗口初始化时不管使用MoveWindow还是SetWindowPos都无法将窗口移动到屏幕左上角,即(0,0)的位置,这似乎是微软故意的,我也想不明白微软这么做的目的。我现在使用的方法是设置一个定时器,延迟一个很短的时间来设置窗口的位置,只要不在OnInitDialog函数里移动窗口位置就可以,在定时器响应一次时设置窗口位置,响应一次后就删除定时器。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询