BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
  if(!CFrameWnd::PreCreateWindow(cs))
  {
  return FALSE;
  }  cs.style &= ~WS_OVERLAPPED
  cs.cy = 300;
  cs.cx = 100;
  return TRUE;
}
在vs2010中,为什么运行时不会按要求改变窗口大小呢?而且运行的程序我手动拖窗口右下角改变大小后,再次启动时就是改变后的大小,为什么不是按我的CREATESTRUCT变量cs.cx,cs.cy改变大小呢?

解决方案 »

  1.   

    你是用向导生成的吧
    窗口大小框架自动保存在注册表里了
    我记得向导里有一步应该是设置这个的
    好像代码里也可以找到
    不是写注册表就是系统配置的一个ini文件
      

  2.   

    MoveWindow 不是还要设定窗口显示的位置吗?
      

  3.   

    把LoadStdProfileSettings();去掉。
    不过建议你还是在ShowWindow之前MoveWindow。
      

  4.   

    Quote: 引用 11 楼 ljthdu 的回复:

    引用 10 楼 Li_Carey 的回复:MoveWindow
    MoveWindow 不是还要设定窗口显示的位置吗?[/quote
    带参数RECT啊.....
      

  5.   

    cs.style &= ~WS_OVERLAPPED 修改为
    cs.style := ~WS_MAXIMIZE
    试一下
      

  6.   

    另外MoveWindow与SetWindowPos都可以胜任,但要在窗口初始化后显示前调用这个函数
      

  7.   

    UpdateData( TRUE );
    if( m_BCheckInSet )
    {
    CWnd::SetWindowPos(NULL,0,0,piWidth,piHeight ,SWP_NOZORDER|SWP_NOMOVE);
    }
    else
    CWnd::SetWindowPos(NULL,0,0,piWidth,piHeight - 40,SWP_NOZORDER|SWP_NOMOVE);我这是按 Check 控件值(m_BCheckInSet)来改变窗口大小的例子.