MoveWindow的成功调用有什么条件?总是不能移动窗口?

FPP 2006-03-01 04:49:18
我用mfc创建一个基于对话框的应用程序,全部默认属性。不做其他任何修改,仅仅在OnInitDialog()函数里面加了一句: MoveWindow(0,0,400,300),然后运行,发现对话框大小变了,可是对话框的位置仍在正中间,无论怎么改Movewindow的参数,位置都没有变化。

后来,我把对话框资源的MoreStyle属性里面的“Center”勾上,就可以移动了,反之,去掉就不能成功。

请问,这是何缘故?

谢谢了!
...全文
542 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
FPP 2006-03-03
  • 打赏
  • 举报
回复
另外,如果我把OnInitDialog里面的MoveWindow换成SetWindowPos,好像就不会受后面函数的影响,直接就能看到移动后的效果了。请问,这个又有什么区别?
FPP 2006-03-03
  • 打赏
  • 举报
回复
谢谢各位!正如yang79tao() 所说,我做过测试,发现的确MoveWindow生效过,但是被后来的函数给重新绘制了,所以表面上看就像没有移动过窗口。所以直接把MoveWindow放在OnInitDialog里面是不合适的。

我想再问一下,哪里可以看到OnInitDialog启动对话框过程中调用了哪些函数?谢谢!

syy64 2006-03-02
  • 打赏
  • 举报
回复
应该放在OnSize函数里。
youngwolf 2006-03-01
  • 打赏
  • 举报
回复
OnInitDialog时,窗口未显示,调用MoveWindow后,窗口肯定会被移动的,但看不到移动的效果,因为消息循环中的WM_PAINT消息(MoveWindow产生的)还未来得及被提取和执行,对于对话框,在第一次显示的时候,系统还会自动调用一次MoveWindow或CenterWindow,所以第一次的MoveWindow效果就在还没有被显现的情况下被第二次权覆盖了。
一个傻冒 2006-03-01
  • 打赏
  • 举报
回复
属性Center被选中,那对话框的默认显示位置就是屏幕正中.

15,981

社区成员

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

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