vs2010 如何设置MFC程序窗口大小

在vs2010中建立的MFC单文档程序,无论是在CMainFrame里的PreCreateWindow函数中对cs进行修改,还是使用SetWindowPos或MoveWi... 在vs2010中建立的MFC单文档程序,无论是在CMainFrame里的PreCreateWindow函数中对cs进行修改,还是使用SetWindowPos或MoveWindow函数,都无法实现对窗口的修改。
现在的状态是,如果给窗口加上可以调节大小这一style,那么窗口会自动保留上次更改后的大小,如果不加可调,那窗口就会按系统所固定的一个大小进行显示,根本无视我的所有设置,怎么办?
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWndEx::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
cs.cx=500; //
cs.cy=500; //这两行完全无视
cs.style = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU ;
return TRUE;
}
尝试使用MoveWindow(50,50,500,500);与SetWindowPos(NULL, 0, 0, 500, 500, SWP_NOZORDER | SWP_NOMOVE); 却都没有任何效果。

但应该不是vs编译的问题,因为之前用vs2008写好的一个MFC程序在2010的环境下编译后,能正常修改窗口大小,所以我感觉应该还是2010在MFC工程上的改动,希望有知道的人能回答一下。谢谢。
展开
 我来答
freelaxy
推荐于2016-05-29 · TA获得超过253个赞
知道小有建树答主
回答量:373
采纳率:0%
帮助的人:332万
展开全部
程序在注册表里保留了FRAME上次的状态,包括大小位置以及各工具类窗口的布局等.

解决方法有二,其中第一个简单, 第二更稳妥:

1.)在InitInstance(..)调用CleanState(_T("WorkSpace"));

2.)让MainFrame按它的习惯布局完了再调整大小, 在此之前让MainFrame不显示.关键点: WM_CREATE, WM_WINDOWPOSCHANGING

你可能还会发现FRAME有时候会闪一下, 看着不舒服, 用第二个方法同样管用.
intehel
2010-07-04 · TA获得超过1292个赞
知道大有可为答主
回答量:1601
采纳率:100%
帮助的人:1745万
展开全部
CWnd::OnGetMinMaxInfo

或者设置view的大小后再CFrameWnd::RecalcLayout
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
夕烟溪独
2010-07-04 · 超过11用户采纳过TA的回答
知道答主
回答量:52
采纳率:0%
帮助的人:0
展开全部
加分告诉你
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式